<< 週間カレンダーについて 質問一覧 php メタ検索エンジンのページング処... >>

  • 0P
式を演算子を使ってまとめたい。

  1.     //入力された西暦のフォルダの有無を調べ、無ければつくる。
  2.  
  3.   if ( !is_dir ( ROOTPATH . "/$year" ) ) {
  4.     mkdir ( ROOTPATH . "/$yearr" ) ;
  5.   }
  6.   
  7.   //日時のフォルダ調べ、なければ作る
  8.  
  9.   if ( !is_dir ( ROOTPATH . "/$year/$date" ) ) {
  10.     mkdir ( ROOTPATH . "/$year/$date" ) ;
  11.   }

上記のように、フォルダの有無を調べ、その有無によって、さらに、その中にフォルダを作るような
そんなコードを書きました。
ROOTPATHは、固定のパスです。

ボスに見せたところ、演算子を使ってもっとかっこいいコードを書け!!
さらに、うまくいかないときに、エラーを返すようにしろ!

と言われてしまいました。

いろいろ考えてみたのですが、
まず、演算子で上手にまとめる方法がよくわかりません。

わかるかた、おしえてください。
よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

Q式を演算子を使ってまとめたい。 php_baby  [03月09日 11時58分] 
┣Re:式を演算子を使ってまとめたい。 magicflute2  [03月09日 12時53分] 
┃┗Re:Re:式を演算子を使ってまとめたい。 php_baby  [03月09日 13時44分] 
┃  ┣Re:Re:Re:式を演算子を使ってまとめたい。 shimix  [03月09日 13時53分] 
┃  ┗Re:Re:Re:式を演算子を使ってまとめたい。 magicflute2  [03月09日 16時00分] 
┣Re:式を演算子を使ってまとめたい。 kaitau  [03月09日 13時53分] 
┣Re:式を演算子を使ってまとめたい。 signal  [03月10日 23時28分] 
┗Re:式を演算子を使ってまとめたい。 php_baby  [03月11日 10時24分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:式を演算子を使ってまとめたい。

・関数化
・三項演算子
mkdir recursiveパラメータをTRUE
要はmkdirのラッパー関数を作るという事。
うまくまとめると、4行以内で書ける。

Re:Re:式を演算子を使ってまとめたい。

すみません。

mkdirのrecursiveパラメータをTRUEというのは

mkdir(ROOT/$year/$date , TRUE);
と書けば、$yearフォルダが、特になくても階層ごと$dateフォルダが作られると判断したのですが、
うまくできませんでした、
どこが間違っているのでしょうか?

また、ラッパー関数というのがわからないので教えてもらえますか?

よろしくおねがいします。

ちなみに、phpのバージョンは5.2.6です。

Re:Re:Re:式を演算子を使ってまとめたい。

>mkdir(ROOT/$year/$date , TRUE);

recursiveは第3引数なんだが・・。せめて関数の引数くらいはマニュアルで確認してから取りかかって欲しい。

  http://www.php.net/manual/ja/function.mkdir.php

三項演算子はこのあたり・・

  http://www.php.net/manual/ja/language.operators.comparison.php

Re:Re:Re:式を演算子を使ってまとめたい。

> また、ラッパー関数というのがわからないので教えてもらえますか?
私の解釈は以下の通りです。
http://e-words.jp/w/E383A9E38383E38391E383BC.html

今回ケースだと、以下の様に、機能拡張・初期設定をした関数です。
標準関数を少しだけ、目的にあった形にします。
mkdir前にディレクトリ存在チェック
・エラー処理
・パーミッション デフォルト値の設定
・recursiveパラメータ デフォルト値の設定
  1. <?php
  2. /**
  3.  * PHP5なので、引数にデフォルト値を設定できます
  4.  * @param  $path      string
  5.  * @param  $mode      int
  6.  * @param  $recursive boolean
  7.  * @return boolean
  8.  */
  9. function wrapper_mkdir( $path$mode=0705$recursive=TRUE )

Re:式を演算子を使ってまとめたい。

> ボスに見せたところ、演算子を使ってもっとかっこいいコードを書け!!
> さらに、うまくいかないときに、エラーを返すようにしろ!

多分これは教育の意味を込めての事なんじゃないかな。

だとすると、自分で考えて解くか、わからない事はそのボスに
聞くべきだと思ったり。

趣味ならともかく、仕事なら、自分の理解度を上司に示して
伸ばしてもらうのも大事な事だと思いますが。
というか、私が上司だったら、ネットで調べただけの成果物で
「出来ました」といわれても、「コイツどこまでわかってるんだ?」ってなります。
まぁ、一般論では無いので、意見が分かれるところではありますが。

wikipediaに出てくるような単語の意味、とかならともかく、
ここをこうしろ、と言われて、わかってないのに「はぁ、わかりました」
って持ち帰られるのが一番危険なんですよね。

Re:式を演算子を使ってまとめたい。

  1. <?php
  2. try {
  3.   if (!is_dir(ROOTPATH."/{$year}") &&
  4.       !@mkdir(ROOTPATH."/{$year}")) {
  5.     throw new exception("/{$year} が作れない");
  6.   }
  7.   if (!is_dir(ROOTPATH."/{$year}/{$date}") &&
  8.       !@mkdir(ROOTPATH."/{$year}/{$date}")) {
  9.     throw new exception("/{$year}/{$date} が作れない");
  10.   }
  11. } catch (exception $e) {
  12.   print $e->getmessage();
  13.   print "のは全てボスの責任です";
  14. }
  15. ?>

Re:式を演算子を使ってまとめたい。

みなさま、いろいろとご教授いただきありがとうございました。
確かに、教育の意味も込めてのことだと思いました。

最終的に、まとめたので、
紹介します。

エラーについては、今回はfalseを返すのみになってます。

  1. if ( ( ( is_dir( ROOTPATH . "/$year" ) || mkdir ( ROOTPATH . "/$year" ) ) && ( is_dir( ROOTPATH . "/$year/$date" ) || mkdir ( ROOTPATH . "/$year/$date" ) ) ) ) {
  2. } else {
  3. return false;
  4. }
週間カレンダーについて 質問一覧 php メタ検索エンジンのページング処...