Указание типа возврата из функции

Можно ли вернуть класс определенного типа из функции?

class barCl {
function _construct() {
}
}

function fooBar() {
return (barCl) new barCl;
//^^^^^^^
}

2

Решение

Типы возврата были только что приняты в PHP 7. Тип возврата является частью объявления функции, а не ее определения. Если вы не создаете абстрактную функцию или интерфейс, это не будет иметь большого значения.

Объединение вашего кода с тем, что в этом RFC, вы бы сделали:

class barCl {
function _construct() {
}
}

function fooBar(): barC1 {
return new barCl;
}

В версиях php до 7 невозможно строго объявить тип возврата для вызываемого.

4

Другие решения

Поскольку вы уже делаете это, вы можете просто разыграть это так:

(Явно установить тип переменной в 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

}

Магические методы

0

По вопросам рекламы [email protected]