это мой первый пост на stackoverflow!
Я занимаюсь разработкой фреймворка PHP, и мне нужно предоставить подсказку типа для объектов.
Я собираюсь перечислить пример структуры, которую я использую:
Database
класс, используемый как «точка входа». Этот класс подключается к базе данных с помощью PDO и имеет
UserSet
имущество
UserSet
класс, который расширяется Set
(задумано как совокупность пользователей)
Set
класс с SQL-подобными методамиUser
класс, только с настольным реквизитомпример
Set
имеет метод select, который возвращает массив пользователей через PDO;
$prepare = $this->database->prepare($this->sql);
$prepare->execute();
$prepare->setFetchMode(PDO::FETCH_CLASS, $this->TABLE);
return $prepare->fetchAll();
UserSet
переопределение выбрать через @method
Оператор, как это:
/** @method User|UserSet select() blablabla */
Таким образом, я получаю подсказку типа, когда присваиваю SELECT
$result = $database->UserSet->select()
но $ result имеет тип User и UserSet, и у меня во всплывающем окне кода завершения (Netbeans) есть подсказки от User и UserSet, хотя хотелось бы, чтобы он был типа UserSet
, и имеют User
подсказки только при повторении.
(что-то вроде UserSet < Пользователь>, думая как Java)
Возможно ли достичь этого?
Простите за длинный пост! Спасибо всем!
Прежде всего, если ваш select()
метод всегда возвращается return $prepare->fetchAll();
тогда ваш тип возврата подсказка в комментарии @method User|UserSet select()
неправильно, потому что PDOStatement::fetchAll()
возвращает массив.
Предполагая ваш $this->TABLE
является 'User'
тогда ваш select()
метод возвращает массив User
объекты. Попробуйте намекнуть это так: @method User[] select()
,
Других решений пока нет …