根据你提供的例子,我可以理解你的困惑。这真是一个糟糕的使用类的方法。。。而且,仅仅因为使用了类,就不会产生系统OOP。
在混合的情况下,它们只是使用一个类来命名其函数的名称空间。考虑到Hybrid是一个主题框架,这样子主题就可以重用函数名,而无需开发人员担心名称冲突。在许多情况下,主题框架(父主题)是如此复杂,许多子主题开发人员永远无法确切了解引擎罩下的情况。
如果Hybrid没有使用类结构,则子主题开发人员需要知道所有现有函数调用是什么,以便避免重复使用名称。是的,您可以在所有函数前面加上一个唯一的slug,但如果您开发更多希望使用相同功能的系统,那么代码就很难读取、维护,并且固有的不可重用性。
回答您的问题?这样做有什么意义?显然,您不会同时使用同一主题的两个或多个实例。
不,您不会使用同一主题的两个或多个实例。但正如我所说,在这种情况下,将类结构视为函数的名称空间,而不是创建传统的对象实例。将所有内容集中到一个类中,或者实例化它以调用方法(myClass->method();
) 或直接调用方法(myClass::method();
) 是一种以可读、可重用的方式命名事物的非常干净的方法。
当然你可以用这样的东西myClass_method();
相反,如果您想在另一个主题、插件或其他框架中重用这些代码,您必须返回并更改所有前缀。将所有内容保持在一个类中更干净,并允许您更快地重新开发和重新部署。
让我们假设插件是为名称空间这样做的(这很荒谬),但是主题的借口是什么呢?我错过什么了吗?
在大多数情况下,我都同意你的看法。然而,这一多数正在迅速减少。我在多站点安装上托管了几个使用相同主题变体的站点。与其一次又一次地重复相同的主题,只留下一些细微的差异,我有一个;“类别”;对于父主题和所有子主题,扩展该类。这使我能够为每个站点定义自定义功能,同时仍然保持整个网络的一致性。
一方面,主题开发人员可能会选择一种基于类的方法来命名其功能(如果您在一个反复使用相同代码块的环境中工作,这并不荒谬)。另一方面,主题开发人员可以选择基于类的方法,以便于通过子主题进行扩展。
编写这样的主题有什么好处?
如果你只在网站上使用Hybrid,那么作为最终用户,你几乎没有什么优势可言。如果您正在为Hybrid构建子主题,那么名称空间和可扩展性会带来好处。如果你为ThemeHybrid, 其优势在于跨其他项目(Prototype、Leviathan等)快速、高效地重用代码。
如果您是一个喜欢混合的特定特性而不是整个主题的主题开发人员,那么其优势在于在非混合项目中快速、高效地重用代码(假设它也是GPL)。