AnrDaemon
Продвинутый новичок
Есть код типа такого:
Хочется же красивого…
Результат, правда, слегка предсказуем - фейл "нет такого метода".
Я, видимо, хочу от PHP чего-то очень странного?
Или можно как-то это сделать более прямо, чем
Причём самое смешное, что
.
Что, call_user_func звать на помощь?
PHP:
class Logger {
public function addMessage($msg){
print($msg);
}
}
class Service {
protected $logger;
public function __construct(Logger $logger){
$this->logger = $logger;
}
public function action(){
$this->logger->addMessage('…');
}
}
$x = new Service(new Logger());
$x->action();
PHP:
class Logger {
public function __invoke($msg){
print($msg);
}
}
class Service {
protected $logger;
public function __construct(Logger $logger){
$this->logger = $logger;
}
public function action(){
$this->logger('…');
}
}
$x = new Service(new Logger());
$x->action();
Я, видимо, хочу от PHP чего-то очень странного?
Или можно как-то это сделать более прямо, чем
PHP:
public function action(){
$logger = $this->logger;
$logger('…');
}
Код:
is_callable($this->logger) == 1
Что, call_user_func звать на помощь?