文件目录为:
$ cd src/lib/Rpc/
$ ls
a.php b.php c.php
然后,我在composer.json
文件中写下一行:
autoload: {
psr-4: {
Rpc\: src/lib/Rpc/
}
}
现在我想加载文件,它将在加载Rpc
-lib时首先加载。
因为文件需要设置全局功能,所以文件的内容:
<?php
RpcChan::setDefaultVar();
那么,我应该如何编写composer.json
文件呢?
好的,让我们这样做。。。
a)composer.json
文件的语法无效
可以使用CLI上的命令composer validate composer.json
检查composer.json
文件的语法。它将为您提供有关缺少的属性和一般语法的一些详细信息。
最小的composer.json
文件应该包括名称、说明和许可证,但validate
会告诉您。
我已经修复了您的composer.json
语法,并添加了缺失的属性,让您开始使用。
{
"name": "thinkerou/rpc-project",
"description": "description for my rpc-project",
"license": "MIT",
"autoload": {
"psr-4": {
"Rpc\": "src/lib/Rpc/"
}
}
}
b)自动加载问题
由于语言障碍,理解你的问题有点困难,但是我是这样理解的:您希望始终加载库中的一个文件,因为它使用静态函数来初始化一些值,对吧?
在这种情况下,我建议使用files
自动加载机制。它将在每个请求中明确要求某些文件(!)。(当您的包中包含PHP无法自动加载的PHP函数时,通常会使用它,但在这种情况下也应该有效。)
示例:
{
"autoload": {
"files": ["autoload_this_file_on_every_request.php"]
}
}
因此,最后,库类的"PSR-4自动加载"和一个特定文件的"文件自动加载"的完整示例如下所示:
{
"name": "thinkerou/rpc-project",
"description": "description for my rpc-project",
"license": "MIT",
"autoload": {
"psr-4": {
"Rpc\": "src/lib/Rpc/"
},
"files": ["src/lib/Rpc/autoload_this_file_on_every_request.php"]
}
}