簡単な説明PHP OOP対手続き型?


106

PHPを学びたいし、OOPと手続き型についてのアイデアを取得したいと思います。OOPと手続き型についての他のブログやチュートリアルをいくつか読んだのですが、それでもアプローチを理解できません。

OOPと手続き型

  1. 私はどちらを学ぶべきですか?
  2. コードの違いは何ですか?効果は何ですか?
  3. PHPフレームワークはOOPアプローチにどのように役立ちますか?(CodeIgniterを学びたい)
  4. 手続きにはフレームワークが必要ですか?

私は本当に両方のコードの違いを知りたいです、OOPの私の理解はあなたがのようなクラスを作成し、それがアクセスできることです。(それが正しければ私は知りません)。

ありがとう!



1
これは、単一の非常に長いリンクではない顔
フェリックス・ガニオン-グルニエ



seeAlsoの:twitter.com/...
dreftymac

回答:


279

背景:次のような「簡単な説明」を求めました。

  1. あなたは専門用語なしのナンセンスな概要求めています
  2. 最初から学ぶのに役立つ何かが欲しい
  3. 2人が同じ方法質問に答えることはないことを発見しました。混乱を招きます。それがあなたがここで簡単な説明を求めている理由です。はい?

専門用語の短い回答:

  1. 多くの紹介的な説明は、「OOP実世界」の例にすぐにジャンプします。それらは助けよりも混乱する傾向があるので、今のところそれを無視してください。
  2. ソースコードは、単に機能の「チャンク」と考えることができ、たまたま個別のファイルに保存されます。
  3. これらの「チャンク」を整理するにはさまざまな方法があります。プログラミング言語の慣習、開発者のバックグラウンドとトレーニング、または単に昔ながらの個人的な好みなどによって異なります。
  4. OOPと手続き型プログラミングは、これらのコードの「チャンク」を整理して配置する方法について、一般的に認識されている2つの主要な方法論にすぎません。

専門用語の長い回答:

手続き型vs OOPは、コンピュータープログラミングの基本的な問題の1つの側面にすぎません。コードを理解しやすくする方法と、専門家が保守する簡単な方法です。実際には、OOPのいくつかの原則に従う「手続き型」コードを記述できるため、この2つは必ずしも逆ではありません。

他のオブジェクト指向プログラミング言語を学ぶと、あなたの理解は本当に高まります。その中で、PHPは「ブロックの新しい子供」です。

ここでは、経験を積むにつれて学ぶ内容の概要を示します

  • 便利なタスクを実行する PHPソースコードを記述できます。
  • 便利なタスクをコードの「チャンク」に整理できます
  • 保存される個々のファイルとは無関係にコードの「チャンク」と考えることができます
  • 時々、それらのコードの「チャンク」は、渡したパラメーターに基づいて異なる動作をします
  • パラメータを受け入れるコードのチャンクは「関数」と呼ばれます
  • 関数は一緒に「チャンク」することができ、これを行うにはさまざまな方法があります。
    • 例:これまでに作成したすべての関数を1つの大きなPHPファイルで、関数名のアルファベット順にリストすることができます。
    • 例:主題ごとにチャンク化された関数(たとえば、基本的な文字列操作を実行する関数、配列を処理する関数、ファイルの入出力用の関数など)を持つ複数のPHPファイルを持つことができます。
  • OOPは、関数を「クラス」にまとめるための特別な方法です
  • クラスは、「チャンク」コードの別のレベルであり、統一された全体として扱うことができます
  • クラスは、メソッドプロパティの「チャンク」と考えることができます

    • メソッドは、何らかの意味のある方法で相互に論理的に関連付けられている単純な関数です。「メソッド」と「関数」という言葉は、基本的に同じものを表す2つの異なる用語です。
    • プロパティは、クラスに関連する単なるデータ値です。これらは、クラス内の複数の関数がアクセスできるようにするため、意図的に個々の関数に分離されていない値です。
      • たとえば、クラスに天文学を行うためのメソッドがたくさんある場合、クラスのプロパティは、すべての天文学のメソッドが知る必要がある特定の有名な数値の値になることがあります(Pi、光速、特定の惑星間の距離など)。等。)。
    • ほとんどのOOPの説明実世界の例に分岐し、すぐに話題から外れるため、混乱するところです。多くの場合、「現実の世界」は特定の個人の存在論的視点の婉曲表現です。これは、他の人に教えるのに十分なほどその概念をすでに理解している場合にのみ役立つ傾向があります。
    • 混乱なくOOPを理解するために、ここでは「現実の世界」の例をスキップして、コードに焦点を当てることができます。クラスは、関数(別名メソッド)とプロパティ(別名データ)をPHP コードとして1つ以上の関連する「チャンク」に格納する方法であり、個々の「チャンク」は特定のトピックまたは機能の一部を扱います。それを始めるためにあなたが知る必要があるのはそれだけです。
  • クラスは、理解、使用、および保守を容易にする方法でコードを非常に高いレベルで編成できるため、便利です。

  • 誰かが多くの関数を作成し、それらを多くのクラスに編成し、それらをいくつかのクールな方法で連携させると、全体をまとめて「フレームワーク」と呼びます。
  • フレームワークは、1つまたは複数の人々がコードの編成方法を好み、作業スタイル、好み、価値観、世界の計画に適しているため、1つ以上の人々が同意する「チャンキング」の2番目に高いレベルです(コーディングスタイルと規則を含む)。支配など

