@avtorlego

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

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

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

как мне поймать users и get?
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ответы на вопрос 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();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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