我写了一个运行良好的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。
答案 0 :(得分:0)
没有特别“正确”的方式去做你想要的事情(虽然有错误的方法)。很难知道在没有理解你的javascript类的用途的情况下我会使用什么方法。
通常,我创建一个单独的全局数据库抽象类(我假设你的sql类是这样),只需从全局范围访问它,无论我需要它。全局范围并不是邪恶的,特别是对于像数据库访问这样的东西,这些东西并不是你正在创建但几乎无处不在的其他类所固有的。您的javascript类也可能如此。
也就是说,如果你需要这种抽象来在你的应用程序中保持一致的设计,那么我认为你在这里做的事情没有问题,这似乎是一种逻辑方法。
如果您正在寻找最佳实践,请搜索“PHP设计模式”,但一般来说,我使用PHP的方法是保持简单易用。这可能意味着使用设计模式,或者它可能意味着更基本的方法,取决于。