Ada sejuta-dan-satu struktur sistem file yang masuk ke berbagai proyek Open Source yang tersedia. Hal-hal seperti modul, file bahasa, domain, perpustakaan pihak ketiga, migrasi, internasionalisasi, cadangan, dan syslinks ke bagian lain dari sistem telah memunculkan banyak pendekatan untuk mengatur sistem file proyek.
Sebagai pengembang PHP, saya bertanya-tanya apakah ada jenis standardisasi yang mulai muncul di antara proyek-proyek. Dengan PSR-0 kami akhirnya memiliki standar untuk penamaan dan pemuatan file - tetapi tidak ada yang sepengetahuan saya tentang sisa komponen yang membentuk sistem atau bagaimana mereka dapat ditangani dengan cara yang waras.
Kami berurusan dengan lebih dari sekedar MVC, jadi contoh apa saja dari proyek-proyek besar yang menangani semua hal ini dengan benar?
Jawaban:
Sangat tidak mungkin untuk menstandarkan bagaimana proyek harus diletakkan, karena "itu tergantung".
Jika Anda memperkenalkan struktur standar, tetapi beberapa di antaranya tidak relevan dengan persyaratan yang sedang dikembangkan, Anda dapat berakhir dengan kebisingan tambahan yang tidak Anda butuhkan. Demikian pula, jika standar perlu bekerja untuk berbagai proyek, mereka harus memasukkan terlalu banyak skenario yang berbeda.
Tugas kita sebagai pengembang adalah mencari pola dan praktik terbaik dan menerapkannya pada tugas yang ada. Kami menggunakan pengalaman dan keahlian kami untuk memilih struktur sistem file yang tepat untuk proyek yang sedang kami kerjakan.
sumber
Tampaknya tidak ada banyak upaya standardisasi yang terjadi, dan jujur saja, saya tidak melihat manfaatnya. Hanya ada satu aturan yang harus Anda patuhi, yaitu Anda tidak boleh memiliki hal-hal di bawah dokumen yang tidak termasuk di dalamnya (tindakan pencegahan keamanan dasar).
Selain itu, saya hanya pergi dengan apa yang masuk akal untuk proyek ini.
Jika Anda menggunakan MVC (baik melalui framework atau ad-hoc), maka struktur dasar dengan / model, / views dan / controllers masuk akal. Tetapi bahkan jika Anda tidak, Anda biasanya memiliki semacam lapisan akses data dengan kelas yang memetakan ke entitas data Anda; masuk akal untuk memiliki direktori untuk itu; Anda juga biasanya memiliki banyak kelas logika bisnis dan fungsi utilitas, jadi direktori lain untuk itu; jika Anda menggunakan sistem templat, templat masuk ke direktori lain; dan kemudian Anda mungkin menginginkan direktori 'libraries', tempat Anda meletakkan semua perpustakaan pihak ketiga. (Begitu Anda mencapai titik ini, Anda cukup banyak melakukan MVC).
Jika proyek ini benar-benar besar, itu mungkin dapat dibagi menjadi submodula fungsional; jika submodules cukup independen, masuk akal untuk menggunakannya sebagai tingkat atas Anda, dengan satu direktori tambahan untuk kode umum.
sumber
Anda dapat mengikuti tata letak proyek untuk dua kerangka kerja aplikasi paling populer:
Ini akan memberikan struktur yang dapat diperluas berdasarkan praktik terbaik dan pengalaman dari pengguna
sumber