我正在尝试为网上商店编写一个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()在包含的文件中,因为每个文件都不同。
我不确定这会起作用,因为我认为包含的例程最终将在构造函数的上下文中而不是类本身。
这一定是一种常见的情况,但我花了很多年时间考虑包含,扩展,回调等等,并尝试用谷歌搜索所有方法来描述我想要做的事情,以找到最佳方法,想出任何东西。
我是在叫错树吗?这样做的最佳方法是什么,请记住我想要包含几组不同的代码,直到运行时才会知道这些代码?答案 0 :(得分: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
设置一个自动加载器,它将根据传递的要求/命名空间加载文件。这可能是最简单的方法。