__set_state () - объяснение заметки на php.net - PullRequest
0 голосов
/ 02 мая 2018

http://php.net/manual/en/language.oop5.magic.php#object.set-state

Примечание. При экспорте объекта var_export () не проверяет, реализован ли __set_state () классом объекта, поэтому повторный импорт таких объектов завершится неудачей, если __set_state () не реализован. Особенно это касается некоторых внутренних классов. Программист должен убедиться, что будут импортированы только объекты, класс которых реализует __set_state ().

1) __set_state () - это что-то, что мы внедряем в каждый объект, где мы хотим, чтобы это было на месте?

2) объект может иметь его или нет?

3) что означает «повторный импорт»? var_export выполняет экспорт, поэтому мы импортируем или фактически «реимпортируем», я не понимаю эту часть.

4) "это особенно касается некоторых внутренних классов"; больше информации об этом было бы хорошо

1 Ответ

0 голосов
/ 04 июня 2018

1) __set_state () - это то, что мы реализуем сами в каждом объект, где мы хотим, чтобы он был на месте?

Да.

2) объект может иметь его или нет?

Да.

3) что означает «повторный импорт»? var_export выполняет экспорт, поэтому мы импортируем или фактически «реимпортируем», я не понимаю эту часть.

$c = new C();
$exported_value = var_export($c) # export
$new_c = eval($exported_value) # re-import

Также, если вы сохранили $exported_value в виде файла и требовали его - это будет повторный импорт.

4) «это особенно влияет на некоторые внутренние классы»; больше информации об этом было бы хорошо

На основе PHP-терминологии Я думаю, это означает, что PHP встроен в классы, например. Классы, связанные с датой и временем . Это в основном означает, что вы не можете предполагать, что в PHP классы сборки реализуют метод __set_state()

...