1

私はフォームジェネレーターを作成していますが、実際には特定の要素に取り組んでいます: DuplicableElement.

DuplicableContainerフォームには、 jQuery プラグイン ( sheepit ) を使用してそれ自体を複製する特別なコンテナー ( ) を含めることができます。

これを機能させるために、 はその子にDuplicatableContainerのみ持つことができます。これDuplicableElementは、それらに固有のものがたくさんあるためです。

問題は、php が多重継承を許可していないことです。(php "Traits" で動作するはずですが、実際にはサポートされていません)。拡張要素と通常の要素をDuplicableTextBox同時に作成することはできません。DuplicableFormElementTextBox

私が十分に明確だったことを願っています。

編集:「特性」があっても問題はまだ存在し、きれいな解決策が見つかりません。

4

2 に答える 2

2

要素にビヘイビア/プラグインを注入して、特性の機能を提供することもできますが、公式のサポートはありません。

<?php
class Car {
  public $behaviors = array();

  public function __call($method, $params) {
    foreach($this->behaviors as $behavior) {
      if (method_exists($behavior, $method)) {
        return call_user_func_array(array($behavior, $method), $params);
      }
    }
  }
}

class Engine {
  public function start() { echo 'Started'; }
}

$car = new Car;
$engine = new Engine;
$car->behaviors[] = $engine;
$car->start(); // Started
于 2012-05-15T18:45:41.927 に答える
1

DuplicableElements は特にクラスである必要がありますか? オブジェクトへのパブリック インターフェイスが重要な場合は、DuplicableElement代わりにインターフェイスを作成できます。クラスは、1 つのクラスを拡張し、一度に複数のインターフェイスを実装できます。

于 2012-05-15T18:45:00.257 に答える