ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::resetAsLazyGhost β€” БбрасываСт ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ

ОписаниС

public function ReflectionClass::resetAsLazyGhost(object $object, callable $initializer, int $options = 0): void

ΠœΠ΅Ρ‚ΠΎΠ΄ сбрасываСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ object ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ дСструктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли дСструктор ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² классС ΠΈ Ссли ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ„Π»Π°Π³ ReflectionClass::SKIP_DESTRUCTOR. Волько Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ прокси, Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр отсоСдиняСтся ΠΎΡ‚ прокси. ДСструктор Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ экзСмпляра вызываСтся нСзависимо ΠΎΡ‚ Ρ„Π»Π°Π³Π° SKIP_DESTRUCTOR, Ссли ссылок Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр большС Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ.

ДинамичСскиС свойства ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ объявили Π² классС, отбрасываСтся, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ ΡΠ·Ρ‹ΠΊΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ unset(), ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ помСчаСтся Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ. ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” экзСмпляр подкласса с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ свойствами, Ρ‚ΠΎ эти свойства Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈ Π½Π΅ становятся Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌΠΈ. ДоступныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния свойства Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π½Π΅ становятся Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌΠΈ, Ссли Ρ‚Π°ΠΊΠΈΠ΅ свойства объявили ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово final ΠΈΠ»ΠΈ сам класс ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ объявили ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово final.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ, Ссли Π½ΠΈ ΠΎΠ΄Π½ΠΎ свойство Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΡ†ΠΈΡŽ Β«Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²Β».

Π˜Π½Π°Ρ‡Π΅ послС Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создали ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ReflectionClass::newLazyGhost(), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ подкласса ΠΈ свойств, доступных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ замСняСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΈ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ. ПовСдСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ spl_object_id() ΠΈ spl_object_hash(), классов SplObjectStorage, WeakMap ΠΈ WeakReference, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° идСнтичности === Π½Π΅ мСняСтся.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

object
НСлСнивый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
initializer
Callback-функция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° с Ρ‚ΠΎΠΉ ΠΆΠ΅ сигнатурой ΠΈ Ρ†Π΅Π»ΡŒΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ Π² описании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ReflectionClass::newLazyGhost().
options

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ options ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π»Π°Π³ΠΎΠ²:

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сСриализация Π»Π΅Π½ΠΈΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° запускаСт Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Установка этого Ρ„Π»Π°Π³Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π΅Π½ΠΈΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
ReflectionClass::SKIP_DESTRUCTOR
По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ дСструктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, β€” Ссли дСструктор ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² классС, β€” вызываСтся Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ сдСлаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ. Π­Ρ‚ΠΎ обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… состояний ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎΡ‚ Ρ„Π»Π°Π³ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎ Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… Π±Π΅Π· Π²Ρ‹Π·ΠΎΠ²Π° дСструктора.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния послС выполнСния.

Ошибки

ΠœΠ΅Ρ‚ΠΎΠ΄ выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ReflectionException, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΉ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ выбросит ΠΎΡˆΠΈΠ±ΠΊΡƒ Error, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ инициализируСтся, ΠΈΠ»ΠΈ Ссли свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ конструкциСй foreach.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • ReflectionClass::newLazyGhost() - Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр Π»Π΅Π½ΠΈΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ·Ρ€Π°ΠΊΠ°
  • ReflectionClass::resetAsLazyProxy() - БбрасываСт ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы