3

私は最近、PHP のスケーラビリティーのためにコードを最適化する方法に関する記事を読んでいます。私が今日読んだ記事のいくつかは、追加のメソッドを使用してクラスからオブジェクトを単純に返すことを思いとどまらせていました。

基本的に、彼らはこう言います:

このようなクラスがある場合:

class myClass
{

public $something;

public function setSomething($val)
{

$this->something=$val;

}//function end

}//class end

$myClassInstance=new myClass;

クラスプロパティを取得したい場合は、次の$somethingようにする必要があります。

//echo $something from myClass
echo $myClassInstance->something;

そしてこれではありません:

//echo $something from myClass using an additional method (getSomething()) that returns the property
echo $myClassInstance->getSomething();

速度差があるからです。推奨されない方法は遅い ( $myClassInstance->getSomething()) ため、推奨されません。

しかし、非常に多くの人がまだ推奨されない方法 (チュートリアル、コード例など) を使用しているのを目にします。なんらかの理由でプロパティをプライベートに設定する必要があるかどうかは理解できましたが、通常はそうではありませ

だから私の質問は、落胆した方法を使用することに欠けている利点や何かがありますか? もしそうなら、何?

4

2 に答える 2

5

誰かが使用する理由gettersetterメソッドは、によるものencapsulationです。直接アクセスすると、との$something両方がレンダリングされますが、経由でアクセスすると、代わりに呼び出し元にコピーが提供されます(つまり、元の値は変更されません)。readablewriteablegetSomething()

于 2012-07-10T14:44:48.183 に答える
2

後でフィルターなどのロジックを「GetTitle」に適用したり、特別なロジックを導入して出力の一部を変更したりしたい場合はどうでしょうか。これらのものがいつ飛び出し始めるかはわかりません。

さらに、関数アクセサーのスタイルが遅いと言う人は、100万のループを使用してベンチマークを行っていますが、真剣に、1ページに100万のタイトルを表示する予定ですか?

于 2012-07-10T14:45:37.590 に答える