Hangi açık kaynaklı PHP projesinde öğrenebileceğim 'mükemmel' OOP tasarımı var? [kapalı]


9

OOP'ye yeni doğmuş biriyim ve en iyi örneği öğreniyorum.

Bu sorunun en iyi kodlama uygulamalarını öğrenmek için hangi Scala açık kaynak projelerine çalışmam gerektiğini söyleyebiliriz - ancak PHP'de.

Symfony'un en iyi 'mimariye' (Doktine ORM'nin yanı sıra tam olarak ne anlama geldiğini sanmıyorum) olduğunu duydum. Aylarca bu projelerin kaynak kodlarını okuyarak, kullanılan kalıpları çıkarmaya ve yeni hileler öğrenmeye harcamak değer mi?

Ben eşit sayıda web sayfaları dissing ve Zend kod temeli sevdim gördüm (gerekli görürse bağlantılar sağlayacaktır).

Herhangi bir kıdemli OOP geliştiricisinin sevinç gözyaşları dökmesini sağlayacak başka bir proje biliyor musunuz?

Lütfen pratiklik ve kullanım kapsamının burada bir endişe olmadığını eklememe izin verin - sadece şunu yapmak istiyorum:

  • Devs tarafından benden daha iyi ve daha büyük olarak kabul edilen bir kod tabanına sahip bir proje seçin.
  • Projenin ne yaptığını gerçekleştiren bir kod yazın.
  • Sonuçları karşılaştırın ve bilmediklerimi öğrenmeye çalışın.

Temel olarak, akademik bir ilgi kodu tabanı. Herhangi bir öneriniz lütfen?


4
Ben bir uzman değilim, ama PHP OOP yaygın veya mutlaka teşvik sanmıyorum.
asfallows

3
@asfallows Aslında durum buydu - ancak PHP 5.3'ün piyasaya sürülmesiyle işler değişiyor ve dilin OOP kodlaması için sağladığı tüm yeni spanking özelliklerini kullanmaya yönelik kesin bir eğim var.
Aditya MP

3
"Mükemmel OOP tasarımı" diye bir şey yoktur.
Robert Harvey

1
Code Review Stack Exchange'de zaten üye olduğunuzu görüyorum. Bunu kapsamlı bir şekilde kullanın, öğrenirken en değerli Stack Exchange, OOP hakkında öğrenirken yazacağınız kodu görmeyi ve tartışmayı çok isteriz ...
yannis

1
@Arkh Harsh. Kişisel saldırılardan kaçınmayı deneyelim. Asfallows'a katılmıyorsanız, iyi yazılmış bir yorum yazmak için zaman ayırın.

Yanıtlar:


2

Symfony 2 muhtemelen öğrenilecek en iyi büyük projedir ancak oldukça büyüktür.

Son zamanlarda Phrozn (statik site jeneratör) adlı temiz ve küçük bir açık kaynak PHP projesi buldum . Kod tabanı nispeten küçüktür, bu yüzden oldukça hızlı bir şekilde inceleyebilirsiniz.

GÜNCELLEME:

Phrozn modern (PHP 5.3+ kullanır ve yoğun olarak kullanır), genişletilebilir, sıkı kod kapsama alanına sahiptir. Ayrıca Symfony (YAML), Zend (Autoloader), PEAR ve Twig gibi iyi yazılmış projelerin kodlarını yeniden kullanır.

OOP, ad alanlarını kullanır ve çok iyi belgelenmiştir. Ne mükemmel ne de Symfony gibi bir projeyle karşılaştırılabileceğini söylemiyorum ama denemeye değer.


1
Phrozn kod tabanı hakkında bize biraz daha bilgi verebilir misiniz? Büyüklüğü dışında çalışmak için onu ideal yapan nedir?
yannis

1
@YannisRizos :) Kod github'da bulunabilir, böylece hızlıca bakabilirsiniz. github.com/farazdagi/phrozn
Christian P

17

