composer如何在php中正确加载库



我正在使用两个库:

  • phpdotenv
  • spatie/async

这就是我正在执行的:

<?php
require_once "/var/local/entrop/vendor/autoload.php";
include_once '/var/local/entrop/inc/Functions.php';
include_once '/var/local/entrop/model/Contract.php';
use SpatieAsyncPool;
try {
$aConn = Functions::getConnection();
$contracts = Contract::getContracts();
$pool = Pool::create();

foreach ($contracts as $contract){
$pool->add(function () use ($aConn, $contract) {
include_once '/var/local/entrop/config/DataConfig.php';
$next_contract = Contract::getNextContract($aConn);
})
->then(function ($output) {
})
->catch(function ($exception) {
Functions::write_log($exception);
})
->timeout(function () {
Functions::write_log("timeout");
});
}
await($pool);
$aConn->close();
}
catch (Exception $e){
Functions::write_log($e);
}

这是DataConfig的定义:

<?php
ini_set('display_errors',1);
error_reporting(E_ALL); 
require_once "/var/local/entrop/vendor/autoload.php";
$dotenv = DotenvDotenv::createImmutable("/var/local/entrop/");
$dotenv->load();
define('DB_HOST', $_ENV['DB_HOST']);
define('DB_USER', $_ENV['DB_USER']);
define('DB_PASS', $_ENV['DB_PASS']);
define('DB_DBMS', $_ENV['DB_DBMS']);
class DataConfig {
static $db_host = DB_HOST;
static $db_user = DB_USER;
static $db_pass = DB_PASS;
static $db_dbms = DB_DBMS;
}

这是我的composer.json文件:

{
"require": {
"vlucas/phpdotenv": "^5.2",
"spatie/async": "^1.5"
},
"autoload": {
"classmap": [
"/var/local/entrop/model/Contract.php"
]
}
}

现在,我得到的错误是:

[2022-08-04 10:38:38]本地。信息:空间\异步\输出\并行错误:PHP注意:未定义的索引:中的DB_HOST/第12行php上的var/local/entopia/config/DataConfigEntropia.php注意:中的未定义索引:DB_USER/第13行php上的var/local/entopia/config/DataConfigEntropia.php注意:未定义的索引:中的DB_PASS/第14行php上的var/local/entopia/config/DataConfigEntropia.php注意:未定义的索引:中的DB_DBMS/第15行上的var/local/entropia/config/DataConfigEntropia.php

到目前为止,我尝试的是自动加载我的Dataconfig文件,并将其包含在回调函数中。它不起作用。我能做什么?

phpdotenv不擅长错误报告(在我看来,也没有正确地依赖标准或最佳实践,这可能会导致许多副作用,包括你收到的通知——只是我很确定他们的作者认为这是一个功能,而不是bug,因此我不得不承认,我并没有评判他们,最终用户需要做这项工作,知道他们在做什么(。

对于您的特定问题,如果您使用库,请了解如何配置它。即使我之前的注释可能会向您发出信号,表明它可能不合适,但它实际上——这就是phpdotenv的亮点——正在做大量繁重的工作,您可以控制它的大部分内容——只是不能控制文件格式。

你的问题不在于文件格式。因此,请正确配置您的应用程序,以使用任何环境中的参数并处理错误情况(例如,一开始就抛出意外值(。这也应该揭示您在使用这个或那个库开始时出错的地方,然后在代码中解决问题。

相关内容

  • 没有找到相关文章

最新更新