3

次のようなことを実行したいと思います。メソッドを呼び出して「turn」と言い、次に「turn」をさまざまなデータ型に異なる方法で適用します。たとえば、「screwdriver」オブジェクト/パラメータで「turn」を呼び出すと「turnScrewdriver」が使用されます。 「steeringWheel」オブジェクト/パラメータを使用して「turn」を呼び出す「turn」メソッドは、「turnSteeringWheel」メソッドなどを使用します。さまざまな処理が行われていますが、どちらも「turn」と呼ばれます。

呼び出し元のコードが関係するタイプを気にする必要がないように、これを実装したいと思います。この例では、「回転」は、「ドライバー」、「ステアリングホイール」、または「回転」する必要がある可能性のあるものを「回転」させるのに十分です。

C ++では、オーバーロードを使用してこれを行います-そしてC ++はデータ型/署名に基づいて物事を分類します-しかし、これはPHPでは機能しません。

どこから始めればよいかについての提案はありますか?switchステートメントは明らかですが、(よりエレガントな)OOソリューションが必要だと思います。いいえ?

TIA

4

3 に答える 3

2

これでうまくいくと思います...

function turn($object) {
    if(method_exists($object, 'turn'.ucwords(get_class($object))) {
        $fname = 'turn'.ucwords(get_class($object));
        return $object->$fname();
    }

    return false;
}
于 2009-01-25T19:08:05.700 に答える
0

ここでの手順については、PHPマニュアルを確認する必要があります

于 2009-01-25T19:03:42.387 に答える