编程语言
首页 > 编程语言> > PHP-如何使用Composer设置文件加载顺序?

PHP-如何使用Composer设置文件加载顺序?

作者:互联网

文件目录为:

$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文件?

解决方法:

好吧,让我们做…

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)自动加载问题

由于语言障碍,您的问题有点难以理解,但是
我的理解是这样的:您想始终加载库的一个文件,因为它使用静态函数来初始化一些值,对吗?

我建议在这种情况下使用文件自动加载机制.它将在每个请求(!)上明确要求某些文件. (当您的程序包包含无法由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"]
    }
}

标签:composer-php,php
来源: https://codeday.me/bug/20191118/2029180.html