命名空间&__自动加载


namespace & __autoload

我有一个文件SQL_config.php:

namespace database;
class SQL_config
{
    private $_server="localhost";
    private $_user="root";
    private $_password="";
    private static $_singleton;
    private $_connection;
    protected function __construct()
    {
        $this->_connection=mysql_connect($this->_server,$this->_user,$this->_password);
    }
    public static function getInstance()
    {
        if(is_null(self::$_singleton))
        {
            self::$_singleton=new SQL_config();
        }
        return self::$_singleton;
    }
}

和index.php:

//namespace database;
//require_once'SQL_config.php';
 function __autoload($class)
    {  
     // convert namespace to full file path  
    //$class = 'database/' . str_replace('''', '/', $class) . '.php';  
    //require_once($class); 
    require_once  $class . '.php'; 
    }  

$connection=database'SQL_config::getInstance();

而且不起作用。警告:require_one(database''SQL_config.php)[function.request-onex]:无法打开流:第11行C:''wamp''www''Formular_contact''index.php中没有这样的文件或目录。对于我使用的所有版本,它都会给我错误难道没人能帮我吗?

define(CLASS_DIR, "/path_to_your_classes_to_load/");
require_once CLASS_DIR . str_replace('''', '/', ltrim($className, '''')) . '.php'; 

您需要将"''"替换为"/",并在新类名的末尾添加一个".php",因为它只会获得没有昏迷和扩展名的名称。并将类定位到路径中所示的正确文件夹中。

function __autoload($className){
    $newClassName= str_replace("''", "/", $className) .".php";
    require_once($newClassName);
}

确保在正确的文件夹(如)中找到类文件

/数据库/SQL_config.php

如果你的课在"classes"文件夹中,请尝试这个。

function __autoload($className){
    $newClassName = "classes/";
    $newClassName .= str_replace("''", "/", $className) .".php";
    require_once($newClassName);
}

确保在正确的文件夹(如)中找到类文件

/classes/database/SQL_config.php

在您所展示的代码中,类文件在文件结构中的位置也很重要。