Mengapa Zend Framework sangat rumit?

42

Saya adalah pengembang web dan memiliki pengalaman mengembangkan beberapa aplikasi web dalam PHP. Saya memiliki ide untuk mengembangkan produk untuk diri saya sendiri dan memutuskan untuk menggunakan kerangka kerja berbasis MVC karena saya sangat menyukai ide MVC dan bagaimana seseorang dapat dengan mudah mengelola dan memodifikasi aplikasi tanpa kesulitan.

Saya memilih Zend Framework dan sepertinya lebih sulit daripada belajar bahasa pemrograman baru. Ada begitu banyak hal yang terjadi pada satu waktu bahkan untuk menjalankan aplikasi kecil.

Demikian pula gagasan tentang perutean sangat kompleks karena merupakan hal baru bagi seorang programmer inti. Saya tahu bahwa orang-orang di sini membaca ribuan pertanyaan seperti itu yang saya tanyakan tetapi saya tidak ingin belajar Zend Framework dalam semalam. Saya bersedia memberikan waktu sebanyak yang dibutuhkan tetapi sampai sekarang tidak masuk akal bagi saya. Ada ribuan kelas di perpustakaan Zend, tetapi bagaimana seorang noob tahu di mana harus menggunakan kelas specfic dan bagaimana menggunakannya? Saya masih kesulitan memahami bootstrap Zend Framework dan pemetaannya. Saya membaca manual, ikuti dan hal-hal mulai bekerja tetapi saya benar-benar tidak tahu persis bagaimana mereka sebenarnya terjadi.

Saya juga masih tidak tahu bagaimana model, tampilan dan pengontrol bekerja bersama dan bagaimana merencanakan aplikasi dalam Zend Framework. Ketika datang ke inti php saya sebenarnya punya ide dalam pikiran saya apa yang harus dilakukan dan daripada dengan mudah menerjemahkannya dalam kode tetapi dalam Zend Framework saya tidak tahu bagaimana menerjemahkan ide saya.

Abid Abid
sumber
10
Jika Anda baru mengenal MVC, laksanakan perancah MVC sendiri sebelum menggunakan salah satu yang lengkap - itu tidak baik untuk dipelajari.
treecoder
2
@ Grengit itulah yang saya lakukan!
Kyle Hodgson
Zend Framework tidak sulit, memerlukan sedikit waktu untuk belajar, karena dokumentasi yang buruk, tetapi saya dapat meyakinkan Anda, bahwa itu adalah kerangka kerja yang sangat kuat. Kami telah membangun perangkat lunak perusahaan besar di ZF2, dan fleksibilitas konfigurasi sangat luar biasa di ZF.
albanx

Jawaban:

38

Zend Framework sulit. Itu tidak dibangun sebagai kerangka kerja entry level, pengetahuan konsep yang terlibat diasumsikan 1 . Yang mengatakan, persyaratan pertama untuk Zend Framework 2.0 adalah untuk membuatnya sedikit lebih mudah:

Kemudahan kurva belajar

Pada akhir 2009, kami melakukan survei terhadap pengguna kerangka kerja untuk menentukan apa yang mereka gunakan, lingkungan apa yang mereka gunakan, dan apa kebutuhan mereka. Masalah utama, tidak ada, adalah kesulitan mempelajari kerangka kerja. Beberapa masalah ini meliputi:

  • Kesulitan dalam "jam pertama" dengan kerangka kerja.
  • Ketidakpastian tentang "langkah selanjutnya" setelah mulai cepat.
  • API yang tidak konsisten dalam kode sumber itu sendiri. Satu komponen dapat menggunakan "plugin," "pembantu", dan "filter" lainnya.
  • Ketidakpastian tentang di mana titik ekstensi ada, dan cara memprogramnya.
  • Kebingungan apakah mereka dapat menggunakan Zend Framework hanya sebagai tumpukan MVC atau sebagai komponen individual.

Jadi bukan hanya Anda, sulit untuk semua orang - baca seluruh halaman wiki, ada beberapa hal yang diidentifikasi sebagai kompleks yang tidak perlu. Tetapi bahkan jika persyaratan di atas terpenuhi, tetap saja itu tidak akan menjadi kerangka kerja entry level, artinya itu bukan kerangka kerja yang harus Anda pelajari, tetapi yang harus Anda gunakan ketika Anda benar-benar memahami konsep-konsep yang terlibat.

Karena Anda masih belajar, akan jauh lebih berharga untuk membangun arsitektur MVC Anda sendiri. Posting blog terkenal Rasmus Lerdorf 2 " The no-framework PHP MVC framework " memberikan contoh MVC yang sangat sederhana dan bersih melalui PHP prosedural, tanpa kerangka kerja atau perpustakaan pihak ketiga lainnya yang terlibat.

Tetapi jika Anda benar-benar ingin belajar dengan suatu kerangka kerja, Anda harus mempertimbangkan kerangka kerja mikro alih-alih kerangka penuh. Slim memiliki basis kode yang sangat kecil, bersih, dan teruji tuntas dan harus ideal untuk pembelajaran. Saya belum bermain-main dengan kerangka kerja mikro lainnya, Anda harus melakukan penelitian sendiri dan memutuskan mana yang lebih baik untuk Anda.

Dan untuk pengantar perutean yang cepat dan kotor, lihat jawaban saya untuk pertanyaan ini . Ini bukan konsep yang sangat sulit untuk dipahami, tetapi Zend Framework membuatnya tampak jauh lebih banyak daripada yang sebenarnya .

1 Uraian terbaik yang pernah saya baca untuk ZF adalah bahwa itu adalah kerangka kerja kerangka kerja , bukan kerangka kerja aplikasi. Ini kekuatan mentah dan daftar fitur yang ekstrim tidak cocok untuk situs web kecil hingga menengah. Sayangnya saya tidak dapat menemukan di mana saya membacanya.

2 Baca penafian di bagian atas posting blog.


Pembaruan, terinspirasi oleh komentar @ Karpie:

Kerangka kerja tidak seharusnya sulit, inti dari kerangka kerja adalah untuk membuat segalanya lebih mudah. Ada kemungkinan bahwa bahkan dengan pemahaman yang kuat tentang konsep yang terlibat, ZF tidak cocok untuk Anda.

Ada banyak faktor subjektif yang terlibat ketika memilih kerangka kerja, dan kecuali setiap kerangka kerja lain tidak memiliki fungsionalitas yang Anda butuhkan - dan tidak dapat menulis sendiri, Anda harus menghindari ZF dan menggunakan kerangka kerja yang terasa lebih alami bagi Anda.

Jika Anda tahu konsepnya, kerangka kerjanya seharusnya tidak menghalangi.

yannis
sumber
3
Bahkan dengan pengetahuan konsep-konsepnya, sangat sulit untuk masuk, dan sejujurnya saya tidak berpikir itu sepadan dengan usaha. Dokumentasi sering salah, contoh di web setelah biasanya kedaluwarsa, saluran dukungan IRC umumnya mati, dan dari apa yang saya lihat tidak ada tempat lain untuk mendapatkan dukungan.
sevenseacat
@ Kubie, aku tidak merasa sulit, jujur. Tapi ini agak idiomatis, jadi pasti lebih cocok untuk beberapa pengembang daripada yang lain. Misalnya saya merasa lebih mudah dipahami daripada CodeIgniter, tapi itu hanya karena proses pribadi saya: Saya lebih suka membaca kode daripada dokumentasi, dan kode CI begitu penuh omong kosong, pikiran saya dimatikan. Tetapi bagi kebanyakan pengembang, CI jauh lebih mudah dipelajari daripada ZF, dan tidak semua orang setuju bahwa kode CI penuh dengan omong kosong. Yang penting adalah bahwa suatu kerangka kerja seharusnya tidak sulit untuk digunakan, jika selalu ada orang lain di luar sana.
yannis
Saya menemukan Zend Framework 1 relatif mudah untuk dipahami. Tapi Anda mengatakan ide di balik ZF2 adalah untuk membuatnya lebih mudah , saya merasa itu jauh lebih kompleks daripada sebelumnya.
dibeli 777
Segala sesuatu di ZF2 terlalu rumit. Tidak masalah untuk menghadirkan "kerangka" Zend sebagai kumpulan modul / pustaka. Kerangka aktual tidak ada. Tidak ada lapisan model, jadi Anda harus mengimplementasikannya sendiri, yang biasanya berantakan atau menggunakan Doctrine, yang memerlukan integrasi. Untuk menulis beberapa tes unit, Anda perlu menghabiskan banyak waktu untuk menguraikan manual dan menulis (atau mencoba mencari secara online) beberapa kode hanya untuk mem-bootstrap tes Anda. Meskipun mungkin dibangun di sekitar konsep-konsep yang sehat, interpretasi mereka terhadap konsep-konsep itu mengerikan.
vladko
11

