0

我正在尝试为一个针对不同供应商检查库存的网上商店编写一个 php 脚本。不幸的是,这样做的方法对于每个供应商来说都是完全不同的。我有一个工作例程,但与其编写六个略有不同的脚本,我宁愿使用相同的核心,并且为每个供应商提供单独的解析例程。这样我就可以通过编写一个新的解析文件并将其放在正确的位置来添加对新供应商的支持。

我最初设想的是

$ref = "123456";
$supplier = new Supplier("CompanyOne");
$product = $supplier->getproduct($ref);
echo "Product with supplier reference " . $ref . " is " . $product["name"];

供应商是

class Supplier{
    function __construct($sup = "") {
        $f = "supplier_" . $sup . ".php";
        if (file_exists($f)) {
             include_once $f;
        }
    }
}

getproduct() 在包含的文件中,因为每个文件都不同。

不过,我不确定这是否可行,因为我认为包含的例程最终会出现在构造函数的上下文中,而不是类本身。

这一定是一种常见的情况,但我已经花了很长时间研究包含、扩展、回调等,并尝试在谷歌上搜索所有方法来描述我想做的事情以找到最好的方法,但没有想出任何事物。

我在吠叫错误的树吗?最好的方法是什么,记住我想包含几组不同的代码,直到运行时我才知道它们的名称?

4

1 回答 1

3

为什么不为每个供应商扩展类。拥有您的基类,然后为每个供应商扩展它

class Supplier{
//do stuff
}

class Supplier_FirstCompany extends Supplier{
//do similar stuff, but different overwritten functions.
//still inherits functions from parent so not all need to be overwritten.
}

然后你甚至可以设置一个自动加载器,使用spl_autoload它会根据传递的要求/命名空间加载文件。这可能是最简单的方法。

于 2013-03-11T22:02:29.567 回答