![](/img/trans.png)
[英]PHP Class using namespaces causes problems with my code that doesn't use namespaces. Why?
[英]PHP Namespaces: why isn't my class found?
我已经阅读了一些有关PHP中的名称空间以及compser如何处理名称空间自动加载的知识。 我无法弄清楚为什么找不到我的班级。 有人可以帮忙吗?
我正在使用Laravel,以下是相关的位:
composer.json
相关内容:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/libraries"
],
"psr-0": {
"Facebook\\":"vendor/facebook/php-sdk-v4/src/"
}
}
做一个composer dump-autoload
给我在vendor/composer/autoload_namespaces.php
的以下行:
'Facebook\\\\' => array($vendorDir . '/facebook/php-sdk-v4/src'),
我的供应商文件夹结构为:Facebook是:
vendor
|__ facebook
|__ php-sdk-v4
|__ src
|__ Facebook
|__ ..
|__ Facebook.php
|__ ..
尝试$facebook = new Facebook($config)
给了我
Symfony \\组件\\调试\\异常\\ FatalErrorException(E_UNKNOWN)未找到类'Facebook'
我究竟做错了什么?!
供应商文件夹中的所有内容均应自动加载,因此没有必要使用这些行
"psr-0": {
"Facebook\\":"vendor/facebook/php-sdk-v4/src/"
}
您是否已将这些行添加到composer.json并以通常的composer方式安装了库?
"require": {
"facebook/php-sdk-v4": "~5.0"
}
Facebook
是该类的名称,但Facebook
似乎也是您的名称空间的名称。
在这种情况下,您可以像这样实例化它:
$facebook = new \Facebook\Facebook($config);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.