PHPまとめ②:設定ファイルや関数ファイルを用意する
第13章-02
設定ファイルを作っていく。ここで設定した値はすべて他のファイルに反映される。これにより、後から修正ファイルが必要になった際は効率よく変更することが可能となる。今回は以下のような値を設定する。
//config.php
<?php
define('DSN','mysql:dbname=user;host=localhost;charset=utf8');
define('DB_USER','root');
define('DB_PASSWORD','');
define('SITE_URL','http://192.168.33.11:8000');//E_NOTICE以外のエラーをすべて出力
error_reporting(R_ALl & ~E_NOTICE);
//セッションの設定
session_set_cookie_param(1440,'/');
変数にはスコープといって、参照できる範囲に制限があった。これでは後に変更する可能性がある値が複数のファイルに書かれていた場合、修正が非常に難しくなる。define()を使って定数として定義しておくことにより、すべてのファイルで同じ値を参照できるようになる。例えば一度定義した「DSN」は文字列として扱うのではなく、echo DSN;という形でシングルクォーテーションなしで使用する。
error_reporting()では、エラーの出力をコントロールできる。開発時はすべてのエラーを出力し、公開時にはerror_reporting(0)としてエラーを出力しないといった設定が可能。
session_set_cookie_param()は第1引数がセッションの有効期限、第2引数が有効範囲となる。第2引数を「/」としておけば全範囲でセッションが有効になる。
次にhelperファイルを作成する。データベース関連はdb_helper.phpに、それ以外はextra_helper.phpに書いておく。
//db_helper.php
<?php
function get_db_connect(){
try{
$dsn=DSN;
$user=DB_USER;
$password=DB_PASSWORD;
$dbh=new PDO($dsn,$user,$password);
} catch(PDOException $e){
echo ($e->getMessage());
die();
}
$dbh->setAttribute(PDO::ATTR_ERRMODE,ERRMODE_EXCEPTION);
return $dbh;
}
// extra_helper.php
<?php
function html_escape($word){
return htmlspecialchars($word,ENT_QUOTE,'UTF-8');
}function get_post($key){
if(isset($_POST['key'])){
$var=trim($_POST['key']);
return $var;
}
}function check_word($word,$length){
if(mb_strlen($word)===0){
return false;
}elseif(mb_strlen($word)>$length){
return false;
}else{
return true;
}
}
今後必要な関数があれば順次追加していく。