Я понимаю, что это должно быть потому, что каждый вызов класса greeting
не создает новый экземпляр класса
Я думаю, что у вас есть базовое c недопонимание о некоторых Основы здесь.
Это не имеет никакого отношения к тому, является ли $greetingMSG
stati c или нет. После того как вы установите переменную члена класса, ее значение останется неизменным, пока вы не измените ее. Все последующие вызовы, чтобы вызвать переменную, будут просто повторять значение, которое вы уже установили один раз ранее. Это будет вести себя одинаково, независимо от того, было ли это * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Да, вы можете использовать метод сброса, который очищает значение, если вы хотите, и вы действительно просто делаете ту же работу, что и setGreeting('');
.
В любом случае, я не уверен, что цель этого класса в том, чтобы заполниться методами stati c, в первую очередь, или почему у вас есть частный метод сброса. На мой взгляд, это не очень хорошо разработанный класс.
Почему бы не просто обычный класс без методов stati c? Это было бы более гибким и имеет больше смысла. Вот пример нескольких примеров использования:
$greeting = new Greeting('Hello World!');
$greeting->greet();
$greeting->setMessage('Goodbye World!');
$greeting->greet();
$greeting->greet();
$greeting2 = new Greeting();
$greeting2->setMessage('Finished');
$greeting2->greet();
$greeting->greet();
Это печатает в следующем порядке:
Hello World!
Goodbye World!
Goodbye World!
Finished
Goodbye World!
Некоторые замечания по этому поводу:
Таким образом, вы можете иметь несколько экземпляров приветствия с разными сообщениями.
Из моего кода можно сделать вывод, что класс Greeting
имеет конструктор, который позволяет вам установить сообщение при создании экземпляра, или вы можете создать пустой и установить сообщение позже с setMessage()
.
Чтобы показать мою точку зрения о том, как значение переменной остается неизменным, пока вы измените его, обратите внимание, что после того, как мы создадим второй экземпляр Greeting
, эхо-сообщение о первом объекте Greeting
по-прежнему будет иметь то же значение, что и раньше, поскольку оно все еще не было изменено.