PHP.mk документација

ReflectionClass::newLazyGhost

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

reflectionclass.newlazyghost.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека reflectionclass.newlazyghost.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
ReflectionClass::newLazyGhost

Референца за `reflectionclass.newlazyghost.php` со подобрена типографија и навигација.

reflectionclass.newlazyghost.php

ReflectionClass::newLazyGhost

Класата Dom\DtdNamedNodeMap

ReflectionClass::newLazyGhostСоздава нова мрзлива инстанца на дух

= NULL

public ReflectionClass::newLazyGhost(callable $initializer, int $options = 0): object

Создава нова мрзлива инстанца на дух од класата, прикачувајќи го initializer на него. Конструкторот не се повикува, а својствата не се поставуваат на нивната стандардна вредност. Сепак, објектот автоматски ќе се иницијализира со повикување на initializer првпат кога неговата состојба ќе се забележи или измени. Види Предизвикувачи на иницијализација and Секвенца на иницијализација.

Параметри

initializer
Иницијализаторот е повратен повик со следниот потпис:

initializer(object $object): void
object
На object се иницијализира. Во овој момент, објектот повеќе не е означен како мрзлив, а пристапот до него не предизвикува повторно иницијализирање.
На initializer функцијата мора да врати null или никаква вредност.
options

options Повик за фабрика со ист потпис и цел како во

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
може да биде комбинација од следниве знаменца:

Вратени вредности

Враќа мрзлива инстанца на дух. Ако објектот нема својства, или ако сите негови својства се статични или виртуелни, се враќа нормална (не-мрзлива) инстанца. Види исто така Животен циклус на мрзливи објекти.

Errors/Exceptions

Еден Грешка ако класата е внатрешна или ја проширува внатрешната класа освен stdClass.

Примери

Пример #1 Основна употреба

<?php

class Example {
public function
__construct(public int $prop) {
echo
__METHOD__, "\n";
}
}

$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function (Example $object) {
$object->__construct(1);
});

var_dump($object);
var_dump($object instanceof Example);

// Triggers initialization, and fetches the property after that
var_dump($object->prop);

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

lazy ghost object(Example)#3 (0) {
  ["prop"]=>
  uninitialized(int)
}
bool(true)
Example::__construct
int(1)

Види Исто така

Белешки од корисници 1 белешка

elitescripts2000 на yahoo точка com
пред 1 година
Simple helper function that makes it easier to understand:

<?php

function createLazyGhost(
    string $class,
    ?callable $initializer = null,
    ?array $propertySetterCallables = null
): object {
    $reflection = new ReflectionClass($class);

    return $reflection->newLazyGhost(function (object $object) use ($initializer, $propertySetterCallables) {
        // Initialize via the main initializer if provided
        if ($initializer) {
            $initializer($object);
        }

        // Set properties using the callables if provided
        if ($propertySetterCallables) {
            foreach ($propertySetterCallables as $property => $callable) {
                if (is_callable($callable)) {
                    $object->$property = $callable();
                }
            }
        }
    });
}

?>

This supports using either a main object initializer and/or property initializers.

Here's an example, where generating order IDs and calculating totals is considered expensive, so we only do it when necessary:

<?php

class Order {
    public string $orderId = '';
    public float $total = 0.0;
}

$initializer = function (Order $order) {
    $order->orderId = 'ORD12345';
};

$propertySetters = [
    'total' => fn() => 200.75,
];

// Lazy ghost with both an initializer and property callables
$lazyOrder = createLazyGhost(Order::class, $initializer, $propertySetters);

// We can now use $lazyOrder as normal, even though the properties haven't been calculated yet.

// Do something that triggers initialization
echo $lazyOrder->orderId . PHP_EOL;
echo $lazyOrder->total . PHP_EOL;

?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.