Задать вопрос
@avtorlego

Как сделать __call в __call?

Есть класс api
там есть __call, но мне нужно ловить не первое обращение к функе а 2,
типо я вызываю так: $api->users_get();

а хочу сделать $api->users->get();

как мне поймать users и get?
  • Вопрос задан
  • 248 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Ahen
@Ahen
Универсальный дилетант
class Foo
{
  public function do_something()
  { 
    return $this; 
  }

 public function do_something_else() 
 {
   return $this; 
  }
}

$foo->do_something()->do_something_else();
Ответ написан
DarkRaven
@DarkRaven
разработка программного обеспечения
Вот такой вариант не подойдет?
<?php

class Catcher 
{
    public function __call($arg0, $arg1)
    {
        if ($arg0 === 'doX')
        {
            return $this->doX;
        }
        
        throw new ErrorException('Method not found!');
    }
    
    private $doX;
    
    public function __construct()
    {
        $this->doX = new DoX();
    }
    
}

class DoX
{
    public function __call($arg0, $arg1)
    {
        return print_r([$arg0, $arg1], TRUE);
    } 
}


function dbg() 
{
    $args = func_get_args();
    
    foreach($args as $arg)
    {
        echo strtr('<pre>:text</pre>', array(
            ':text' => print_r($arg, TRUE),
        ));
    }
}

echo (new Catcher)->doX()->doY();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