@deepin

Можно ли так передавать экземпляр?

public function one()
{
    $Obj = new Model();
    $this->two($Obj);
}

public function two($Obj)
{
    $Obj->method();
}


почему спрашиваю: всё работает, но шторм подсвечивает method(), что он не найден
  • Вопрос задан
  • 96 просмотров
Решения вопроса 2
VladimirAndreev
@VladimirAndreev
php web dev
two(Model $Obj)
Ответ написан
Konata69lol
@Konata69lol
backend php laravel
На практике использую 3 варианта:

1. type hint - two(Model $Obj)
Когда мы четко знаем, с каким типом объекта предстоит работать. Строгая проверка по типу аргумента в рантайме.

2. php doc block для метода/функции
/**
* $param Model $Obj
*/
function two(Model $Obj) {...}

Можно перечислить несколько возвращаемых типов. Проверки нестрогие, на рантайм не влияет, только IDE подсветит, если что-то не так.

3. php doc block инлайновый
/** @var Model $Obj */
$Obj->method();

Изредка использую для помощи автокомплита, когда другими способами нельзя указать IDE, что это за объект.

В целом придерживаюсь такого подхода: лучше работать с известными, строго определенными типами, чем непонятно с чем.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
HTML Academy Санкт-Петербург
от 110 000 до 130 000 руб.
от 55 000 до 80 000 руб.
WACDAQ Москва
от 120 000 руб.