Можно ли вернуть класс определенного типа из функции?
class barCl {
function _construct() {
}
}
function fooBar() {
return (barCl) new barCl;
//^^^^^^^
}
Типы возврата были только что приняты в PHP 7. Тип возврата является частью объявления функции, а не ее определения. Если вы не создаете абстрактную функцию или интерфейс, это не будет иметь большого значения.
Объединение вашего кода с тем, что в этом RFC, вы бы сделали:
class barCl {
function _construct() {
}
}
function fooBar(): barC1 {
return new barCl;
}
В версиях php до 7 невозможно строго объявить тип возврата для вызываемого.
Поскольку вы уже делаете это, вы можете просто разыграть это так:
(Явно установить тип переменной в php невозможно! Также вы не можете привести свою переменную к типу вашего объекта! Ближайшее приведение будет (object)
что ты можешь сделать)
return (object) $xyObj;
Вы можете прочитать больше о жонглировании типов PHP: http://php.net/manual/en/language.types.type-juggling.php
И цитата оттуда:
тип переменной определяется контекстом, в котором используется переменная
FYI:
Вы пропустили одно подчеркивание в вашем конструкторе:
function _construct() {
//^ Here you need 2x _ as all magic methods do
}