需要一些指导来重构我在OOP概念中的PHP代码

时间:2013-04-10 21:12:28

标签: php oop

我写了一个运行良好的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个课程:picImporterphotosetImporter。这两个类共享来自(1. sql.php2. javascript.php)的共同内容,但是第3点(显示数据库内容的实现对他们来说是不同的。)

所以,我的想法是:我应该创建另一个类GlobalphotosetImporterpicImporter类应该扩展此类。在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。

1 个答案:

答案 0 :(得分:0)

没有特别“正确”的方式去做你想要的事情(虽然有错误的方法)。很难知道在没有理解你的javascript类的用途的情况下我会使用什么方法。

通常,我创建一个单独的全局数据库抽象类(我假设你的sql类是这样),只需从全局范围访问它,无论我需要它。全局范围并不是邪恶的,特别是对于像数据库访问这样的东西,这些东西并不是你正在创建但几乎无处不在的其他类所固有的。您的javascript类也可能如此。

也就是说,如果你需要这种抽象来在你的应用程序中保持一致的设计,那么我认为你在这里做的事情没有问题,这似乎是一种逻辑方法。

如果您正在寻找最佳实践,请搜索“PHP设计模式”,但一般来说,我使用PHP的方法是保持简单易用。这可能意味着使用设计模式,或者它可能意味着更基本的方法,取决于。