Динамический тип возврата с подсказкой типа в PHP? - PullRequest
2 голосов
/ 21 декабря 2009

Для стандартного метода, я знаю, можно указать тип возврата в комментариях, например:

/**
 * Load this entity from the database with the specified primary key.
 * @param int $Key
 * @return BaseEntity
 */
public static function Load($Key)
{ ... }

Я хотел бы изменить тип возвращаемого значения в зависимости от подкласса. Что-то вроде:

 * @return __CLASS__

На других языках это можно сделать с помощью шаблонов и т. Д. Есть ли у меня какие-либо опции для PHP?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2009

Нет. Нет, если вы не кодируете что-то для генерации этого кода.

Это комментарии, они не изменят способ выполнения кода. Они могут использоваться вашей IDE для подсказок кода или PHPDoc для генерации документации. Эти приложения могут иметь способы сделать что-то вроде того, что вы хотите, проверьте их документацию. Однако комментарии не влияют на работу вашего кода.

1 голос
/ 21 декабря 2009

Вы хотите расширить свой BaseEntity, скажем, SubclassEntity и, так сказать, сжать интерфейс. Но, сжатие ваш интерфейс ломает ваш интерфейс.

Концептуально, Load всегда должен возвращать BaseEntity, даже если вы знаете, что это действительно SubclassEntity. В действительности, если вы знаете, что возвращаемый объект является SubclassEntity, просто добавьте это после:

$obj = $container->Load(123); /* @var $obj SubclassEntity */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...