Можно ли использовать type hinting для Object?

Например, в метод должен приходить объект - любой.

Можно ли написать что-то вроде:

function process(Object $obj)
{
    //
}


? Аналогично проверке array.

Может есть какой-то класс или интерфейс, который наследуют все объекты PHP?
  • Вопрос задан
  • 235 просмотров
Решения вопроса 1
нет.

есть stdClass, но классы не наследуются от него

лучше выбрать какие объекты подходят и сделать для них интерфейс SomeInterface

ну или можно использовать is_object
if (!is_object($obj)) { /* return null or throw exception */ }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
how уже ответил и дал по поводу интерфейса дельное замечание. Но оно не раскрыто подробнее, новички в ООП не поймут. Исправляю ситуацию, так как это полезный трюк:

1. Создаем пустой интерфейс
interface Object {
   // Здесь ничего нет
}

Его название потом и будем использовать для type hinting.

2. Имплементируйте этот интерфейс в нужных классах:
class MyBaseClass implements Object {
   // ваш обычный код класса
}


3. Теперь все будет работать, например:
function myFunc (Object $obj);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы