質問

オブジェクト指向プログラミングが良いかどうかについては多くの議論があります。ただし、Php で OOP を使用すると速度が遅くなります。より高速な手続き型プログラミングと、より低速な OOP を使用するのは得策でしょうか (ページが読み込まれるたびにクラスを開始する必要があり、大きな Web サイトでは遅くなり始めるためです)。

さらに重要なのは、クラス内に何かをラップして静的関数を使用するのが良いのか、それとも単にプレフィックスが付いた多数の関数を使用する方が良いのかということです。wp_function()。

役に立ちましたか?

解決

はい、OOPを使用するために、ほとんど常に良い考えです。 OOPは簡単な言語accrossに転送されることが可能であるコーディング、および大部分のスタイルをコーディングスタイルだからです。

彼らは特定の言語を使用しているため、

人はコーディング・スタイルを使用しないでください。申し出の良い方法をコーディングのスタイルは、彼らが望ましいと感じる事をするので、人々は、コーディングスタイルを使用しています。したがって、限り、基本的な要素は、(などの継承、クラスのプロパティ、)があるので、それは常にそのコーディングスタイルで書くことが実行可能になります。

いいえ、おそらくそれらにアクセスするための手続きの機能を使用することは良いアイデアではありません。あなたはおそらく状態を維持するために、このような何かをしなければならないためである。

function myFunc()
{
    global $class;
    $class->doMethod();
}

function myFunc2()
{
    global $class;
    $class->doMethod2();
}

これはグローバルな状態のトンを作成し、これは悪い考えです。

他のヒント

あなたがPHPでオブジェクト指向を使用して心配している理由はスピードであれば、恐れることはない:PHPは、すべての周りの遅い言語です。あなたが問題には、オブジェクトを使用してから速度損失のためのプロセッサを集中的に十分なことを何かをやっている場合は、すべてのPHPを使用するべきではありません。

は、静的な機能に関しては、これは設計上の選択ですが、私はクラスを回避するに越し静的関数のみで構成さだろう。そこ接頭辞を超えることに何の利点が本当にいない、そしてそれは良いアイデアがないだという理由だけで構文を使用します。

は、パフォーマンスについて同じ引数は、Objective Cの日中にC ++バックについて行われました。そして、その問題への答えは継続的により良く、より速く、大きくなっている、使用可能なメモリと処理能力を活用することでした。

はい、OOの実行には、多くのリソースが必要になります。しかし、OOを使用する利点は、オブジェクト指向のアプリケーションをサポート(重要でないと思われる)、ハードウェアのコストを上回る$$ます。

しかし、ソフトウェアのパフォーマンスを心配することは良いことです。しかし、開始する場所として、手続き対ooのボンネットの下に見ていると、少しは見当違いです。あなたは、で始まる手続きやOOか(両方が関連している)ために効率的なコードを書くことに集中する必要があります。

PHPがそこに最速のプラットフォームではないかもしれないにもかかわらず、あることに留意してください(Javaは、例えば、そのお尻を蹴る)PHPは、インターネット上で最もトラフィックの重いのウェブサイトのいくつかの電源に使用されます。つまり、Facebookの

あなたはPHPとOOに関するその他の疑問を持っている場合は、

は、ただのZendと(Zendのに基づいて)Magentoのを見てください。 Magentoのは、のVERY のリソース集中型プラットフォーム、メモリ使用量は、インスタンスごとに36メガバイトの上向きにすることができます。しかし、プラットフォーム自体はヒット数百万人を処理することが可能です。ハードウェアリソースの健全な人前で適切に設定されたサーバ環境がはるかにサーバー自体のコストを光っOOを使用してのすべての利点を作るためです。しかし、クラスタ化されたコンピュータの世界で使用可能な処理能力とメモリ(責任を)されて使用していない - IMHO - 臨床狂気

私の愚見では、PHP開発者は、ののみの一方向移動しようとはなりません。いくつかのケースでは(オブジェクト指向の対手続き)、あなたが必要なのは、オブジェクトを使用する方が有益であるいくつかのグローバル関数、他の回です。力のすべてを1つの方法または他のを試みてはいけない、柔軟であることと、それぞれの状況に最も適したものを使用します。

