PHP требуют глобальной области действия - PullRequest
1 голос
/ 24 августа 2010

У меня проблема с php ... Я не до конца понимаю, как работает функция require (). Насколько я понимаю, он принимает переменные-члены текущего класса и делает их глобальными внутри необходимого файла. Если это так, то почему бы не взять переменные-члены базового класса и сделать их глобальными?

baseclass.php:

class BaseClass {
 var $user;
}

myclass.php:

class MyClass extends BaseClass {
 function doSomething() {
  require "page.php"
 }
} 

page.php:

$this->user // <- this is out of scope?

Ответы [ 2 ]

2 голосов
/ 24 августа 2010

$this->user доступно доступно.Я только что проверил.

require() работает так, как если бы требуемый файл находился на месте требуемой команды.Ни больше ни меньше.

В вашем примере требуемый файл получает область действия функции.

var $varname - это старый стиль: в PHP 5 лучше использовать один из

public $varname
private $varname
protected $varname

для объявления переменных.

0 голосов
/ 24 августа 2010

Я предполагаю, что myclass.php включает в себя baseclass.php.

, когда вы включаете или запрашиваете (разница только в типе ошибки, которую они возвращают), php включает и оценивает указанный файл.php), с областями применения метода, из которого вы включаете файл (doSomething ();).Поэтому я не понимаю, почему вы бы вышли за рамки вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...