glaphire
@glaphire
PHP developer

Как увидеть реализацию методов SplObjectStorage?

Предыстория - села доучивать основные паттерны, для паттерна Observer нашла пример реализации на основе SplSubject и SplObserver. В статье увидела, что свойство $observers можно инициализировать не простым массивом, а объектом SplObjectStorage.
Код из примера:
class Subject implements \SplSubject
{
    private $observers;
    
    public function __construct()
    {
        $this->observers = new \SplObjectStorage;
    }

    public function attach(\SplObserver $observer): void
    {
        echo "Subject: Attached an observer.\n";
        $this->observers->attach($observer);
    }

    public function detach(\SplObserver $observer): void
    {
        $this->observers->detach($observer);
        echo "Subject: Detached an observer.\n";
    }
    //other code
}

Думаю - класс, attach и detach уже реализованы. Через PhpStorm захожу посмотреть реализацию - но я ее не вижу!
В стабах нет тел функций.
фрагмент файла стаба SPL_c1.php

/**
 * The SplObjectStorage class provides a map from objects to data or, by
 * ignoring data, an object set. This dual purpose can be useful in many
 * cases involving the need to uniquely identify objects.
 * @link https://php.net/manual/en/class.splobjectstorage.php
 */
class SplObjectStorage implements Countable, Iterator, Serializable, ArrayAccess {

        /**
         * Adds an object in the storage
         * @link https://php.net/manual/en/splobjectstorage.attach.php
         * @param object $object <p>
         * The object to add.
         * </p>
         * @param mixed $data [optional] <p>
         * The data to associate with the object.
         * </p>
         * @return void 
         * @since 5.1.0
         */
        public function attach ($object, $data = null) {}


Я не понимаю, как и где искать исходники - это ведь не уровень интерпретатора, чтобы копаться в сишных файлах php, как увидеть методы рефрексией - тоже не понимаю, нагуглить нить тоже не получается.

Буду благодарна за подсказку, как искать.
  • Вопрос задан
  • 224 просмотра
Решения вопроса 2
DevMan
@DevMan
в стабах и не нужна реализация, только сигнатуры.
реализацию можно увидеть в исходниках пыха, но там будет уже не пых.
Ответ написан
Комментировать
glaphire
@glaphire Автор вопроса, куратор тега PHP
PHP developer
DevMan прав, это все в сишных исходниках, что-то меня перемкнуло - раз стаб на php, значит и класс реализован на php.
Реализации на си в ядре php:
SplObjectStorage::attach
SplObjectStorage::detach
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы