Использование переменной $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 будет отражать это изменение, которое вы, вероятно, не хотите.