2013年10月22日火曜日

在庫管理システム『SASO1.0』入口のファイル

SASO1.0では階層のトップに3つのPHPファイルを置いています。
index.phpは以下の通りです。
定数設定ファイルのconfig.phpとオートローダのautoload.phpを呼び出しています。
後はリクエストに応じて、Dispatcherクラスが振り分けてくれます。
<?php    
use \saso\classes\base;
require_once 'config.php';
require_once 'autoload.php';
$dispatcher = new base\Dispatcher();
$dispatcher->setSystemRoot(DOCUMENT_ROOT . PROGRAM_DIR);
$dispatcher->dispatch();

次にオートローダである、autoload.phpです。
クラスを使うときは名前空間とディレクトリ構造が一致している必要があります。
もちろん、一つのクラスにつき一つのファイルです。
<?php
function __autoload($classname) {
    $classname = ltrim($classname, '\\');
    $filename  = '';
    $namespace = '';
    if ($lastnspos = strripos($classname, '\\')) {
        $namespace = substr($classname, 0, $lastnspos);
        $classname = substr($classname, $lastnspos + 1);
        $firstnspos = stripos($namespace, '\\');
        $namespace = substr($namespace, $firstnspos + 1);
        $filename  = DOCUMENT_ROOT . PROGRAM_DIR . '/' . str_replace('\\', '/', $namespace) . '/';
    }
    $filename .= $classname . '.php';
    if(!file_exists($filename)){
        throw new \Exception('notFound');
    }
    require $filename;
}

ちなみに、config.phpは以下の通りです。

<?php
const
//パス
     DOCUMENT_ROOT = '/***/***/public_html/'
    ,PROGRAM_DIR = 'saso1_0'
//データベース
    ,DSN     = 'mysql:dbname=saso;host=localhost'
    ,USER    = 'saso_user'
    ,PASSWORD= '**********'
    ;

0 件のコメント:

コメントを投稿