1

私は好きです:

class Class2 extends Class1 {
.....
 function __construct() {
 parent::__construct();
   $var_in_included_file;
}   
}

class Class1 {
function __construct() {
 include_once('my_file.php')
}
.....
}

my_file.php:

$var_in_included_file=10;

問題は、$var_in_included_file の値を受け取ることができないことです。次のような多くのコードを追加せずにこの値を受け取る方法はありますか?

$this->var=$var_in_included_file ....? 

何千もの変数があるからです。ありがとう。より抽象的な問題は次のとおりです。($_POST から) 受け取ったファイルで、500 変数近くです。これらの変数は複雑な方法で作成されています。この精緻化を簡素化するために、クラス継承のツリーを作成する必要がありますが、この場合、これらの変数は、クラス変数に割り当てないと子クラスには表示されませんが、これにより膨大な量のコードが生成されます。

4

3 に答える 3

2

クラス 1 で、変数をクラス変数に割り当てます。

class Class1{
   private $someVariable;

 public function __construct(){
    include_once 'my_file.php';
     // variable declared in my_file.php        
    $this->someVariable = $someVariable;        
    }       

}

その変数は、子クラスで、 を通じてアクセスできるようになりました$this->someVariable

幸せなコーディング、幸運を祈ります

于 2011-06-25T21:03:09.660 に答える
1

include()および変数スコープで説明されているように、メソッドにファイルを含める場合、含めるファイルの変数のスコープは、クラスではなくメソッドに__construct()制限されます。__construct()

オプションは、インクルードされたファイルのコンテンツを変更し$this->て変数名の前にを含めるか(つまり) 、メソッドに$this->var_in_included_file = 10;を追加することです。$this->var_in_included_file = $var_in_included_file;__construct()

于 2011-06-25T20:59:33.653 に答える
0
Class1 {

include_once('my_file.php')
.....
}

不可能です

于 2011-06-25T20:48:30.403 に答える