Ignore:
Timestamp:
2012/02/12 07:51:24 (12 years ago)
Author:
Seasoft
Message:

#1637 (クラスのオートローディング)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/app_initial.php

    r21480 r21483  
    3737} 
    3838 
    39 require_once CLASS_EX_REALDIR . 'helper_extends/SC_Helper_HandleError_Ex.php'; 
     39// クラスのオートローディングを定義する 
     40setClassAutoloader(); 
     41 
    4042SC_Helper_HandleError_Ex::load(); 
    4143 
    42 require_once CLASS_EX_REALDIR . 'SC_Initial_Ex.php'; 
    4344// アプリケーション初期化処理 
    4445$objInit = new SC_Initial_Ex(); 
    4546$objInit->init(); 
    46 ?> 
     47 
     48/** 
     49 * クラスのオートローディングを定義する 
     50 */ 
     51function setClassAutoloader() { 
     52    function __autoload($class) { 
     53        $arrClassNamePart = explode('_', $class); 
     54        $is_ex = end($arrClassNamePart) === 'Ex'; 
     55        $count = count($arrClassNamePart); 
     56        $classpath = $is_ex ? CLASS_EX_REALDIR : CLASS_REALDIR; 
     57 
     58        if (($arrClassNamePart[0] === 'GC' || $arrClassNamePart[0] === 'SC') && $arrClassNamePart[1] === 'Utils') { 
     59            $classpath .= $is_ex ? 'util_extends/' : 'util/'; 
     60        } 
     61        elseif ($arrClassNamePart[0] === 'SC' && $is_ex === true && $count >= 4) { 
     62            $classpath .= strtolower($arrClassNamePart[1]) . '_extends/'; 
     63        } 
     64        elseif ($arrClassNamePart[0] === 'SC') { 
     65            // 処理なし 
     66        } 
     67        // PEAR用 
     68        // FIXME トリッキー 
     69        else { 
     70            $classpath = ''; 
     71            $class = str_replace('_', '/', $class); 
     72        } 
     73 
     74        $classpath .= "$class.php"; 
     75        require($classpath); 
     76    } 
     77} 
Note: See TracChangeset for help on using the changeset viewer.