php – 将在自动加载的命名空间类文件中声明的函数转换为全局函
发布时间:2020-12-13 17:49:06 所属栏目:PHP教程 来源:网络整理
导读:我的要求可能看起来像是糟糕的做法,但是我想知道它是否可行. 我正在使用作曲家自动加载我的课程.在其中一个类文件中,我想定义一个可以在全局命名空间中用作速记的函数.由于作曲家的要求,该类需要被命名空间. 我的问题:有什么方法可以通过微小的改动来实现这
我的要求可能看起来像是糟糕的做法,但是我想知道它是否可行.
我正在使用作曲家自动加载我的课程.在其中一个类文件中,我想定义一个可以在全局命名空间中用作速记的函数.由于作曲家的要求,该类需要被命名空间. 我的问题:有什么方法可以通过微小的改动来实现这个目的吗? MyClass.php: <?php namespace Jodes; class MyClass { public function __construct() { echo "I am the class"; } } function fn(){ echo "I am a shorthand for doing stuff"; } index.php文件: <?php require_once '../vendor/autoload.php'; use JodesMyClass; new MyClass(); // Jodesfn(); // works // fn(); // doesn't work composer.json { "name": "jodes/mypackage","autoload": { "psr-4" : { "Jodes" : "src" } } } 尽管阅读了比我能算的更多的链接,但我已经尝试了所有我能想到的运气. 谢谢 解决方法
首先,如果此函数不是MyClass的一部分,则不应将其放在同一文件中.惯例是将每个类(并且只有该类)放在单独的文件中.
对于像你的fn()那样全局可用的辅助函数,你需要一个单独的文件.在全局命名空间中声明函数,然后使用composer的文件机制添加到您的composer项目: //common.php <?php function fn() { // some code } //composer.json "autoload": { "files": ["path/to/common.php"] } 这将为每个请求加载common.php文件,并使您的帮助函数可用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |