どのオープンソースPHPプロジェクトに「完璧な」OOPデザインがありますか?[閉まっている]


9

私はOOPの初心者であり、例を挙げて学ぶのが一番です。

この質問は、コーディングのベストプラクティスを学ぶためどのScalaオープンソースプロジェクトを勉強すべきかと似ていますが、PHPであると言えます。

私はSymfonyが最高の「アーキテクチャ」(それが正確に何を意味するのか私が知っているふりはしません)だけでなく、Doctrine ORMを持っていると聞きました。これらのプロジェクトのソースコードを読んだり、使用されているパターンを推測したり、新しいトリックを学んだりするのに何ヶ月も費やす価値はありますか?

Zendのコードベースを同化して好むWebページの数が同じであることを確認しました(必要と思われる場合はリンクを提供します)。

ベテランのOOP開発者が喜びの涙を流すような他のプロジェクトを知っていますか?

ここでは、実用性と使用範囲はまったく問題ではないことを付け加えておきます-ただやりたいだけです。

  • 私よりも開発者によって優れていると思われるコードベースを持つプロジェクトを選択してください。
  • プロジェクトの機能を実現するコードを記述します。
  • 結果を比較し、わからないことを学ぶようにしてください。

基本的に、学術的関心のコードベース。何かおすすめはありますか?


4
私は専門家ではありませんが、PHPでOOPが一般的であるとか、必ずしも推奨されているとは思いません。
12

3
@asfallows確かにそうでした-しかし、PHP 5.3のリリースにより、状況は変化し、言語がOOPコーディングに提供するすべてのスパンキング新機能を使用する傾向が明確になりました。
Aditya MP

3
「完璧なOOPデザイン」というものはありません。
Robert Harvey

1
あなたはすでにCode Review Stack Exchangeのメンバーです。幅広く使用してください。これは学習時に最も価値のあるStack Exchangeです
。OOP

1
@アーク・ハーシュ。個人攻撃を控えてみましょう。あなたがアスファローに同意しない場合は、時間をかけてよく書かれたコメントを書いてください。

回答:


2

Symfony 2はおそらく学ぶのに最適な大規模プロジェクトですが、かなり大きなプロジェクトです。

私は最近、Phrozn(静的サイトジェネレーター)と呼ばれるきちんとした小さなオープンソースのPHPプロジェクトを見つけました。コードベースは比較的小さいので、かなり速く調べることができます。

更新:

Phroznは最新であり(PHP 5.3+を使用し、それに大きく依存しています)、拡張可能で、厳密なコードカバレッジを備えています。また、Symfony(YAML)、Zend(Autoloader)、PEAR、Twigなど、よく記述された他のプロジェクトのコードを再利用します。

OOPは名前空間を使用しており、十分に文書化されています。私はそれが完璧だと言っているわけでも、Symfonyのようなプロジェクトと比較できるわけでもありませんが、一見の価値はあります。


1
Phroznのコードベースについてもう少し詳しく教えてください。サイズ以外に、勉強に最適なものは何ですか?
yannis 2012

1
@YannisRizos :)コードはgithubにありますので、簡単に見ることができます。github.com/farazdagi/phrozn
クリスチャンP

17

まあ、個人的に私はSymfony2をチェックアウトすると言うでしょう。これは、私が今まで見た中でエンドツーエンドの大規模なプロジェクトの中で最高です。それは悪いところがないと言っているわけではありませんが、全体としてはかなり良いです。

現在、Zendが真ん中です。公開APIを見ると、かなり良いです。これにはいくつかのWTFパーツがありますが、ほとんどの場合それで問題ありません。さらに掘り下げていくと、さらに多くのWTFコードが見つかります...

あからさまに避けるべき限り:

  • CodeIgniter-Fubar MVCモデル
  • コハナ-多くの静力学
  • Cake-PHP 4オブジェクトのセマンティクス
  • Drupal-まったくOOPではない
  • Wordpress-まったくOOPではない

残りの部分については、それはヒットとミスです。すべてのデザインには良い部分と悪い部分があります。Lithiumを見てください。Lithiumには、本当にクールなデザインコンセプトがいくつかあります。しかし、それを機能させるには、たくさんのリダイレクトとハッカーが必要です。

そして、それは銀行に持っていくものです。完璧なデザインはありません。見つけようとしないでください。代わりに、それらをたくさん見て、自分で決めてください。それぞれを試して、それらを壊してみてください。それらを読むだけで理解するようにしてください(これは、正しい設計の良いテストです)...

ただ私の個人的な意見...


2
symfony2の+1、より重要なことに、コミュニティ全体がsymfony2を中心に構築します。ZF2についても言及する価値がありますが、より抽象的なものになっているようです。
Adrian Schneider

1
symfony2の+1も。それは本当に強固なコードベースを持ち、他の言語やフレームワークからの多くのベストプラクティスを使用しています、素晴らしいコミュニティ、コア開発者は助けになり、到達可能な人々です。開発は、それらをより良いものにするためにリファクタリングを行っていますが、現在の状態は本番稼働の準備ができています。Symfonyの作成者であるFabien Potencierは、Symfonyコンポーネントを使用したフレームワークの作成に関する一連のブログ投稿(fabien.potencier.org)を公開しています。人々が物事を学ぶのを助けるために彼がこの投稿を書いたので、それは良い出発点であるべきです。
Hakan Deryal 2012

symfony2のソースコードを読むことは実際にはインスピレーションですが、理解するには複雑すぎず、良い点です。ただし、TDDは開発されておらず、おそらく「完全な」OOP「設計」の1つの基礎となるでしょう。設計が完璧ではないため、変更する必要があり、テストが必要です。
12

2
Symfony、Zend、KohanaをWordpressやDrupalと真剣に比較することはできません
ダニエルリベイロ

ありがとうございました!Symfonyをダウンロードしました。理解を始めます。CodeIgniterに対する私の恐れを確認していただきありがとうございます。SilverStripeIRCで「CodeIgniterは初心者向けのOOPフレームワークであり、多くの初心者の間違いを犯している」と聞いたことがあります。そして、彼らはPHP4で書き始めましたが、広範囲にリファクタリングする時間はありませんでした。彼らがこの言語が提供するすべての優れた機能を使用したとは思えません。私はCIを破棄しないことに注意してください!私はこのフレームワークが大好きで、天国は私がそれを使用したためにいくつプロジェクトが簡単になったかを知っています。しかし、学習目的のためには、それは最善ではないかもしれません。
Aditya MP
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.