PHP在作曲家的供应商包上定义名称空间

时间:2014-08-29 09:12:45

标签: php namespaces composer-php

我在PHP中遇到了一些名称空间问题。

我已经把所有东西都固定下来并在我的项目中工作,这一切都很好。我使用作曲家的自动加载功能来自动加载我的所有项目类。

最近,我需要通过作曲家为securimage(captcha应用程序)提供依赖。我得到的问题是,在我编辑文件并在每个php脚本的顶部插入以下内容之前,它不会工作。

<?php namespace vendor\dapphp\securimage;

我的composer.json文件正在使用PSR-4,如果这有助于识别我出错的地方。

"psr-4": {
            "vendor\\dapphp\\securimage\\": "vendor/dapphp/securimage"
        }

我的问题是,我不知道如何引入作曲家供应商项目并让PHP自动插入/理解这些应放在命名空间

vendor\{userid}\{projectid}

不编辑实际文件。

我确定我错过了composer.json文件中的内容?

1 个答案:

答案 0 :(得分:1)

你真的没有错过任何东西。它取决于命名空间源代码的包。除非源代码字面上包含namespace声明,否则代码位于全局命名空间中。如果不改变所有相关的源代码,就无法改变这一事实。 Securimage代码没有命名空间,句点。

"psr-4": {
    "vendor\\dapphp\\securimage\\": "vendor/dapphp/securimage"
}

这仅配置自动装带器。意思是,如果你尝试在命名空间vendor\dapphp\securimage\... 中加载一个类,Composer的自动加载器就知道在哪里找到它。它不会将代码放在此命名空间中。