How do I NOT autoload a class in php?

走远了吗. 提交于 2019-12-05 21:55:13

__autoload(), if defined, is called each time you try to access a class that has not been imported manually using require_once() or include_once() and is not part of the PHP internal classes.

In your case the __autoload() is triggered although you try to access a PHP internal class - MongoClient that is provided by the php-mongo extension. When you are not using __autoload() it works as expected.

It looks like the extension doesn't speak well with the PHP interpreter. You should first try an update from the beta to the stable 1.3.1 version. If this won't help, it will need further investigation.


Btw, if you try to instantiate a MongoClient object inside a namespace use \MongoClient(), like this:

namespace Foo;

$client = new \MongoClient();

The \ refers to the global namespace.

PHP will not try to autoload anything that is in the stl (like PDO, mysqli, etc)

If MongoClient is not one of those types of classes, it will try to autoload it.

Make sure you have PECL installed

hernanc

As Neal pointed out, make sure you have the PECL mongo client installed and keep in mind that some times PHP uses a different php.ini file for the CLI.

If in CLI, you can get the correct php.ini by doing:

php -r "phpinfo();" | grep "php.ini"

So, after checking the PECL, make sure you have the extension=mongo.so in the correct php.ini

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!