我正在使用两个库:
これは私が現在実行中の内容です:
add(function () use ($aConn, $contract) { include_once '/var/local/entrop/config/DataConfig.php'; $next_contract = 契約::getNextContract($aConn); }) ->then(関数 ($output) { }) ->catch(関数 ($例外) { 関数::write_log($例外); }) ->タイムアウト(関数() { 関数::write_log("タイムアウト"); }); } await($pool); $aConn->close(); } catch (例外 $e){ 関数::write_log($e); }
これは DataConfig の定義です:
load(); 定義('DB_HOST', $_ENV['DB_HOST']); 定義('DB_USER', $_ENV['DB_USER']); 定義('DB_PASS', $_ENV['DB_PASS']); 定義('DB_DBMS', $_ENV['DB_DBMS']); クラス DataConfig { 静的 $db_host = DB_HOST; 静的 $db_user = DB_USER; 静的 $db_pass = DB_PASS; 静的 $db_dbms = DB_DBMS; }
これは我のcomposer.json文書:
{ 「必須」: { "vlucas/phpdotenv": "^5.2", "スパティー/非同期": "^1.5" }、 「自動ロード」: { "クラスマップ": [ 「/var/local/entrop/model/Contract.php」 】 } }
现在,我遇到的错误是:
<ブロック引用>[2022-08-04 10:38:38]local.INFO:空间\异步\输出\并行错误: PHP 注意:未定义インデックス:DB_HOST 内 /var/local/entropia/config/DataConfigEntroopia.php 第 12 回 PHP の実行 注意:未定义インデックス:DB_USER in /var/local/entropia/config/DataConfigEntroopia.php 第 13 章 PHP の実行 注意:未定义インデックス:DB_PASS in /var/local/entropia/config/DataConfigEntroopia.php 第 14 章 PHP の実行 注意:未定义インデックス:DB_DBMS in /var/local/entropia/config/DataConfigEntroopia.php 第 15 行
私が試した方法は、DataConfig ファイルを自動的にロードし、それを回帰関数に含めることです。しかし、これは機能しません。
phpdotenv はエラー報告が苦手です (そして個人的には標準やベスト プラクティスにも適切に依存していないと思います。そのため、あなたが遭遇した警告を含む多くの副作用が発生する可能性があります。それは私がかなり正しいというだけのことです)作者はこれがバグではなく機能だと考えているのは確かなので、彼らを批判するつもりはないと認めざるを得ません。結局のところ、ユーザーは自分自身で取り組み、自分が何をしているのかを理解する必要があります)。
特定の問題について、ライブラリを使用する場合は、その構成方法を学習してください。私の以前のコメントでも、それが適切ではないのではないかと思われるかもしれませんが、実際には - そしてこれが phpdotenv が輝くところです - phpdotenv は重労働のほとんどを実行し、ファイル形式だけではなく、ほとんどの部分を制御できます。
問題はファイル形式ではありません。したがって、任意の環境からパラメータを取得し、エラー条件 (たとえば、最初に予期しない値をスローするなど) を処理できるように、アプリケーションを正しく構成してください。これにより、このライブラリまたはそのライブラリを使用するときに犯した間違いも明らかになり、コード内で修正できるはずです。