как я могу включить php-файл в php-класс

У меня php с массивом, т.е.

$var = array( "var" => "var value", "var2" => "var value1" ); 

и иметь другой файл с классом, т.е.

 class class1{ function fnc1(){ echo $var['var2']; //rest of function here } } 

теперь как я могу получить $var['var'] в файле класса в function fnc1()

Вы можете передать его в качестве аргумента или использовать ключевое слово global чтобы поместить его в текущую область. Однако использование global не рекомендуется, попробуйте передать его в качестве аргумента.

Передайте это как аргумент?

 class class1{ function fnc1($var) { echo $var['var2']; } } 

И в другом файле вызовите этот метод класса с вашим массивом в качестве аргумента.

От: http://php.net/manual/en/function.include.php

Когда файл включен, код, который он содержит, наследует область изменения строки, в которой происходит включение. Любые переменные, доступные в этой строке в вызывающем файле, будут доступны в вызываемом файле с этой точки вперед. Однако все функции и классы, определенные во включенном файле, имеют глобальную область видимости.

Таким образом, вы могли бы сделать

 class class1 { function fnc1() { include 'thefile.php' echo $var['var2']; //rest of function here } } 

но, как и другие, указываемые ранее, вы не хотите этого делать , потому что он вводит зависимость от файловой системы вашего класса. Если ваш метод требует, чтобы эти переменные работали, добавьте их как аргументы метода или передайте их в конструктор и сделайте им свойство (если они вам понадобятся чаще). Это называется Injection Dependency Injection, и в конечном итоге ваш код будет намного удобнее обслуживать, например, делать

 class class1 { private $data; public function __construct(array $var) { $this->data = $var; } function fnc1() { echo $this->data['var2']; //rest of function here } } 

и затем

 $obj = new class1($var); echo $obj->fnc1(); 

или требовать передачи данных в метод при вызове

 class class1 { function fnc1(array $var) { echo $var['var2']; //rest of function here } } 

а потом

 $obj = new class1; $obj->fnc1($var); 

Вы можете использовать global $var в вашем включенном файле, но это действительно плохая практика, поскольку другой скрипт перед вашим включенным файлом может переопределить значение / тип $var .

Пример :

 class class1{ function fnc1(){ global $var; echo $var['var2']; //rest of function here } } 

Лучшее решение – передать ваш $var в качестве параметра для вашего fnc1() даже для вашего class1::__construct()

@Vindia: Я бы предпочел и архаистский стиль, но рекомендовал бы либо использовать подсказку типа, либо простую проверку, чтобы избежать предупреждений при доступе к * non_array * ['var2']:

 // acccepts array only. Errors be handled outside function fnc1(Array $var) { echo $var['var2']; } // accepts any type: function fnc1(Array $var) { if (is_array($var)) { echo $var['var2']; } } 
 class class1{ function fnc1(){ include 'otherFile.php'; echo $var['var2']; //rest of function here } }