Erfahren Sie, wie Sie PHP-Bibliotheken richtig importieren
P粉214089349
2023-09-03 17:07:32
<p>我正在使用两个库:</p>
<ul>
<li>phpdotenv</li>
<li>spatie/async</li>
</ul>
<p>这是我正在执行的内容:</p>
<pre class="brush:php;toolbar:false;"><?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';
benutze SpatieAsyncPool;
versuchen {
$aConn = Functions::getConnection();
$contracts = Contract::getContracts();
$pool = Pool::create();
foreach ($contracts als $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");
});
}
warten($pool);
$aConn->close();
}
Catch (Ausnahme $e){
Functions::write_log($e);
}</pre>
<p>这是DataConfig的定义:</p>
<pre class="brush:php;toolbar:false;"><?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']);
Klasse DataConfig {
static $db_host = DB_HOST;
static $db_user = DB_USER;
static $db_pass = DB_PASS;
static $db_dbms = DB_DBMS;
}</pre>
<p>这是我的composer.json文件:</p>
<pre class="brush:php;toolbar:false;">{
"erforderlich": {
"vlucas/phpdotenv": "^5.2",
"spatie/async": "^1.5"
},
"Autoload": {
"Klassenkarte": [
"/var/local/entrop/model/Contract.php"
]
}
}</pre>
<p>Jetzt erhalte ich folgende Fehlermeldung: </p>
<blockquote>
<p>[2022-08-04 10:38:38]local.INFO: Paralleler Fehler bei der asynchronen Ausgabe des Speicherplatzes:
PHP-Hinweis: Undefinierter Index: DB_HOST in
/var/local/entropia/config/DataConfigEntropia.php Zeile 12 PHP
HINWEIS: Undefinierter Index: DB_USER in
/var/local/entropia/config/DataConfigEntropia.php Zeile 13 PHP
HINWEIS: Undefinierter Index: DB_PASS in
/var/local/entropia/config/DataConfigEntropia.php Zeile 14 PHP
HINWEIS: Undefinierter Index: DB_DBMS in
/var/local/entropia/config/DataConfigEntropia.php Zeile 15</p>
</blockquote>
<p>Ich habe versucht, meine DataConfig-Datei automatisch zu laden und in die Rückruffunktion einzubinden. Aber es hat nicht funktioniert. was soll ich machen? </p>
phpdotenv在错误报告方面表现不佳(并且我个人认为它也没有正确依赖标准和最佳实践,可能会导致许多副作用,包括你遇到的注意事项 - 只是我相当确定他们的作者认为这是一个功能而不是错误,因此我不得不承认我不会对他们进行评判,归根结底,用户需要自己努力并了解他们在做什么)。
对于你的特定问题,如果你使用一个库,请了解如何配置它。甚至我之前的注释可能会提示你它可能不适合,实际上 - 这就是phpdotenv的亮点 - 它正在做大部分的繁重工作,你可以控制大部分部分 --- 只是不能控制文件格式。
你的问题不是文件格式。所以正确配置你的应用程序以从任何环境中获取参数并处理错误情况(例如,在开始时对意外值进行抛出)。这也应该揭示出你在使用这个或那个库时犯了什么错误,并在你的代码中解决这个问题。