繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM