0

さまざまなサプライヤーに対して在庫をチェックする Web ストア用の php スクリプトを作成しようとしています。残念ながら、その方法はサプライヤーごとにまったく異なります。私は 1 つの作業ルーチンを持っていますが、わずかに異なるスクリプトを半ダース書くよりも、同じコアを使用し、サプライヤーごとに個別の解析ルーチンを使用したいと考えています。そうすれば、新しい解析ファイルを作成して適切な場所にドロップするだけで、新しいサプライヤのサポートを追加できます。

私はもともと次のようなものを想定していました

$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 に答える