PHP 命名空间:为什么找不到我的类?



我读过一些关于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);

相关内容

  • 没有找到相关文章

最新更新