こちらもご覧ください


1
@dreftymac:私の追加機能で何が改善できるかについてのフィードバックを私に提供することができました。本当に。私は建設的な批評を歓迎します、そしてあなたにも同じことをするように勧めます。
Flavius

1
@フラビウス大丈夫。努力と追加のための時間を割いてくれたことに感謝します。それについて考えた後、あなたが行った追加がそれ自身の独立した答えに値することは合理的であるように思えます。
dreftymac

2
1つの追加:クラスは、関数データをチャンク化するのにも役立ちます。そのため、パラメーターで渡す必要はありません。
サイボーグ

1
特に「フレームワーク」の定義については+1。多くの人がフレームワークとは何かを説明しようとするのを聞いたことがあります。私はあなたのフレームワークが最も理解しやすいと思います。
TecBrat、2013年

1
mate ...これは私がoop vs proceduralについて読んだ最良の説明であり、私はたくさん読んだ!素晴らしい仕事は本当に効果的で、シンプルで、要点がまっすぐです。あなたは正しい人であり、常に実世界の例を使用しています。それは何かを理解する簡単な方法ではありません。
thechrishaddad

25

OOPはデザインパターンにすぎません。始めたばかりの場合は、手続き型のアプローチに焦点を当てて基本を学びます。最も重要なことは、ループ、条件、その他のプロシージャの呼び出しなどの基本原則に慣れることです。

手続き型コードを作成している間は、関連するメソッドを単一のソースファイル内に追加して、習慣をつけてください。プロシージャを論理ユニットに分割する方法を学ぶと、すでにオブジェクト指向になり始めています。基本的に、オブジェクトは、同じデータのセットを操作するという理由だけで互いに関連付けられているメソッドのコレクションにすぎません。(ここではデータベースについてではなく、アプリケーションデータについてです!)

OOは主に、すべてを単純なブロックに分割してコードをより論理的にするために使用されます。適切なブロックを組み合わせることで、完全なアプリケーションが得られます。OOは、すべての問題を解決する、特効薬や金槌ではありません。しかし、それが行うことは、コードを理解しやすくすることです。

繰り返しになりますが、何百人ものメソッドを持つ巨大なスーパーオブジェクトに変えるだけで、オブジェクトを完全に台無しにする人もいます。そのようなオブジェクトは、通常の手続き型アプローチとそれほど違いはありません。これは、実際のロジックなしで膨大な数のメソッドが組み合わされているためです。これは、人々がOOPをあまりにも早く始めすぎると起こりがちな間違いです。


3
私はいくつかのOOPコードがもっと混乱していると思います。たとえば、プレスタショップの腹を調べてみてください。
AndrewC 2013年

Pretashopについての素晴らしい点。Magento自体は蒸し獣ですが、PretashopやWooCommなどの代替品のほうがさらに悪いため、そのままにすることにしました。
PKHunter 2014年

6

あなたは両方を学ぶべきです。オブジェクトは、存在する可能性のある多くの抽象化の1つにすぎません。抽象化とは、プログラミングが最終的にはすべてであることです。そうは言っても、PHPオブジェクトの内部はとにかく手続き型であるため、手続き型のものから始めて、後でオブジェクトを追加します。

フレームワークに関しては; まず言語の基礎を学び、使い捨ての実験プログラムなどを書きます。後で、フレームワークに慣れ、そのコンテキストの一部が特定のコンテキストで役立つかどうか自分で検討できます。必須ではありません。


6

上記の素晴らしい答えを追加します。OOPはコーディングスタイルの自然な進歩と見なす必要があります。小さなプログラムを書き始めるときは、数行のphpコードをまとめて関数にグループ化する必要があるかもしれません。それらをクラスに整理するために。OOPは、コードの構造を改善するだけで、コードのメンテナンスが改善されます。


6

手続き型phpとoopは同じphpコードを使用します。次に、唯一の違いは、手続き型の場合、1つのタスクに集中するということです。おっと、コードのさまざまな領域で再利用できるパターンまたはチャンクを使用してコードを編成します。

簡単な答えは、phpを理解する必要があるということです。php.netで学ぶことができます。それを理解したら、コードの整理を開始できます。

手続き型コードは関数、変数を使用します。

いったんこつをつかんだら、関数と変数をクラスに編成し始めることができます。メソッドとしての関数とプロパティとしての変数の呼び出しを開始します。

幸運を。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.