• このページを del.icio.us へ追加
  • このページを含むはてなブックマーク
  • このページをはてなブックマークへ追加

その他に関する規約

fileやfopenでURLを開くときは、エラーを検知できないことを知っておくべき。

正しくエラーハンドリングする必要がある場合は、fsock関数などを利用する。

例) fileを使ったコード

        $lines = file('URL');
        

例) fopenを使ったコード

        #読み込み
        $fp = fopen($data_file, "r");
        $buffer = '';
        while (!feof ($fp)) {
            $buffer.= fgets($fp, 4096);
        }
        fclose($fp) ;
        
        #書き込み
        $fp = fopen($data_file, "w+");

        #ファイルロック
        flock ($fp, LOCK_EX);

        #ファイル書き込み
        $articles = implode("\n", $articles) ;
        fputs ($fp, $article);

        #ファイルロック終了
        flock ($fp, LOCK_UN);

        #ファイルクローズ
        fclose ($fp);
        

例) fsockを使ったコード

        $fp = @fsockopen("ssl://".$host, 443, $errno, $errstr, 30);
        if (!$fp) {
            return false;
        }

        $out = "GET ".$url ."HTTP/1.1 \r\n";
        $out.= "Host: $host\r\n\r\n";
        fwrite($fp, $out);
        $data = '';
        while(!feof($fp)){
            $data.=fgets($fp, 4096);
        }
        fclose($fp);
        

正規表現関連はereg関数ではなくpreg関数を使うこと。

NG
        if(ereg("^[!-~]+$", $data)){
            echo "半角英数です。";
        }
        
OK
        if(preg_match("/^[!-~]+$/", $data)){
            echo "半角英数です。";
        }
        

モジュール/クラスの作成にはスターターのようなヘルパーを利用する。

設定内容はソースコードに記述せず、設定ファイルとして外に出すこと。

NG
        $param = array('host' => '*****.jp',
                    'username'=> 'sample',
                    'password'=> 'password',
                      'dbname'=> 'DB_SAMPLE',
                      );
        
OK
        #ZendFrameworkでDBに接続する場合
        $config = $this->get_config('DB');
        $params = array('host' => $config->host,
                     'username'=> $config->username,
                     'password'=> $config->password,
                       'dbname'=> $config->dbname,
                      );

        #コンフィグファイル(設定ファイル)に記述
        [DB]
        host     = *****.jp
        username = sample
        password = password
        dbname   = DB_SAMPLE
        

巧みなコードは短くてもメソッドにして、わかりやすい名前をつける。