web-dev-qa-db-ja.com

OOP指向PHPアプリのソースコードのサンプルとアドバイス

私が恐れていた日がやってきました。 OOPまたは適切なソフトウェアデザインが重要であると感じました(それらが重要であることはわかっていましたが、それなしで管理できると思いました。)。クライアントが既存のアプリの新機能を要求する日です。その日が来て、痛みは耐えられません!

私は自分のPHP Webサイトを「適切に」コーディングしたことがありません(PHPが私の主要言語であり、私の仕事の大部分です。私はPython(web2pyを使用して)を学習しています))私は日常の使用シナリオでWebサイトがバラバラにならないように注意します。それぞれに「マジックコード」のビットを含む静的HTMLファイルのリストを作成していたように、ページをコード化します(これは私に多くのバグを引き起こします)。 アプリ全体を多かれ少なかれ単一のオブジェクトにする方法はありますか?たとえば、請求先アプリのオブジェクトモデルをどのように設計しますか?

アプリ全体で同じように特定のことを行うために多くの関数を使用します(たとえば、検証、IDの生成、税金の計算など)。

私はOOP全般についての基本を知っています。PHPで記述された機能するアプリのソースコードサンプルを誰かに教えてもらえますか?または、誰かがポインタを提供して私のコードを書き直すことができますよりモジュール化された方法で既存のアプリ。

6
abel

Symfony フレームワークと Doctrine ORM、これらは最もコード化され、最もよく設計されたPHP私が知っているプロジェクトです。

初期のソフトウェアアーキテクチャ

また、デザインパターンに慣れるには、 FluffyCatのPHPデザインパターン ページを確認してください。ウィキペディアの各パターンを使用すると、パターンの目的をよりよく理解できます。一般的に、デザインパターンは、頻繁に発生する問題(言語に固有であり、ほとんどがオブジェクト指向)に対する解決策です。たとえば、 Composite 設計パターンは、ネストされたものの分類を処理するのに役立ちます。

幸運と初期のソフトウェアアーキテクチャへようこそ。

3
dukeofgaming

最も重要なステップ(または少なくとも投資収益率が最も高いステップ)は、単一のフレームワーク(ビルド済みまたは作成したもの)の使用を開始することだと思いますエントリポイント1

これはベストの実践方法 DRY(Do n't Repeat Yourself) in PHP =処理コードと表示コードの分離を実現するのに役立ちます。

これにより、OOが実際にPHPでどのように使用されるかを確認することもできます。現在、オブジェクトは、すべての「マジック」コードのため、想像するのが困難です。 。リクエスト処理とビジネスロジック(OOが適している場合)は非常に異なります。リクエスト処理はOOで実行できますが、絶対に必要というわけではありません。オブジェクトは、アプリケーションで必要なオブジェクトとは明らかに異なります。

リクエスト処理が分離され、明確で一貫したパターンに従うと、アプリケーションに関連するオブジェクトは、リクエスト処理に混入することなく自然にコントローラーメソッドに分類されるため、コードが煩雑になります。

これを行うときは、適切な__autoload関数を使用して、リクエストごとにアプリ内のすべてのクラスをインポートする必要がないようにします。クラスは、必要になるまで読み込まれません。


1:私が htaccessについての回答 とStackOverflowの1つで説明したフレームワークのようなもの 軽量でクリーンなフレームワークについて

1
Nicole

私は Zend FrameworkModel-View-Controller アーキテクチャに基づいていることをお勧めします。

クイックスタート で開始するか、多数の チュートリアル のいずれかを選択します。

Zend Frameworkの主な機能の一部( Wikipedia から):

  • すべてのコンポーネントは完全にオブジェクト指向ですPHP 5
  • 疎結合コンポーネントと最小限の相互依存性を備えた、自由自在のアーキテクチャ
  • デフォルトでレイアウトとPHPベースのテンプレートをサポートする拡張可能なMVC実装
  • 複数のデータベースシステムとベンダーのサポート
  • メールの作成、配信、取得
  • メモリやファイルシステムなど、さまざまなタイプのバックエンドをサポートする柔軟なキャッシングサブシステム。
1
Maglob