Это должно быть очевидно, но я немного запутался в области переменных 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; } }
Вы должны взглянуть на:
Глобалы считаются вредными. Если это внешняя зависимость, передайте ее через конструктор и сохраните ее внутри свойства для последующего использования. Если вам нужно, чтобы это было задано только во время тестирования, вы можете подумать о том, чтобы сделать его аргументом для этого метода.
Вы можете использовать глобальное ключевое слово:
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; } }