thinkphp——importで@が表すパスについて

2190 ワード

thinkphp 
import  デフォルトのパスはシステムのライブラリディレクトリthinkphp/libです.@はプロジェクトライブラリディレクトリapp/libを表します.
convention.php
'DEFAULT_APP'           => '@',    //デフォルトのプロジェクト名、@は現在のプロジェクトを表します
functions.php
function import($class, $baseUrl = '', $ext='.class.php') {
    static $_file = array();
    static $_class = array();
    $class = str_replace(array('.', '#'), array('/', '.'), $class);  // “/”  “.”, “.”  “#”
    if ('' === $baseUrl && false === strpos($class, '/')) {
        //       
        return alias_import($class);
    }    //echo('
'.$class.$baseUrl); if (isset($_file[$class . $baseUrl])) return true; else $_file[$class . $baseUrl] = true; $class_strut = explode("/", $class); if (empty($baseUrl)) { if ('@' == $class_strut[0] || APP_NAME == $class_strut[0]) { // $baseUrl = dirname(LIB_PATH); //LIB_PATH , App LIB_PATH “./App/Lib” $class = substr_replace($class, 'Lib/', 0, strlen($class_strut[0]) + 1); } elseif (in_array(strtolower($class_strut[0]), array('think', 'org', 'com'))) { // ThinkPHP // think org com $baseUrl = THINK_PATH . '/Lib/'; } else { // $class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1); $baseUrl = APP_PATH . '/../' . $class_strut[0] . '/' . LIB_DIR . '/'; } } if (substr($baseUrl, -1) != "/") $baseUrl .= "/"; $classfile = $baseUrl . $class . $ext; if ($ext == '.class.php' && is_file($classfile)) { // $class = basename($classfile, $ext); if (isset($_class[$class])) throw_exception(L('_CLASS_CONFLICT_') . ':' . $_class[$class] . ' ' . $classfile); $_class[$class] = $classfile; } // return require_cache($classfile); }