Proyek PHP open source mana yang memiliki desain OOP 'sempurna' yang dapat saya pelajari? [Tutup]

9

Saya seorang pemula untuk OOP, dan saya belajar paling baik dengan contoh.

Anda bisa mengatakan pertanyaan ini mirip dengan proyek open source Scala mana yang harus saya pelajari untuk mempelajari praktik pengkodean terbaik - tetapi dalam PHP.

Saya telah mendengar-katakan bahwa Symfony memiliki 'arsitektur' terbaik (saya tidak akan berpura-pura tahu apa artinya sebenarnya), dan juga ORD Ajaran. Apakah layak untuk menghabiskan berbulan-bulan membaca kode sumber proyek-proyek ini, mencoba menyimpulkan pola yang digunakan dan mempelajari trik-trik baru?

Saya telah melihat jumlah halaman web yang sama yang tidak sesuai dan menyukai basis kode Zend (akan memberikan tautan jika dianggap perlu).

Apakah Anda tahu ada proyek lain yang akan membuat pengembang veteran OOP meneteskan air mata sukacita?

Tolong izinkan saya menambahkan bahwa kepraktisan dan ruang lingkup penggunaan sama sekali bukan masalah di sini - saya hanya ingin melakukan:

  • Pilih proyek yang memiliki basis kode yang dianggap luar biasa oleh devs jauh lebih baik dan lebih besar dari saya.
  • Tulis kode yang mencapai apa yang dikerjakan proyek.
  • Bandingkan hasilnya dan coba pelajari apa yang tidak saya ketahui.

Pada dasarnya, basis kode minat akademik. Tolong ada rekomendasi?

Aditya MP
sumber
4
Saya bukan ahli, tetapi saya tidak berpikir OOP umum atau didorong dalam PHP.
asfallows
3
@ asfallows Memang itulah masalahnya - tetapi dengan rilis PHP 5.3, banyak hal berubah dan ada kecenderungan untuk menggunakan semua fitur baru yang disediakan oleh bahasa untuk pengkodean OOP.
Aditya MP
3
Tidak ada yang namanya "desain OOP yang sempurna."
Robert Harvey
1
Saya melihat Anda sudah menjadi anggota di Code Review Stack Exchange. Gunakan secara luas, ini adalah Stack Exchange yang paling berharga saat belajar, kami akan senang melihat dan mendiskusikan kode yang akan Anda tulis sambil belajar tentang OOP ...
yannis
1
@Arkh Harsh. Mari kita coba menahan diri dari serangan pribadi. Jika Anda tidak setuju dengan asfallows, luangkan waktu untuk menulis komentar yang ditulis dengan baik.

Jawaban:

2

Symfony 2 mungkin merupakan proyek besar terbaik untuk dipelajari tetapi cukup besar.

Saya baru-baru ini menemukan proyek PHP open source yang rapi dan kecil bernama Phrozn (generator situs statis). Basis kode-nya relatif kecil sehingga Anda bisa memeriksanya dengan cukup cepat.

MEMPERBARUI:

Phrozn adalah modern (menggunakan PHP 5.3+ dan sangat bergantung padanya), ekstensibilitasnya, memiliki cakupan kode yang ketat. Ini juga menggunakan kembali kode dari proyek yang ditulis dengan baik lainnya seperti Symfony (YAML), Zend (Autoloader), PEAR dan Twig.

OOP, menggunakan ruang nama dan didokumentasikan dengan sangat baik. Saya tidak mengatakan itu sempurna atau bahwa itu dapat dibandingkan dengan proyek seperti Symfony tetapi layak dicoba.

Christian P
sumber
1
Bisakah Anda memberi kami beberapa detail lebih lanjut tentang basis kode Phrozn? Apa yang membuatnya ideal untuk belajar, selain ukurannya?
yannis
1
@YannisRizos :) Kode ini dapat ditemukan di github, jadi Anda bisa melihat sekilas. github.com/farazdagi/phrozn
Christian P
17

