0

私はファイル 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_once(database\SQL_config.php) [function.require-once]: ストリームを開くことができませんでした: No such file or directory in C:\wamp\www\Formular_contact\index.php on line 11.私が使用するすべてのバージョンについてそれは私にエラーを与えます 誰かが私を助けることができませんか?

4

2 に答える 2

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

require_once CLASS_DIR . str_replace('\\', '/', ltrim($className, '\\')) . '.php'; 
于 2012-04-07T08:43:23.220 に答える
0

「\」を「/」に置き換え、新しいクラス名の末尾に「.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

あなたが提示したコードでは、ファイル構造内のクラスファイルの場所も重要です。

于 2014-08-13T14:57:39.720 に答える