我读过一些关于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'),
和我的供应商文件夹结构re: Facebook是:
vendor
|__ facebook
|__ php-sdk-v4
|__ src
|__ Facebook
|__ ..
|__ Facebook.php
|__ ..
尝试$facebook = new Facebook($config)
给我
Symfony Component Debug Exception FatalErrorException (E_UNKNOWN)类"Facebook"未找到
我做错了什么?
供应商文件夹中的任何内容都应该自动加载,所以没有必要使用这些行
"psr-0": {
"Facebook\":"vendor/facebook/php-sdk-v4/src/"
}
你把这些行添加到你的作曲器了吗?Json和安装库通常的作曲家的方式?
"require": {
"facebook/php-sdk-v4": "~5.0"
}
Facebook
是类的名称,但Facebook
似乎也是您的名称空间的名称。
在这种情况下,你像这样实例化它:
$facebook = new FacebookFacebook($config);