データ マッピング パターンを使用する際のベスト プラクティスは、どのような可視性で得られるのでしょうか?
プライベート/パブリック/保護
保護されている場合、マッパー クラスの save() メソッドで getters() を使用する必要があります。
プライベートとパブリックの場合、 $user->id; を実行できます。マッパークラスで。最も理にかなっていることは何ですか?
データ マッピング パターンを使用する際のベスト プラクティスは、どのような可視性で得られるのでしょうか?
プライベート/パブリック/保護
保護されている場合、マッパー クラスの save() メソッドで getters() を使用する必要があります。
プライベートとパブリックの場合、 $user->id; を実行できます。マッパークラスで。最も理にかなっていることは何ですか?
私の意見では、このようによく使用します。プロパティは保護されており、私のクラスはゲッターとセッターに魔法のメソッドを使用しています。私のやり方では、あなたは両方を行うことができます。setter
-methods の使用について私が気に入っている最も良い点は、流暢なインターフェースを使用していることです。
/**
* Handling non existing getters and setters
*
* @param string $name
* @param array $arguments
* @throws Exception
*/
public function __call($name, $arguments)
{
$type = substr($name, 0, 3);
// Check if this is a getter or setter
if (in_array($type, array('get', 'set'))) {
$property = lcfirst(substr($name, 3));
// Only if the property exists we can go on
if (property_exists($this, $property)) {
switch ($type) {
case 'get':
return $this->$property;
break;
case 'set':
$this->$property = $arguments[0];
return $this;
break;
}
} else {
throw new \Exception('Unknown property "' . $property . '"');
}
} else {
throw new Exception('Unknown method "' . $name . '"');
}
}
/**
* Magic Method for getters
*
* @param string $name
* @return mixed
*/
public function __get($name)
{
$method = 'get' . ucfirst($name);
return $this->$method();
}
/**
* Magic Method for setters
*
* @param string $name
* @param mixed $value
*/
public function __set($name, $value)
{
$method = 'set' . ucfirst($name);
return $this->$method($value);
}
流れるようなインターフェイスを使用すると、次のようになります。
$post->setTitle('New Post')
->setBody('This is my answer on stackoverflow.com');
単一の可能性に関するいくつかの考え:
プライベート プロパティを使用すると、モデル クラスを拡張して一部の機能を再利用できなくなります。
変数への変更を傍受する方法はありません。設定で何かをする必要がある場合があります。
私にとって最良の方法です。プロパティは公に変更可能ではないため、他の開発者に、追加機能を持つプロパティのゲッターとセッターを作成するように強制しています。また、私の意見では、このようにして、他の人がモデルクラスを誤用するのを防ぐことができます。