![](/img/trans.png)
[英]Loading a Composer package not listed in vendor/composer/autoload_namespaces.php
[英]PHP defining namespaces on composer's vendor packages
我在PHP中使用命名空间时遇到了一些问题。
我已经搞定了一切,并在我的项目中进行了很好的运行。 我使用了作曲家的自动加载功能来自动加载所有项目类。
最近,我需要通过composer获取securimage(验证码应用程序)的依赖项。 我遇到的问题是,直到我去编辑文件并将以下内容插入每个php脚本的顶部,它才起作用。
<?php namespace vendor\dapphp\securimage;
我的composer.json文件正在使用PSR-4,如果这有助于确定我要去哪里。
"psr-4": {
"vendor\\dapphp\\securimage\\": "vendor/dapphp/securimage"
}
我的问题是,如果我不知道如何拉入作曲家供应商项目并使PHP自动插入/理解应将其放置在名称空间下
vendor\{userid}\{projectid}
无需编辑其中的实际文件。
我确定我刚刚错过了composer.json文件中的某些内容?
您还没有真正错过任何内容。 由一个程序包来命名其源代码的命名空间。 除非源代码从字面上包含namespace
声明,否则代码位于全局命名空间中。 如果不更改所有涉及的源代码,就无法更改该事实。 Securimage代码未命名空间,即句点。
"psr-4": {
"vendor\\dapphp\\securimage\\": "vendor/dapphp/securimage"
}
这仅配置自动加载器。 意味着, 如果您尝试在名称空间vendor\\dapphp\\securimage\\...
加载一个类 ,则Composer的自动加载器知道在哪里可以找到它。 它不会将代码放在此命名空间中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.