私は強くChacha102の答えに反対ます。

この質問に対する正しい答えはいくつかの書籍を埋めるだろう - 。ここでは20行のポストを気にしない。

両方のアプローチは、その利点と欠点を持っています。私は、手続き、非手続き型とオブジェクト指向プログラミングでの豊富な経験を持っているために自分自身の良いプログラマを検討したい人をお勧めします。ならびにSCRUM、カスケードとRADなど、さまざまな方法論と経験ます。

手続きコーディング対OOために関してPHPSの適合性は、確かに言語のルーツは、後者(しかしJavaとASPの両方がハイブリッドではなく、真のオブジェクト指向言語であることに留意されたい)です。

Peronally、私はどちらかの非常に単純であるか、その行動がthouroughly定義し、予測可能なことを持っている必要があります何かを生産するために必要がある場合、手続きのコードを記述する傾向があります。動作は実行時に大幅に異なります複雑なコードを書くときしかし、私は開発者の時間の点で大幅より効率的にOOを見つける - 。デザインにもかかわらず、ユースケースの有限集合の周りに基づいている。

これはオブジェクト指向のコードよりも高速に実行されますので、あなたは常に手続きのコードを書くべきだと主張するには:

1)は必ずしも真ではありません 2)完全にハードウェアコスト対開発者の時間の相対的なコストを無視します。

  

それはクラスおよび使用静的関数の内部でラップのものに良いでしょう。

名前空間は、PHPで使用できるようになりましたことを考えると、これは避け名前空間の衝突ではなく、私が推薦するものには本当に厄介な方法です。

C

それは、多くの未知の変数そうに依存し、それがすべてか何もありません必要はありませんので、完璧な答えは本当にありません。

あなたはMVCモデルにアプリケーションを分割する場合たとえば、あなたがあなたのモデルはOOも持っているが、手続きがより単純化コントローラを維持することがあります。

あなたは、単にグループ共通の静的関数への手段としてのクラスを使用することができます。または、アクティブレコードパターンにたくさん遠くそれを取ることができます。

あなたはシュートがPOSTは、電子メールでのオフ、あなたが本当にOOを必要としないことを小さな単一ページのWebフォーム構築している場合 - 。あなたはおそらく活用する既存のメールクラスが含まれないようにする

誰もがプロジェクトにあなただ撮影を理解せずに、あなたに適切な助言を与えることはできません。

あなたの唯一の懸念は、速度であれば、言ったこと、そしてOO のやや遅くなります。そして、あなたはオブジェクト指向の利益の模倣一部にでも手続きPHPで行うことができます卑劣なものがたくさんあります。しかし、あなたがない限り、巨大なプロジェクトにしている撮影は、追加のオーバーヘッドがはるかに達することはありません。そして、あなたは巨大なプロジェクトを持っている時点で、OOの長所は、そのオーバーヘッドの短所を上回る可能性があります。

私は自分自身、このの好奇心でした。残念ながら、私は事前にいくつかのベンチマークを実行していないOOPするための手続きから自分のコードを変更した後。

ここでは、ベンチマークのコードだ。

class game{
  function maxp($val){
    return max(0,pow($val,0.5));        
  }
}

$game = new game;

for($i=0;$i<100000;$i++){
  $game->maxp(100);
  //game::maxp(100);
}

OOP結果は0.13と0.2秒の間の範囲であった。

手続きの結果は、0.08と0.1秒の間の範囲であった。

の結果は、時間の良い長さにわたって一致するままであった。

私は自分自身のテストを実行することをお勧めします。

PHP 5.4.3

OOP にはデメリットよりもメリットの方が多くあります。 「PHP OOP の利点は何ですか?」を参照してください。. 。こちらもご覧ください PHP における OOP と PP.

はい、アプリケーションの成長に合わせて...(それがされます)、それはあなたの欲求不満の多くの時間を節約します。そして、自分自身を繰り返す(すべての場所の上に貼り付けコードをコピー)..:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top