私は約を作成する必要があります。5 ~ 7 クラスの場合、すべてのクラスに多数のメンバーが含まれます (各クラスに 20 人のメンバーが含まれるとします)。次のように、パブリック アクセスを使用してそれらを作成できます。
class A {
public $myPropertyOne = '';
public $myPropertyTwo = '';
...
}
もちろん、これらのメンバーを非公開にし、各プロパティの get/set メソッドを作成する私の好みの方法です。いえ
class A {
private $myPropertyOne = '';
private $myPropertyTwo = '';
public function getMyPropertyOne() {
return $this->myPropertyOne;
}
public function setMyPropertyOne($myPropertyOne) {
$this->myPropertyOne = $myPropertyOne;
}
public function getMyPropertyTwo() {
return $this->myPropertyTwo;
}
public function setMyPropertyTwo($myPropertyTwo) {
$this->myPropertyTwo = $myPropertyTwo;
}
}
しかし、クラスには 20 個のプロパティがあることを考えると、これに加えて 40 個のメソッドを追加する必要があります。そして、ここでの私の懸念は、これによりスクリプトがどのように遅くなり、より多くのメモリが必要になるかということです (このようなクラスがいくつかあることを思い出してください)。
別の解決策として、魔法の関数 __set、__get を使用することもできますが、開発 IDE のコード補完では重要なプロパティが提案されないため、そうしたくありません。
これがコンパイルされた言語 (C++ など) である場合、質問はなく、ゲッター、セッターを使用してソリューションを使用しますが、PHP はインタープリター言語であるため、スクリプトで使用する RAM を減らし、できるだけ高速にすることに関心があります。
事前に感謝します。この質問に関するご意見をお待ちしております。
私の意見
ご回答いただきありがとうございます。誰かがこの質問に対する回答を探している場合に備えて、私の意見を共有したかっただけです。
これはオプティマイザのタスクであるため、パフォーマンスを気にするべきではないという人たちには完全には同意できません。これは重要な要素だと思います (少なくとも私にとっては)。PHP などのインタープリター言語を扱うときは、常にメモリと速度について考える必要があります (これは、私が DOS 用のシステム アプリを開発していたときのことを思い出します :) そして、常に貧弱な CPU と合計 RAM のキロバイトに制限されていたので、追加で節約できれば幸せです。バイト)、PHP開発では、追加するサーバーの数に関係なく、ユーザー数は常に高くなるため、クラシック/セーフ/適切な方法に従うか、これを回避するかを常に決定する必要があります。速度またはメモリがいくらか向上します。
だから....私の意見では、ここでの最善の方法は、すべてのメンバーにパブリックアクセスを使用し、すべてのプロパティのゲッター/セッターを避け、値の前にデータの検証または初期化が必要なプロパティの get/set メソッドでプライベートアクセスを使用することです。悩ませる。
例えば:
class B {
public $myPropertyOne = '';
public $myPropertyTwo = '';
private $myPropertyThree = array();
public function getMyPropertyThree() {
return $this->myPropertyThree;
}
public function setMyPropertyThree($val) {
if(!is_array($val)) {
return;
}
$this->myPropertyThree = $val;
}
}
私の質問に時間を割いていただきありがとうございます!