読者です 読者をやめる 読者になる 読者になる

生涯未熟

プログラミングをちょこちょこと。

PHPフレームワーク「ちいたん」を読む その2

前回はcheetan.phpを読みましたので、今回はcheetan.phpで読み込んでいたboot.phpを読んでいきます。



boot.phpを読もう!

前回、cheetan.phpでrequire_onceしていたboot.phpの中身を見ていきます。

<?php
/*-----------------------------------------------------------------------------
cheetan is licensed under the MIT license.
copyright (c) 2006 cheetan all right reserved.
http://php.cheetan.net/
-----------------------------------------------------------------------------*/
  require_once LIBDIR . DIRECTORY_SEPARATOR . "object.php";
  require_once LIBDIR . DIRECTORY_SEPARATOR . "database.php";
  require_once LIBDIR . DIRECTORY_SEPARATOR . "sanitize.php";
  require_once LIBDIR . DIRECTORY_SEPARATOR . "validate.php";
  require_once LIBDIR . DIRECTORY_SEPARATOR . "controller.php";
  require_once LIBDIR . DIRECTORY_SEPARATOR . "view.php";
  require_once LIBDIR . DIRECTORY_SEPARATOR . "model.php";
  require_once LIBDIR . DIRECTORY_SEPARATOR . "dispatch.php";
  if( file_exists( LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "common.php" ) ) 
  {
    require_once LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "common.php";
  }
  if( file_exists( LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "mysql.php" ) ) 
  {
    require_once LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "mysql.php";
  }
  if( file_exists( LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "pgsql.php" ) ) 
  {
    require_once LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "pgsql.php";
  }
  if( file_exists( LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "txtsql.php" ) ) 
  {
    require_once LIBDIR . DIRECTORY_SEPARATOR . "db" . DIRECTORY_SEPARATOR . "txtsql.php";
  }
  
  if( !defined( "SCRIPTFILE" ) ) 
  {
    define( "SCRIPTFILE", basename( $_SERVER["SCRIPT_FILENAME"] ) );
  }
  
  if( !defined( "SCRIPTDIR" ) ) 
  {
    define( "SCRIPTDIR", dirname( $_SERVER["SCRIPT_FILENAME"] ) . DIRECTORY_SEPARATOR );
  }
?>


いっぱいrequire_onceしていますね(´゚д゚`)
boot.phpは各ファイルを読み込んでいるのがわかりますが、
ちいたんを使う際はこれを読み込むのが必須っぽい匂いがします。


dbディレクトリ内にあるものについては、file_existsでファイルの存在チェックを行ったうえで読み込んでますね。
object.phpやらはファイルの存在チェックしないのかなー?とちょっと気になったり。


次に、ここでも出てきた定数の存在チェック!

  if( !defined( "SCRIPTFILE" ) ) 
  {
    define( "SCRIPTFILE", basename( $_SERVER["SCRIPT_FILENAME"] ) );
  }
  
  if( !defined( "SCRIPTDIR" ) ) 
  {
    define( "SCRIPTDIR", dirname( $_SERVER["SCRIPT_FILENAME"] ) . DIRECTORY_SEPARATOR );
  }


ここで分からなかったのが、basenamedirnameSCRIPT_FILENAME

basenameはファイル名の取得、dirnameは親ディレクトリのパスを取得、SCRIPT_FILENAMEは現在実行中のファイルのファイルパスを取得する命令になっているみたいです。


なので、SCRIPTFILEの定数にはboot.phpという値が、SCRIPTDIRの定数にはboot.phpの親ディレクトリまでのパスが定義されることになります。


これが意図してることって何なんでしょうかねー?
うーむまだ分からん。。。(ヽ´ω`)



ってなわけで、次回はsanitize.phpでも読んでいますー。