【发布时间】:2013-04-02 22:10:50
【问题描述】:
我写了一个运行良好的 wordpress 插件。然而,它只是工作,但这里没有 OOP,因为当时有必要尽快构建一些东西。看了一些文献,发现由于菱形问题,php不支持多重继承。
当前情景:
Flickr
--pic importer
----1. sql.php
----2. javascript.php
----3. call to show database contents
--photoset importer
----1. sql.php
----2. javascript.php
----3. call to show database contents
在这里,我创建了 2 个类:picImporter 和 photosetImporter。这两个类共享来自(1. sql.php 和 2. javascript.php)的共同内容,但第 3 点(显示数据库内容的实现对它们来说是不同的)。
所以,我的想法是:我应该创建另一个类Global 和photosetImporter,picImporter 类应该扩展这个类。在 Global 类中应该有一个子类必须定义的抽象类。于是设计就变成了:
Class Global{
//$sql comes sql.php,
//$javacript comes javascript.php,
abstract protected function showDatabaseContents();
}
Class picImporter extends Global{
protected function showDatabaseContents() {
//implementation using **$sql** from base
}
}
Class photosetImporter extends Global{
protected function showDatabaseContents() {
//implementation using **$javascript** from base
}
}
在我继续之前,我只想知道我是否在正确的轨道上,如果可能的话,进一步指导。
谢谢, -S。
【问题讨论】:
-
你听说过
has-a/is-a关系/依赖注入/可靠原则吗? -
没有。你能用一些简单的例子指导我吗?乍一看,维基百科的文章似乎令人生畏,因为我对此一无所知。
-
刚开始阅读并吸收。除非它已经在您的脑海中并且您处理一个新问题并且这些原则作为解决它的逻辑方法出现在您身上,否则它可能没有意义。
-
是的,现实世界的场景是学习这一点的最佳方式。