Как фреймворк Themosis может вызывать функцию в классе, который не существует?

0

Я взглянул на структуру Themosis для WordPress и увидел в своих документах, что для создания настраиваемого типа сообщений вы бы назвали:

PostType::make('slug-books', 'Books', 'Book')->set();

Я предположил, что PostType должен быть классом со статической функцией make. Однако, глядя на их код, я не PostType класса PostType.

Как они могут вызывать функцию в классе, который не существует?

Я могу видеть, как класс Application используется для хранения instances классов при их вызове, но я не вижу, как приведенный выше код запускает создание классов.

Теги:
class
static

1 ответ

1
Лучший ответ

Я разработчик платформы Themosis. Этот "трюк" очень вдохновлен рамкой Laravel, где все кредиты.

Мы используем шаблон фасада для того, чтобы это работало. В основном мы используем магический метод PHP __callStatic(), а за ним привязываем статический метод к методу экземпляра.

Проверьте документацию здесь: http://php.net/manual/en/language.oop5.overloading.php#object.callstatic

Ещё вопросы

Сообщество Overcoder
Наверх
Меню