Использование переменной $GLOBALS[] в функции класса PHP

Я пытаюсь назначить $GLOBALS['a'] переменная в функции из класса, но не удалось.

Вот мой код:

<?php

 $GLOBALS['a'] = "alter";

 class db_data 
 {
   public $a;

   function __construct()
   {
     $this->a = $GLOBALS['a']; 
   }

 }

 $db = new db_data;

 echo $db->$a;

?>

И выдал эту ошибку:

Примечание: неопределенное свойство: db_data::$alter.....

Я пытался найти это на SO, но все вопросы были другими, и это не решило мою проблему.

1 ответ

Решение

Ответы есть в комментариях к вопросу, но вот почему это происходит

Вы случайно используете функцию переменных переменных в PHP. Когда вы звоните $thing->$aвы на самом деле получаете значение $ а (которое определяется $GLOBALS['a'] = "alter"; линия), а затем получить свойство $thing с этим значением.

Как указано в ваших комментариях, вы должны просто повторить $db->a, так как это как свойства PHP доступны

Кроме того, будьте осторожны!, если значение $a В другом месте глобальной области видимости ваш класс db_data будет отражать это изменение, которое вы, вероятно, не хотите.

Другие вопросы по тегам