Saya tidak suka kurangnya kemampuan menemukan ketika saya mulai menggunakan Zend Framework, terlalu banyak kelas bergantung pada array dan Anda harus mencari kunci apa yang dapat Anda / perlu mendefinisikan.

Tidak ada yang salah dengan memiliki metode set yang jelas atau bernama params, itu akan, sangat membantu untuk ditemukan.

Kerangka kerja Yii bahkan lebih buruk dengan hal semacam ini.

DBlackborough
sumber
3
+1 Alasan saya yang signifikan untuk tidak mempertimbangkan dengan serius pengambilan ZF / ZF2 adalah karena konfigurasi yang jelek, otomatis lengkap / mengisyaratkan dan menghindari array yang bersarang. Itu melanggar ketidaksukaan pribadi saya tentang penggunaan array yang berlebihan di dunia OO.
Gavin Howden
1
Justru pendapat saya juga.
Daniel
Saya tidak menemukan Yii 1 terlalu sulit. Mungkin itu untuk saya. : P
Eugine Joseph
5

Beberapa masalah dengan ZF, yang membuatnya menjengkelkan (dan sulit bagi pemula) untuk bekerja dengan:

ORM tidak termasuk . Orang akan berpikir bahwa ini harus menjadi dasar kerangka kerja MVC modern, namun ZF hanya datang dengan Zend_Db_Table, yang tingkatannya sangat rendah. Anda dapat menggunakan Doctrine, tetapi kemudian Anda sendiri, itu tidak terintegrasi dengan ZF.

Router URL yang tidak dapat dibaca dan membengkak . Misalnya dibutuhkan 9 baris kode untuk menentukan rute paling sederhana:

$route = new Zend_Controller_Router_Route(
    'archive/:year',
    array(
        'controller' => 'archive',
        'action'     => 'show'
    ),
    array('year' => '\d+')
);
$router->addRoute('archive', $route);

Mengingat jumlah pertanyaan yang terkait dengan ini, itu tidak apa-apa tetapi sederhana bagi kebanyakan orang. Juga, saya tidak bisa menahannya dan membandingkannya dengan Django, di mana yang setara dengan di atasnya

url(r'^archive/(?P<year>\d+)/$', 'archive.show')

Zend_Acladalah cara rumit untuk sebagian besar kasus penggunaan. Biasanya Anda akan memiliki otentikasi untuk mengidentifikasi pengguna. Dan opsi untuk dengan mudah membatasi akses ke beberapa pengontrol hanya untuk pengguna yang diautentikasi. Bagi banyak pengguna kasus itu sudah cukup. Untuk kasus yang lebih rumit, tergantung pada logika bisnis dalam pengontrol untuk menentukan apakah pengguna memiliki izin untuk melakukan tindakan tertentu. Di ZF Anda tidak memiliki opsi untuk dengan mudah membatasi akses hanya untuk pengguna yang diautentikasi, cara standar adalah menggunakan ACL dan sistem peran, terlepas dari betapa sederhananya kebutuhan Anda sebenarnya.

Direktori dan tata letak file bengkak . Struktur direktori yang direkomendasikan terlihat seperti ini:

<project name>/
    application/
        configs/
            application.ini
        controllers/
            helpers/
        forms/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        services/
        views/
            filters/
            helpers/
            scripts/
        Bootstrap.php
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    library/
    public/
        css/
        images/
        js/
        .htaccess
        index.php
    scripts/
        jobs/
        build/
    temp/
    tests/
vartec
sumber
4

Zend Framework seperti sekelompok perpustakaan independen yang bersama-sama berfungsi seperti framework. Sangat sulit untuk mengembangkan sesuatu pada saat yang sama dipisahkan dan "mudah digunakan". Untuk "mudah digunakan" maksud saya melakukan hal-hal kompleks dengan beberapa baris kode.

Jadi, memulai dengan Zend lebih sulit daripada kerangka kerja lainnya, seperti CakePHP. Tapi saya juga lebih mudah memperluas dan menyesuaikan aplikasi Anda tanpa kode kotor. Zend juga mengikuti standar dan pola desain di seluruh kodenya, jadi setelah Anda membaca kode kerangka kerja, Anda dapat menebak apa yang terjadi.

