Предыстория - села доучивать основные паттерны, для паттерна 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, как увидеть методы рефрексией - тоже не понимаю, нагуглить нить тоже не получается.
Буду благодарна за подсказку, как искать.