Есть кусок задачи:
$var = Class::method();
echo "[$var]"; \\ выводит "[text text]"
Class2::XXX()->$var->method2();
В упор не пойму, как можно обратиться к свойству $var, если там строка из 2 слов 'text text'?
Такого можно достичь при использовании перегрузки в 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();
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Создала страницу НовостиСделала ее страницей записей
Все срабатывает, но приходит письмо пустоеПодскажите в чем проблема