Eh, şahsen Symfony2'ye bak diyebilirim . Şimdiye kadar gördüğüm en iyi uçtan uca büyük proje. Bu onun kötü parçaları olmadığını söylemek değil, ama bir bütün olarak, oldukça iyi.

Şimdi, Zend ortada. Herkese açık API'ya bakarsanız, oldukça iyi. Bazı WTF parçaları var, ancak çoğunlukla sorun yok. Daha fazla araştırmaya başlarsanız, çok daha fazla WTF kodu bulacaksınız ...

Ne açıkça kaçınılması gerektiği kadar:

  • CodeIgniter - Fubar MVC modeli
  • Kohana - Çok fazla statik
  • Pasta - PHP 4 nesne semantiği
  • Drupal - OOP değil
  • Wordpress - OOP değil

Geri kalanı kadar, vurmak ve vuramamak bulacaksınız. Tüm tasarımlarda iyi ve kötü parçalar var. Bir göz atın lityum , bazı gerçekten harika tasarım kavramları var. Ama aynı zamanda işe yaraması için çok fazla fubar yönlendirmesi ve hackery var.

Ve bankaya götüren şey bu. Mükemmel bir tasarım yok, bir tane bulmaya çalışmayın. Bunun yerine, birçoğuna bakın ve kendiniz karar verin. Her birini deneyin, kırmaya çalışın. Onları sadece okuyarak anlamaya çalışın (aklı başında tasarımın iyi bir testi) ...

Sadece benim kişisel fikrim ...


2
Symfony2 için +1, ancak daha da önemlisi, etrafındaki tüm topluluk binası. ZF2'den de bahsetmeye değer, ancak işleri daha soyut tutuyor gibi görünüyorlar.
Adrian Schneider

1
Ayrıca symfony2 için +1. Gerçekten sağlam bir kod tabanına sahiptir, diğer dillerden ve çerçevelerden en iyi uygulamaları kullanır, harika bir topluluk, çekirdek geliştiriciler yararlı, ulaşılabilir insanlardır. Gelişme, işleri daha iyi hale getirme yolunda yeniden düzenleme ile devam etmekle birlikte, mevcut durum üretime hazırdır. Symfony'un yaratıcısı Fabien Potencier , Symfony bileşenleriyle bir çerçeve oluşturma hakkında bir dizi blog yayınına ( fabien.potencier.org ) sahiptir. İnsanlara bir şeyler öğrenmelerine yardımcı olmak için bu yazıları yazdığı için iyi bir başlangıç ​​noktası olmalı.
Hakan Deryal

Symfony2 kaynak kodunu okumak aslında bir ilham kaynağıdır ve kavramak için çok karmaşık olmamakla birlikte, iyi bir nokta. Bununla birlikte, TDD geliştirilmemiştir, bu muhtemelen "mükemmel" OOP "tasarımı için bir köşe taşı olacaktır - çünkü hiçbir tasarım mükemmel değildir, bu da onu değiştirmeniz ve testlere ihtiyacınız olduğu anlamına gelir.
hakre

2
Eh, olamaz ciddiye Wordpress ve Drupal için Symfony'nin, Zend veya Kohana karşılaştırın.
Daniel Ribeiro

Teşekkür ederim! Symfony'u indirdim, anlamaya başlayacağım. CodeIgniter hakkındaki korkularımı onayladığınız için teşekkür ederim: Bir kez SilverStripe IRC'de "CodeIgniter'ın yeni başlayan bir OOP Çerçevesi olduğunu ve çok sayıda başlangıç ​​hatası yaptığını" duydum - ve PHP4'te yazmaya başladılar, ancak kapsamlı bir şekilde yeniden düzenleme zamanı olmadı Bu dilin sunduğu tüm harika özellikleri kullandıklarından şüpheliyim. Lütfen CI'yi DEĞİL DEĞİLDİĞİMİ unutmayın! Çerçeveyi seviyorum ve cennet benim için kaç projenin daha kolay hale geldiğini biliyor çünkü kullandım. Ancak bir öğrenme amacı için en iyisi olmayabilir.
Aditya MP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.