112

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

OOP と手続き型

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

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

4

5 に答える 5

289

背景:あなたは次のことを示唆する「簡単な説明」を求めました。

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

短い専門用語なしの回答:

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

長い専門用語なしの答え:

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

他のオブジェクト指向プログラミング言語を学ぶと、理解が深まります。その中でも、PHP は「初心者」です。

以下は、経験を積みながら学ぶ内容の概要です。

  • 便利なタスクを実行するPHP ソース コードを記述できます。

  • 便利なタスクをコードの「チャンク」に編成できます

  • コードの「チャンク」は、保存されている個々のファイルとは別に考えることができます

  • コードの「チャンク」は、渡すパラメーターに基づいて異なる動作をすることがあります

  • パラメータを受け入れるコードのチャンクは「関数」と呼ばれます

  • 関数はまとめて「チャンク」することができ、これを行うにはさまざまな方法があります。

    • たとえば、人生でこれまでに作成したすべての関数を、関数名のアルファベット順にリストした 1 つの大きな PHP ファイルを作成することができます。
    • 例:複数の PHP ファイルを対象ごとにまとめた関数 [例: 基本的な文字列操作を行うための関数、配列を処理するための関数、ファイルの入出力のための関数など] を持つことができます。
  • OOP は、関数を「クラス」にまとめて「チャンク」する特別な方法です。

  • クラスは、統一された全体として扱うことができるように、コードをまとめて「チャンク」する別のレベルにすぎません

  • クラスは、メソッドプロパティの「チャンク」と考えることができます

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

  • 誰かが多くの関数を書き、それらを多くのクラスに編成し、それらを何らかのクールな方法で連携させると、すべてをまとめて「フレームワーク」と呼びます。

  • フレームワークは、コードの編成方法が好きで、作業スタイル、好み、価値観、世界の計画に適しているため、1 人以上の人々が同意する、次に高いレベルの「チャンク」 (コーディング スタイルと規則を含む) です。支配など

こちらもご覧ください

于 2009-10-07T11:05:31.930 に答える
27

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

手続き型コードを作成しているときに、関連するメソッドを 1 つのソース ファイル内に追加することを習慣にします。手順を論理単位に分割することを学べば、すでにオブジェクト指向になり始めています。基本的に、オブジェクトは、同じデータ セットを操作するという理由だけで、互いに関連するメソッドの集まりにすぎません。(ここではデータベースの話ではありませんが、アプリケーション データです!)

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

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

于 2009-10-07T11:26:14.510 に答える
7

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

フレームワークに関しては; まず言語の基礎を学び、使い捨ての実験プログラムを書くなど。後で、フレームワークに慣れ、それらのいくつかが何らかのコンテキストで役立つかどうか考えることができます。それらは絶対に必須ではありません。

于 2009-10-07T10:56:33.150 に答える