Интересная задача с именами свойств

114
18 сентября 2021, 11:50

Есть кусок задачи:

$var = Class::method();
echo "[$var]"; \\ выводит "[text text]"
Class2::XXX()->$var->method2();

В упор не пойму, как можно обратиться к свойству $var, если там строка из 2 слов 'text text'?

Answer 1

Такого можно достичь при использовании перегрузки в php. Для этого есть магические методы, в данном случае нам поможет метод __get ( string $name ). Пример кода ниже. При вызове несуществующего свойства, класс вызовет метод __get() в котором Мы преобразуем входящее значение в нужное свойство и получим из него данные, в данном случае объект текущего класса например и вызовем еще 1 метод.

class Bar {
    public function method2() {
        return 'Hello World';
    }
}
class Foo {
    public $testtest = Bar::class;
    public function __get(string $name) {
        $myProp = str_replace(' ', '', $name);
        return new $this->$myProp;
    }
}
$myClass = new Foo();
$var = 'test test';
echo $myClass->$var->method2();
READ ALSO
phpmailer присылает пустое письмо

phpmailer присылает пустое письмо

Все срабатывает, но приходит письмо пустоеПодскажите в чем проблема

112
Как сделать возврат

Как сделать возврат

Есть текст в файле

122
systemd - php worker

systemd - php worker

Подскажите пожалуйста, как через systemd линукса создать php-worker ?

95