Глобальная переменная внутри конструктора с PHP

Это должно быть очевидно, но я немного запутался в области переменных PHP.

У меня есть переменная внутри конструктора, которую я хочу использовать позже в функции в том же классе. Мой текущий метод:

<?php class Log(){ function Log(){ $_ENV['access'] = true; } function test(){ $access = $ENV['access']; } } ?> 

Есть ли лучший способ сделать это, чем злоупотреблять переменными среды? Благодарю.

Вы можете использовать переменную класса, которая имеет контекст … класса:
(Например, для PHP 5, я переписал несколько вещей, чтобы ваш код был более совместимым с PHP5)

 class Log { // Declaration of the propery protected $_myVar; public function __construct() { // The property is accessed via $this->nameOfTheProperty : $this->_myVar = true; } public function test() { // Once the property has been set in the constructor, it keeps its value for the whole object : $access = $this->_myVar; } } 

Вы должны взглянуть на:

  • Раздел «Классы и объекты» руководства по PHP
  • И для этого конкретного вопроса в разделе « Свойства»

Глобалы считаются вредными. Если это внешняя зависимость, передайте ее через конструктор и сохраните ее внутри свойства для последующего использования. Если вам нужно, чтобы это было задано только во время тестирования, вы можете подумать о том, чтобы сделать его аргументом для этого метода.

Вы можете использовать глобальное ключевое слово:

 class Log{ protected $access; function Log(){ global $access; $this->access = &$access; } } 

Но вы действительно должны передавать переменную в конструкторе:

 class Log{ protected $access; function Log($access){ $this->access = &$access; } //...Then you have access to the access variable throughout the class: function test(){ echo $this->access; } }