0

我写了一个运行良好的 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.php这两个类共享来自 (和) 的共同内容,2. javascript.php但第 3 点(显示数据库内容的实现对它们不同)。

所以,我的想法是:我应该创建另一个类,Global并且类应该扩展这个类。在 Global 类中应该有一个子类必须定义的抽象类。于是设计变成了:photosetImporterpicImporter

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。

4

1 回答 1

0

没有特别的“正确”方式来做你正在寻找的事情(尽管有错误的方式)。如果不了解您的 javascript 类的功能,很难知道我会使用什么方法。

通常,我创建一个全局 DB 抽象类(我假设您的 sql 类是),然后在需要的地方从全局范围访问它。全局范围并不是邪恶的,特别是对于数据库访问之类的东西,它们不是您正在创建的任何其他类所固有的,但几乎在任何地方都需要。您的 javascript 类可能也是如此。

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

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

于 2013-04-10T21:43:02.577 回答