スクリプトのiamの開発でvarスコープに問題があります。現在、私はすべてのメソッドを書き直す必要がありますが、誰かが正しい方向に向けるかどうかを確認できます。PHPのインクルードとクラスのスコープ
file1.php
<?php
$db = new SystemDB();
include('file2.php');
someFile2Function();
?>
file2.php
<?php
function someFile2Function(){
$db = new Database;
include('class.php');
$class = new CustomClass();
$class->someMethod();
}
?>
Class.phpと
<?php
class CustomClass {
function someMethod(){
global $db; <-- this var is the file1.php var and not the file2.php function var
// execute some query
}
}
?>
私の問題は、使用しているクラス変数$ DB内にあるということです1つはfile1.phpにあり、もう1つはfile2.phpのsomeFile2Function()にはありません。
someFile2Function()で宣言されたvar $ dbを使用するglobal $ dbを使用する方法はありますか。
ありがとうございました。
このクラスで必要とされるこの関数は、クラスでそのようglobals' '使用している場合ではなく、クラスから機能するためにfile2.phpに機能を移動します。それはカプセル化を完全に破壊する。それをparamとして 'someclass :: __ construct($ db)'に渡して、それをsomeclassのプロパティとして保持してください。 – RiggsFolly
私は間違いだと知っています!私は、$ dbオブジェクトをコンストラクタに渡すために、すべてのクラスとメソッドを書き直す必要がないという方法があるかどうかを確認することを求めています。 – Galfau