взаимодействие переменных класса php

В этом проблема, как я могу вызвать переменную класса из функции класса? Позвольте мне объяснить лучше:

    <?php

class Mine
{

private $g = 'gg';
const COSTANTE = 'valo';

public static function sayHello()
{
echo self::COSTANTE;
echo '<br>';
echo $this->g;
}
}
$h = new Mine();
$h->sayHello();
$h::sayHello();
?>

когда я запускаю это, он просто печатает константу COSTANTE …. Почему он не печатает переменную g?

-2

Решение

Включить отчет об ошибках ( сообщение об ошибке (E_ALL); ), и вы должны получить следующую ошибку:

Неустранимая ошибка: использование $ this, когда не в контексте объекта

Псевдо-переменная $this является ссылкой на вызывающий объект и доступна из контекста объекта.

self используется для доступа к текущему классу, поскольку статические функции могут вызываться без фактического экземпляра объекта, когда метод вызывается статически $this Ссылка не существует.

Метод объявлен как static доступ к нему можно получить с помощью экземпляра объекта класса (но он всегда выполняется в статическом контексте), свойство объявлено как static не могу.

1

Другие решения

valo будет напечатан, но gg и не будет.
Проблема заключается в том, что вы использовали нестатическую переменную в статическом методе, который вызовет ошибку FATAL и остановит выполнение. Это потому, что нет контекста объекта.

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

Ваш sayHello функция будет что-то вроде

public static function sayHello()
{
echo self::COSTANTE;
echo '<br>';
$mineObject = new Mine;
echo $mineObject->g;
}

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

error_reporting(E_ALL);
ini_set('display_errors', 'ON');
1

По вопросам рекламы [email protected]