Themosis框架如何能够调用不存在的类中的函数


How is the Themosis framework able to call a function in a class that doesn't exist?

我正在查看WordPress的Themosis框架,并在他们的文档中看到,要创建自定义帖子类型,您可以调用:

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

我假设PostType一定是一个具有静态函数make的类。但是,查看他们的代码,我发现没有PostType类。

他们如何能够调用不存在的类中的函数?

我可以看到 Application 类在调用时如何使用它们来存储instances类,但我看不出上面的代码将如何触发类创建。

我是Themosis框架背后的开发人员。这个"技巧"受到所有学分的Laravel框架的高度启发。

我们正在使用立面图案来使其正常工作。基本上我们使用PHP魔术方法__callStatic(),后面我们让它将静态方法链接到实例方法。

在此处查看文档:http://php.net/manual/en/language.oop5.overloading.php#object.callstatic