Класс PHP наследует переменные во включенном файле - PullRequest
1 голос
/ 26 июня 2011

У меня есть как:

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 переменных.Эти переменные были разработаны сложным образом.Для упрощения этой разработки мне нужно создать дерево наследников классов - но в этом случае эти переменные не будут видны в дочерних классах без назначения их переменным класса - но это приводит к огромному объему кода.

Ответы [ 3 ]

2 голосов
/ 26 июня 2011

В первом классе присвойте свои переменные переменным класса:

class Class1{
   private $someVariable;

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

}

Теперь эта переменная доступна в дочернем классе через $this->someVariable.

Удачного кодирования, удачи

1 голос
/ 26 июня 2011

Как объяснено в include() и области переменных , когда вы включаете файл в метод __construct(), область действия переменных в файле, который вы включаете, равна ограничено методом __construct(), а не классом.

Вы можете либо изменить содержимое включаемого файла, добавив $this-> перед именем переменной (т.е. $this->var_in_included_file = 10;), либо добавить $this->var_in_included_file = $var_in_included_file; в свой метод __construct().

0 голосов
/ 26 июня 2011
Class1 {

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

Невозможно

...