【问题标题】:Composer for autoloading php用于自动加载 php 的 Composer
【发布时间】:2015-02-01 06:10:29
【问题描述】:

您好,我有这个文件夹结构:

我正在使用 composer 来自动加载我的文件,但它不起作用.. 我第一次这样做,我不知道如何实现。

我的 composer.json

{
"name": "Some name",
"description": "Some Framework",
"minimum-stability": "stable",
"license": "proprietary",
"authors": [
    {
        "name": "Some names of authors",
        "email": "some@gmail.com"
    }
],
"autoload": {
    "psr-4": {
        "Apison": "/../sdk/"
    }
}

}

还有我的 index.php

    <?php
require_once 'vendor/autoload.php';

$app = new \Apison\Sdk\App();

当我更新我的作曲家时,它会写:Nothing to load and PHP will catch exeption on line with $app = new \Apison\Sdk\App();

感谢您的提示

【问题讨论】:

  • /../sdk/ --- 此路径指向文件系统的根目录。打开你的终端并尝试ls /../sdk/
  • 所以我的路径是sdk/?
  • 是的,我的意思是它可以工作:作曲家捕捉到这个错误:A non-empty PSR-4 prefix must end with a namespace separator. 谢谢它向前推进:D

标签: php composer-php autoloader


【解决方案1】:

命名空间需要\\:

"Apison\\": "../sdk"

文档:

https://getcomposer.org/doc/04-schema.md#psr-4


根据我们的聊天,解决方案是这样的:

"autoload": {
    "psr-4": {
        "Apison\\Sdk\\": "sdk"
    }
}

然后更改命名空间和文件结构以符合psr-4 标准

【讨论】:

  • 然后运行composer dumpautoload
  • 它不起作用:/ 我正在使用 coposer dump-autoload
  • 我正在阅读此文档.. 我像示例一样这样做,但这是行不通的,我不知道我哪里出错了
  • 这样? "Apison\\": "../sdk"?
  • 尝试将 sdk 目录移动到与 composer.json 相同的目录中。然后将自动加载更改为 "Apison\\": "sdk" - 排除目录位置
猜你喜欢
  • 2021-03-18
  • 1970-01-01
  • 2018-07-11
  • 2017-11-26
  • 2012-09-30
  • 2014-05-02
  • 2013-02-17
  • 2018-11-26
  • 2017-05-24
相关资源
最近更新 更多