Intereting Posts
PHP – Проверка электронной почты Как импортировать категории и изображения в Volusion с помощью API Volusion в PHP Почему ввод php: // может быть прочитан более одного раза, несмотря на то, что документация говорит иначе? Как программно определить корень документа в PHP? Запрос ОЧЕНЬ медленный (> 30 секунд) в php, но быстрый при запуске запроса в phpmyadmin Общие таблицы Drupal, но из другой базы данных Невозможно обрезать изображение при первом изменении размера Opencart: Как включить скрипт на определенные страницы? Почему функция crypt () PHP возвращает одно и то же для двух разных строк? Найти точную строку внутри строки Magento Search возвращает все продукты Нужна помощь с reCAPTCHA – продолжайте получать неверный код-captcha-sol Случай MySQL с вставкой и обновлением Mysql запрашивает самую последнюю запись с завихрением Как использовать XMLReader для анализа множественных, идентично названных атрибутов элемента / подэлемента XML

Переменная phpdoc класса ArrayObject

У меня есть класс, который расширяет ArrayObject

class Collection extends ArrayObject

Я знаю, что могу определить массив объектов, используя этот код:

/* @var $userArray Model_User[] */

Но как я могу определить переменную $userArray как настраиваемый массив класса Collection который содержит объекты класса Model_User ?

Без изменения class Collection или его phpdoc. Я хочу использовать ту же class Collection для разных массивов объектов.

Это не то же самое, что тип типа PHPDoc для массива объектов? , потому что в этом предмете обсуждение связано с общими массивами в php, которые phpdoced как /* @var $userArray Model_User[] */ в то время как мой вопрос относится к настраиваемому массиву сборки, который, если phpdoced мой метод выше, не будет вводить подсказку методы класса массива custom build, например $userArray->echoChanges() потому что он будет считать его общим массивом, а не массивом класса Collection. И да $userArray также действует как массив, поэтому он должен вводить содержимое массива hint $userArray[3]->name .

Solutions Collecting From Web of "Переменная phpdoc класса ArrayObject"

PSR-5: PHPDoc предлагает форму новизны в стиле Generics.

Синтаксис

 Type[] Type<Type> Type<Type[, Type]...> Type<Type[|Type]...> 

Значения в коллекции МОГУТ даже быть еще одним массивом и даже другой коллекцией.

 Type<Type<Type>> Type<Type<Type[, Type]...>> Type<Type<Type[|Type]...>> 

Примеры

 <?php $x = [new Name()]; /* @var $x Name[] */ $y = new Collection([new Name()]); /* @var $y Collection<Name> */ $a = new Collection(); $a[] = new Model_User(); $a->resetChanges(); $a[0]->name = "George"; $a->echoChanges(); /* @var $a Collection<Model_User> */ 

Примечание. Если вы ожидаете, что IDE сделает помощь по коду, тогда возникает еще один вопрос о том, поддерживает ли IDE нотацию коллекций в стиле Generic стиля PHPDoc.