3

私のphpコードの先頭にあるオートローダー

function __autoload($class_name) {
    include_once $class_name . '.class.php';
}

呼び出しがnew MongoClient();エラーで失敗する原因となっていますWarning: include_once(MongoClient.class.php): failed to open stream

クラスにオートローダを使用し、標準クラスを使用するにはどうすればよいですか?

注: MongoDb は PECL と共にインストールされており、オートローディング機能を削除しても問題なく動作します。PHP 5.4.9のmongo-1.3.0beta2

4

3 に答える 3

4

PHP はstl にあるもの (PDO、mysqli など) をオートロードしようとしません。

MongoClientこれらのタイプのクラスの 1 つでない場合は、オートロードを試みます。

PECLがインストールされていることを確認してください

于 2012-12-17T22:42:46.060 に答える
0

__autoload()require_once()が定義されている場合、またはinclude_once()を使用して手動でインポートされておらず、PHP 内部クラスの一部ではないクラスにアクセスしようとするたびに呼び出されます。

あなたの場合、php-mongo拡張機能によって提供される__autoload()PHP内部クラスにアクセスしようとしても、がトリガーされます。MongoClient使用していないときは__autoload()、期待どおりに機能します。

拡張機能が PHP インタープリターとうまく話せないようです。最初に、ベータ版から安定した 1.3.1 バージョンへの更新を試す必要があります。これで解決しない場合は、さらに調査する必要があります。


MongoClientところで、名前空間内でオブジェクトをインスタンス化しようとすると\MongoClient()、次のように使用します。

namespace Foo;

$client = new \MongoClient();

\、グローバル名前空間を指します。

于 2012-12-17T22:47:42.517 に答える