Yah, secara pribadi saya akan mengatakan lihat Symfony2 . Ini adalah proyek besar end-to-end terbaik yang pernah saya lihat. Itu bukan untuk mengatakan tidak ada bagian yang buruk untuk itu, tetapi secara keseluruhan, itu cukup bagus.

Sekarang, Zend ada di tengah. Jika Anda melihat API publik, itu cukup bagus. Ada beberapa bagian WTF untuk itu, tetapi sebagian besar tidak masalah. Jika Anda mulai menggali lebih dalam, Anda akan menemukan BANYAK lebih banyak kode WTF ...

Sejauh apa yang harus dihindari:

  • CodeIgniter - model MVC Fubar
  • Kohana - Banyak statika
  • Cake - semantik objek PHP 4
  • Drupal - Tidak OOP sama sekali
  • Wordpress - Tidak OOP sama sekali

Sejauh yang lain, Anda akan menemukan itu hit dan miss. Ada bagian baik dan buruk untuk semua desain. Lihatlah Lithium , ada beberapa konsep desain yang sangat keren. Tetapi ia juga memiliki banyak pengalihan fubar dan peretasan untuk membuatnya berfungsi.

Dan itulah yang harus dibawa ke bank. Tidak ada desain yang sempurna, jangan coba-coba menemukannya. Sebaliknya, lihatlah banyak dari mereka di luar sana dan putuskan sendiri. Cobalah masing-masing, coba hancurkan mereka. Cobalah untuk memahaminya hanya dengan membacanya (yang merupakan tes yang bagus untuk desain waras) ...

Hanya pendapat pribadi saya ...

ircmaxell
sumber
2
+1 untuk symfony2, tetapi yang lebih penting, seluruh komunitas membangun di sekitarnya. ZF2 mungkin layak disebut juga, meskipun mereka tampaknya menjaga hal-hal yang lebih abstrak.
Adrian Schneider
1
+1 untuk symfony2 juga. Ini memiliki basis kode yang sangat solid, ia menggunakan banyak praktik terbaik dari bahasa dan kerangka kerja lain, komunitas yang hebat, pengembang inti adalah orang yang bermanfaat dan dapat dijangkau. Meskipun pengembangan sedang berlangsung dengan memperbaiki hal-hal di sepanjang jalan untuk membuatnya lebih baik, status saat ini siap untuk diproduksi. Fabien Potencier, pencipta Symfony, memiliki serangkaian posting blog ( fabien.potencier.org ) tentang membuat kerangka kerja dengan komponen Symfony. Itu harus menjadi titik awal yang baik, ketika ia menulis posting ini untuk membantu orang belajar hal-hal.
Hakan Deryal
Membaca kode sumber symfony2 sebenarnya adalah inspirasi sementara tidak terlalu rumit untuk dipahami, bagus. Namun itu bukan TDD yang dikembangkan, yang mungkin akan menjadi salah satu landasan untuk desain "OOP" yang sempurna - karena tidak ada desain yang sempurna yang berarti Anda harus mengubahnya dan untuk itu Anda perlu tes.
hakre
2
Nah, Anda tidak bisa membandingkan Symfony, Zend atau Kohana dengan Wordpress dan Drupal, dengan serius.
Daniel Ribeiro
Terima kasih! Saya telah mengunduh Symfony, saya akan mulai memahaminya. Terima kasih telah mengonfirmasikan ketakutan saya tentang CodeIgniter: Saya pernah mendengar di SilverStripe IRC bahwa "CodeIgniter adalah Framework OOP pemula dan melakukan banyak kesalahan pemula" - dan mereka mulai menulis dalam PHP4, tetapi belum punya waktu untuk melakukan refactor secara ekstensif. Saya ragu mereka telah menggunakan semua fitur hebat yang ditawarkan bahasa ini. Harap dicatat bahwa saya TIDAK dissing CI! Saya suka kerangka dan surga tahu berapa banyak proyek menjadi lebih mudah bagi saya karena saya menggunakannya. Tetapi untuk tujuan belajar mungkin itu bukan yang terbaik.
Aditya MP