ホームページ >バックエンド開発 >PHPチュートリアル >php7 - PHP グローバル変数は Composer を使用して自動的にロードされるため、使用できません
これは、元のプログラマが構成ファイルでデータベース インスタンスを直接インスタンス化した歴史的なレガシー コードです。
$db = 新しい db();このようなコードは通常require/includeでインクルードすれば問題ありませんが、判定する際は$GLOBALS['db']を使って判定します。
ファイルが多いので、一部のモデルを再利用したいのですが、包含関係上、一つずつ試してからインクルードする必要があるので、composerを使用しました。自動的にロードします。コンポーザーが自動的にロードしたファイル $GLOBALS を使用しました。['db'] は空です。通常、このグローバル パラメーターは使用しないので、状況はわかりません。
私はこの問題を自分で解決しました。 $db = new db() を $GLOBALS['db'] に変更するだけです。つまり、値を明示的に割り当てます。
手動でインクルードした$dbは存在するのに、composerで自動ロードした$dbが消えてしまう理由がわかりません。ご教示ください。
返信内容:
$db = 新しい db();
この種のコードは通常require/includeでインクルードされていれば、判定の際は$GLOBALS['db']を使って判定します。
ファイルが多いので、一部のモデルを再利用したいのですが、包含関係上、一つずつ試してからインクルードする必要があるので、composerを使用しました。自動的にロードします。コンポーザーが自動的にロードしたファイル $GLOBALS を使用しました。['db'] は通常は使用しないので、何が起こっているのかわかりません。
私はこの問題を自分で解決しました。 $db = new db() を $GLOBALS['db'] に変更するだけです。つまり、値を明示的に割り当てます。
手動でインクルードした$dbは存在するのに、composerで自動ロードした$dbが消えてしまう理由がわかりません。ご教示ください。