如何使用composer设置文件加载顺序?

时间:2016-06-04 06:48:29

标签: php composer-php

文件目录是:

$ cd src/lib/Rpc/
$ ls
a.php b.php c.php

然后,我在composer.json文件中写下这一行:

autoload: {
  psr-4: {
    Rpc\\: src/lib/Rpc/
  }
}

现在我想加载加载Rpc lib时首先加载的文件。

因为文件需要设置全局函数,文件的内容为:

<?php
Rpc\Chan::setDefaultVar();

那么,我该如何编写composer.json文件?

1 个答案:

答案 0 :(得分:3)

好的,让我们这样做......

a)composer.json文件的语法无效。

您可以使用CLI上的composer.json命令检查composer validate 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"]
    }
}

所以,最后用&#34; PSR-4自动加载的完整例子&#34;对于您的图书馆的课程和&#34;文件自动加载&#34;对于一个特定文件,看起来像这样:

{
    "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"]
    }
}