2012-04-07 3 views
0

У меня есть файл SQL_config.php:имен и __autoload

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_once (database \ SQL_config.php) [function.require-once]: не удалось открыть поток: нет такого файла или каталога в C: \ wamp \ www \ Formular_contact \ index.php в строке 11. Для всех версий я использую это дает мне ошибку не может мне кто-нибудь помочь?

+0

Осторожно, используя заголовки амперсандов; Я только остановился здесь, потому что думал, что «__autoload» возвращается по ссылке. – Dan

ответ

0
define(CLASS_DIR, "/path_to_your_classes_to_load/"); 

require_once CLASS_DIR . str_replace('\\', '/', ltrim($className, '\\')) . '.php'; 
+0

Не работает. с: база данных пространства имен; require_once'SQL_config.php '; $ connection = SQL_config :: getInstance(); рабочий , но я хочу использовать функцию __autoload(). База данных пространства имен; define ("CLASS_DIR", "database"); Функция __autoload ($ class) \t { require_once "CLASS_DIR". . Str_replace ('\\', '/', LTRIM ($ класс, '\\')) 'PHP'; \t} $ connection = SQL_config :: getInstance(); : Неустранимая ошибка: База данных 'SQL \ SQL_config' не найдена в C: \ wamp \ www \ Formular_contact \ index.php в строке 15 – murariubgdn

0

Вы должны заменить «\» с «/» и добавить «.php» до конца нового имени класса, как это будет оны получить имя без комы и расширения. И найдите класс в правильной папке, как показано на пути.

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

Убедитесь, что вы найдите файл класса в соответствующие папки, такие как

./database/SQL_config.php

Если класс находится в папке «классы» Попробуйте вместо этого.

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

Убедитесь, что вы найдите файл класса в соответствующих папках, такие как

./classes/database/SQL_config.php

В коде, который вы представили - расположение вашего файла класса в файловой структуре также важна.

Смежные вопросы