コミュニティに新たに加わり、OOPメソッドへのアプローチに関するベストプラクティスガイダンスがあるかどうか疑問に思っていますか?プロパティに影響を与えるメソッドと値を返すメソッド
プライベートメソッドはプロパティ値自体を割り当てるか、呼び出しメソッドによって割り当てられる値を返すべきであると想定します(インスタンス化/ 1回のルーチンなど)。
には、以下のPHPの例を考えてみましょう:
<?php
class MyClass1
{
private $foo;
public function __construct()
{
$this->setFoo();
}
private function setFoo()
{
// no params
// returns void
$this->foo = 6;
}
}
class MyClass2
{
private $foo;
public function __construct()
{
$this->foo = $this->setFoo();
}
private function setFoo()
{
// no params
// returns value
return 6;
}
}
class MyClass3
{
private $foo;
public function __construct()
{
$this->foo = $this->setFoo(3);
}
private function setFoo($val)
{
// accepts param
// returns value
return $val;
}
}
?>
は用/ MyClass1アプローチに対する重大な理由がありますか?手続きおよびアクセスされている方法/むしろパラメータを受け入れ、値を返すよりも、直接プロパティに割り当てると内蔵
すなわち(そう本質的に全てにdocblockが@returnボイドを含む)
ホープこれは理にかなって - 主に好奇心:)
多くのおかげで、
'setFoo'は、** fooを渡された値に設定する必要があります。今はゲッターとして機能します。セッターやゲッタの使い方を学ぶのに時間を費やしてください。 http://thisinterestsme.com/php-getters-and-setters/ – Justinas
デフォルト値を直接定義することができます: 'private $ foo = 6;' ...おそらくちょうどhttp://php.net/ manual/en/language.oop5.php –
Class2は意味がありません。あなたは基本的にそこで定数として6を使用しているので、それを定数にして、メソッドを全く持たないかもしれません。それをメソッドにする場合は、fooが設定されていなければ 'setFoo'と呼ばないでください。 Class1が優れています。現実のシナリオでは、この設定者はしばしば何らかの形で外界にさらされ、複数回呼び出される可能性があります。コンストラクタからのみ呼び出す場合は、コンストラクタでプロパティをすぐに設定するか、プロパティ宣言自体で値を指定することもできます。 – GolezTrol