PHP $ это, когда нет в контексте объекта для установки общедоступной переменной из вне класса

У меня есть простой класс, и я хочу установить переменную public из класса.

 <?php class AlachiqHelpers { public $height; public static function getHeight($height) { return $this->height - 50; } public static function setHeight($height) { $this->height = $height; } } 

В результате я получаю эту ошибку:

 Using $this when not in object context 

$this This ключевое слово не может использоваться в статическом контексте!.

Дело 1:

Вам нужно удалить ключевое слово static из функции defintion.

Вместо

 public static function setHeight( $height ){ 

Должно быть

 public function setHeight( $height ){ 

Случай 2:

Если вам действительно нужно сделать это (функция) static … Вы можете просто использовать ключевое слово self для доступа к переменной.

 public static $height; public static function setHeight( $height ) { self::$height=22; } 

Имейте в виду, что переменная $height также static


Рабочий код .. (статический)

 <?php class AlachiqHelpers { public static $height; public function getHeight() { return self::$height - 50; } public static function setHeight($height1) { self::$height = $height1; } } $a = new AlachiqHelpers(); $a->setHeight(180); echo $a->getHeight(); 

OUTPUT :

 130 

Удалите static , эти методы не должны быть статическим методом, а методом экземпляра.

$this не может использоваться в статическом контексте, потому что статический контекст используется всеми экземплярами, но не один.

Статический метод может получить доступ только к статическому свойству.

Нестатический метод может иметь доступ как к нестатистическому свойству (по $this->foo ), так и по статическому свойству ( self::$foo ).

Source

Поскольку статические методы вызываются без экземпляра созданного объекта, псевдопеременная $ this недоступна внутри метода, объявленного как статический.

Вы не можете использовать $this внутри статической функции, потому что статические функции не зависят от какого-либо объекта-объекта.

Попробуйте сделать функцию не статической.

 public function setHeight( $height ){ $this->height=$height; }