その他に関する規約
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


