我在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文件中的内容?
答案 0 :(得分:1)
你真的没有错过任何东西。它取决于命名空间源代码的包。除非源代码字面上包含namespace
声明,否则代码位于全局命名空间中。如果不改变所有相关的源代码,就无法改变这一事实。 Securimage代码没有命名空间,句点。
"psr-4": {
"vendor\\dapphp\\securimage\\": "vendor/dapphp/securimage"
}
这仅配置自动装带器。意思是,如果你尝试在命名空间vendor\dapphp\securimage\...
中加载一个类,Composer的自动加载器就知道在哪里找到它。它不会将代码放在此命名空间中。