2

これは何よりもベストプラクティスの質問です。

私がフォームを持っているとしましょう:

<form action="self.php" method="POST">
    <input type="text" name="aA" />
    <input type="text" name="aB" />
    <input type="text" name="aC" />
</form>

PHP の対応するクラス:

class A
{
    public function getA(){
        return $this->a;
    }

    public function setA($a){
        $this->a = $a;
    }

    public function getB(){
        return $this->b;
    }

    public function setB($b){
        $this->b = $b;
    }

    public function getC(){
        return $this->c;
    }

    public function setC($c){
        $this->c = $c;
    }

    private $a;
    private $b;
    private $c;
}

そして、どういうわけか、フォームからデータを送信することができました。ここで、フォーム データを A のインスタンスに変換する必要があります。

私が現在行っていることは次のとおりです。

abstract class AStrategy {
    public function doMapping(){
        $a = new A();
        if (isset($_POST['aA']) === true) {
            $a->setA($_POST['aA']);
        }
        ... (same for b and c)
        return $a; //A completely mapped object
    }
}

そして、これがかなり悪い習慣であることを私は非常に認識しています(DRYに違反しています)。

  • これを行うためのベストプラクティスは何ですか?
  • 複雑なオブジェクト ツリーがある場合はどうすればよいですか? 関連するオブジェクトを同時にマップする必要がある場合はどうすればよいですか?
  • 誰がマッピングを行う必要がありますか? 誰がオブジェクトなどを作成する必要がありますか?

よろしくお願いします。

4

1 に答える 1

5

単純なオブジェクトの場合、コンストラクターを使用します。

public function __construct($a, $b, $c) {
    $this->a = $a;
    $this->b = $b;
    $this->c = $c;
}

より複雑なオブジェクトの場合は、Mapperを使用します:

class AMapper {
    public function fetch(A $aObject) {}
}
于 2013-09-01T06:39:28.210 に答える