За последние 24 часа нас посетили 22377 программистов и 1045 роботов. Сейчас ищут 646 программистов ...

Как при передаче обьекта в другой класс сохранить тип объекта?

Тема в разделе "PHP для новичков", создана пользователем Сереганек, 18 янв 2020.

Метки:
  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Вопрос наверное глупый, но не могу найти как его правильно решить.

    Например, в одном классе создаю коллекцию:

    Код (Text):
    1. $collection = new Collection([....]);
    Затем передаю ее в метод другого класса:

    Код (Text):
    1. Obj->method($collection);
    И в этом методе мне уже не доступны методы коллекции:

    Код (Text):
    1. $methodCollection = $collection;
    2. $methodCollection->?
    Какие есть способы решения?


    И второй похожий пример:

    В одном методе получаю $doc и передаю его в другой метод:

    Код (Text):
    1.         $doc = hQuery::fromUrl(
    2.             $url,
    3.             ['user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36']
    4.         );
    В другом методе я уже не могу применить к $doc селекторы:

    Код (Text):
    1. $doc->find($selector);
    Я понимаю почему это не работает, но как это правильно разрулить?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.744
    Симпатии:
    1.319
    Адрес:
    Лень
    изучайте

    public - внешний доступ all
    protected - внутренний доступ с наследием
    private - внутренний доступ, где прямой доступ как внешний/наследуемый(protected) заблокирован
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.552
    Симпатии:
    1.754
    Это с какой радости они вдруг не доступны? Все public методы доступны везде, куда бы вы свой объект не засунули
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.236
    Адрес:
    там-сям
    что ты хотел сказать этим знаком вопроса, что автокомплит твоего IDE не показывает тебе подсказку?
    помоги ему, напиши в phpdoc какой тип у объекта $methodCollection
    если это переменная, то так:
    /** @var App\Models\Hujnane $methodCollection */
    а если это параметр функции, то укажи тайпхинт параметра
    function xxx(App\Models\Hujnane $methodCollection)
    а если тип может быть разным, то и в подсказке смысла нет. как-то так :)
    --- Добавлено ---
    я думаю речь о подсказках IDE ↑↑↑ :D