Ketika Anda mengatakan Anda tidak memiliki petunjuk tentang bagaimana model, pandangan dan pengontrol bekerja bersama, tolong, jangan salahkan kerangka ini. Ini mengimplementasikan MVC seperti kerangka kerja lainnya, kecuali itu memisahkan Model dari struktur Database, yang dalam banyak kerangka kerja diimplementasikan di kelas yang sama. Jadi Anda akan menghadapi banyak kelas seperti Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset, dll ...

Itu sebabnya saya pikir Zend Framework lebih rumit, karena sangat dipisahkan dan Anda dapat menggunakan kelasnya di proyek lain yang tidak menggunakan ZF.

gustavotkg
sumber
3

Zend Framework membutuhkan landasan yang kuat dalam OOP dan Pola Desain. Dari pengalaman saya, saya hanya menemukan Java-JEE-Struts-Spring Programmer yang berpengalaman yang mudah akrab dengan Zend Framework. Rata-rata Pengembang PHP merasa sulit untuk mencerna konsep dan Arsitektur di balik Zend Framework. Tapi lihat, hei! Zend Framework berasal dari perusahaan 'Zend' yang menciptakan PHP di tempat pertama. Jadi perlu beberapa pemikiran mungkin jika tidak menghormati!

Rohit
sumber
1
Rasmus Lerdorf membuat php, zend adalah pendukung tinggi php. Dari apa yang saya ingat.
Sarmen B.
Tidak bisa tidak setuju di sana. Saya seorang Pengembang Java. Saya tidak hanya menemukan jalan saya ke ZF dengan mudah tetapi lebih suka ke kerangka kerja lain.
jkushner
-2

Saya percaya zend hanya untuk membuat segalanya menjadi rumit, MVC hanyalah sebuah penipuan yang secara logis berfungsi seperti PHP biasa. tetapi Anda mengembangkannya di depan MVC, seperti memisahkan file di direktori yang berbeda.

Ingatlah bahwa siapa yang mengatakan bahwa Zend sangat aman dan tidak dapat meretas, adalah orang bodoh. Zend juga dapat meretas dengan mudah jika Anda tidak menggunakan perlindungan injeksi Mysql. Saya ingin menyarankan Anda mendefinisikan fungsi Anda sendiri, kemudian memisahkan file Anda di direktori yang berbeda untuk membuatnya mirip seperti MVC menyimpan fungsi Anda, kelas, dan bahan inti lainnya dalam satu direktori yang disebut controller kemudian tambahkan halaman web Anda di direktori yang berbeda di mana Anda perlu untuk memasukkan semua file fungsi direktori ini akan dikenal sebagai view. Tempatkan file javascript dan css Anda di direktori yang berbeda yang akan dikenal sebagai model.

Ingat bahwa, di dunia ini banyak orang selalu bekerja keras untuk membuat sesuatu menjadi lebih rumit, karena mereka sendiri rumit untuk dipahami.

PHP adalah bahasa yang Anda pelajari dalam buku dan dari guru. Zend bukan apa-apa hanya kerangka kerja, untuk membuat hal-hal rumit bagi klien Anda. jadi kapan pun klien membutuhkan modifikasi apa pun, mereka akan berlari kembali ke pengembang nyata dan pengembang itu akan menagih Anda lebih banyak uang. Zend dilindungi semuanya hanya bohong, satu kesalahan seperti coding php biasa dapat menyebabkan situs web dapat diretas.

Pooja dhimbani
sumber
-6

Paling tidak "quick start" thingy harus lebih mudah untuk membuat kerangka yang ramah ..... jika Anda lebih suka sesuatu yang lebih sulit sebagai hal yang lebih baik maka saya akan mengatakan "ZF adalah kerangka PHP terbaik", jika tidak BUKAN. Saya telah mengunduh ZF-2 dan mencobanya (jujur ​​saya pemula untuk ZF). Yang menyedihkan adalah bahwa saya masih belum menemukan "panduan mulai cepat" yang solid dengan Kerangka Proyek sederhana di internet. Yang saya cari hanyalah cara sederhana untuk memasukkan file perpustakaan dan membuat folder proyek dengan fitur MVC. Saya telah menggunakan Codeigniter, Cake php, Yii tetapi saya merasa sangat tidak ramah. Ya saya tahu Zend meningkatkan PHP, tetapi itu tidak berarti bahwa itu adalah kerangka kerja terbaik atau apa pun yang akan Anda katakan.

Ram
sumber
terus tidak suka .... LOL
Ram