Kapan saya perlu menggunakan framework? [Tutup]

15

Saya baru mengenal pemrograman web dan saat ini saya sedang belajar tentang PHP. Saya ingin tahu kapan saya harus menggunakan kerangka kerja PHP seperti CakePHP? Apa hal-hal yang ditawarkan ini dan kerangka kerja PHP serupa lainnya untuk saya? Dan apakah benar-benar penting untuk menggunakan kerangka kerja untuk menjadi seorang profesional?

  • Dan bisakah saya membuat kerangka kerja saya sendiri untuk menyediakan fitur yang saya suka?
Goma
sumber
3
Saat Anda memahami apa yang ditawarkannya, dan dapat mengatasinya saat dibutuhkan, gunakan kerangka [xyz]. Kerangka kerja adalah alat yang dimaksudkan untuk orang-orang terampil yang tahu cara menggunakannya dan memahami keterbatasan pilihan mereka. Jangan, dalam keadaan apa pun belajar bahasa dengan mempelajari kerangka kerja saja. Itu seperti sengaja mematikan jari-jari kaki Anda, atau penglihatan tepi. Petunjuk, sesi bertingkah aneh tergantung pada kerangka PHP apa yang Anda gunakan .. hati-hati :)
Tim Post

Jawaban:

10

Saat Anda merasa nyaman dengan PHP, Anda bisa mulai menggunakan framework. Dan Anda harus selalu menggunakannya:

  1. Jauh lebih cepat daripada mengkode ulang semuanya
  2. Itu membuat modifikasi lebih mudah, seperti mengubah basis data atau mengubah tampilan
  3. Bekerja dengan orang lain juga akan lebih mudah, karena mereka sering digunakan untuk kerangka kerja pola MVC

Anda dapat membuat kerangka kerja Anda sendiri, tetapi saya pasti tidak akan merekomendasikannya. Ini rumit, sudah ada banyak kerangka kerja yang baik di luar sana, dan sepertinya Anda tidak akan menemukan fitur yang hilang. Selain itu, mereka sering menyediakan cara untuk menambahkan fitur Anda sendiri kepada mereka, tanpa harus membuat yang sama sekali baru.

DistantEcho
sumber
2
+1 untuk Ketika Anda merasa nyaman dengan PHP, Anda bisa mulai menggunakan kerangka kerja. Poin Anda 3) berfungsi dengan baik hanya jika kerangka kerjanya sangat mirip. Saya akan menambahkan "jangan membuat kerangka kerja sebelum banyak menggunakan yang berbeda"
peterchen
8
Saya benar-benar tidak setuju dengan pernyataan "Anda harus selalu menggunakannya". Mereka tidak cocok untuk setiap proyek dan seringkali berakhir membuat modifikasi lebih sulit . Utilitas jauh lebih berharga daripada kerangka kerja.
Nicole
+1 untuk @NickC, saya sangat setuju. Beberapa kerangka kerja mengklaim dinamis dan mudah untuk mengubah keadaan, tetapi kemudian Anda sampai pada titik tertentu dan Anda hanya ... tidak bisa. Saya telah banyak belajar tentang hal-hal seperti itu :)
Steve Hill
Saya setuju bahwa MVC adalah landasan bersama yang sangat baik yang memungkinkan orang lain masuk ke kode Anda dengan sedikit kurva pembelajaran bila digunakan dengan benar. Tapi MVC adalah bintang yang bersinar di sana, kerangka kerja (atau ketiadaannya) hanyalah implementasinya.
Tim Post
Semua ini teoretis dan tidak berhasil dalam praktiknya. Kerangka kerja PHP lebih cenderung membuat semua hal itu lebih sulit. Aplikasi rata-rata yang ditulis oleh awal membutuhkan sekitar lima ratus hingga lima ribu baris kode kerangka kerja. Itu sekitar rata-rata kerja seminggu. Jika lebih dari itu Anda mungkin sedang menulis perpustakaan atau Anda membuat platform batin.
jgmjgm
9

Buat beberapa halaman tanpa kerangka ... Anda pada dasarnya akan mulai menulis kerangka kerja Anda sendiri dengan coba-coba. Setelah Anda melakukannya, pindahlah ke kerangka kerja dan nikmati berapa banyak waktu yang Anda hemat. Mencoba membangun kerangka kerja Anda sendiri dapat mengajarkan Anda beberapa hal, dan akan membantu Anda menghargai kerangka kerja yang sudah ada di luar sana.

Ketika saya pertama kali masuk ke PHP, saya pikir kerangka kerja adalah pemborosan waktu. Sekarang, saya menggunakan CodeIgniter bahkan untuk proyek sederhana. Dibutuhkan sekitar 1 menit untuk bangun dan menjalankan Anda sudah memiliki banyak perpustakaan hebat yang tersedia untuk Anda. Dan, seperti yang disebutkan poster sebelumnya, sebagian besar kerangka kerja dapat diperpanjang, sehingga Anda selalu dapat menambahkan fungsionalitas apa pun yang Anda inginkan.

TaylorOtwell
sumber
2
Tapi bagaimana saya bisa memastikan nanti bahwa kode dalam kerangka persis seperti yang saya inginkan? Maksud saya setiap programmer memiliki gayanya sendiri, bukan? Bagaimana dengan kerangka kerjanya !!
Goma
1
@Goma Bagaimana dengan bahasanya? Saya belum menemukan satu yang melakukan semua yang saya inginkan. Kerangka kerja hanya menambahkan sesuatu yang sangat, sangat mirip (mudah-mudahan pada tingkat abstraksi yang agak lebih tinggi). Serius, pengkodean bukan tentang “membuat segala sesuatu terlihat / berperilaku / menjadi persis seperti yang saya inginkan.” Ini adalah tentang menciptakan sesuatu yang berguna, kode hanyalah kewajiban yang kita tanggung sendiri karena manfaatnya lebih besar daripada biaya memiliki kode dalam tempat pertama.
Christopher Creutzig
Dan Sekarang @TaylorOtwell adalah pencipta Laravel ...
Hos Mercury
4

Seperti kata Niphra , hanya mulai menggunakan kerangka kerja ketika Anda dapat menggunakan PHP tanpa kerangka kerja (yaitu, mengakses database, mengirim tajuk dan konten, pemrosesan string, manipulasi data, dll.). Sejauh pertanyaan Anda:

  • Kapan saya perlu menggunakan kerangka kerja PHP seperti CakePHP? Ketika proyek Anda tumbuh melampaui beberapa file PHP; saat Anda mulai dengan kuat memisahkan logika menjadi elemen yang berbeda dan fungsi modularisasi / berbagi (sesi, dll.) adalah ketika Anda harus menggunakan kerangka kerja.

  • Apa hal-hal yang ditawarkan ini dan kerangka kerja PHP serupa lainnya untuk saya? Abstraksi; alih-alih berinteraksi secara langsung dengan database, Anda dapat menggunakan Object-Relational Mapping (ORM) untuk mengelola struktur dan hubungan antara data Anda dalam database. Sebagian besar kerangka kerja dalam banyak bahasa menyediakan ORM untuk membuatnya lebih mudah untuk berinteraksi dengan lapisan basis data aplikasi Anda. Demikian pula, kerangka kerja sering memisahkan lapisan menanggapi interaksi pengguna. Pemisahan yang paling umum adalah paradigma Model View Controller (MVC), yang, singkatnya, mengabstraksi logika database ke dalam Model (sebuah antarmuka ke ORM, dalam banyak kasus), memproses permintaan dan berinteraksi dengan Model menjadi Controller, dan rendering dari HTML / PDF / image / dll yang sebenarnya. ke dalam View. Kerangka kerja sering menyediakan alat lain seperti perutean (untuk memungkinkan pemrosesan URI permintaan yang kompleks (EG: Memetakan permintaan "http://example.com/users/1 "ke Pengguna pengontrol, yang kemudian mencari Model pengguna dengan ID 1) dan abstraksi sesi dan struktur dasar lainnya.

  • Dan apakah benar-benar penting untuk menggunakan kerangka kerja untuk menjadi seorang profesional? Belum tentu; kerangka kerja membuat hidup lebih mudah; tetapi Anda tidak harus menggunakannya untuk menjadi profesional. Kerangka kerja memberikan abstraksi dan standardisasi yang praktis, tetapi mereka bukan persyaratan dalam kebanyakan kasus.

beladau
sumber
3

Setelah membaca beberapa jawaban, saya ingin mengatakan dulu bahwa Anda tidak sering memiliki banyak pilihan tentang kerangka kerja apa yang akan Anda gunakan atau apakah Anda akan menggunakan salah satu atau tidak (sebagai seorang profesional). Saya tidak ingin mengintimidasi Anda, tetapi Anda perlu membangun cukup pemahaman tentang PHP untuk memungkinkan berpindah dari satu kerangka kerja ke kerangka kerja lainnya serta menggunakan lebih dari satu kerangka kerja sekaligus.

kapan saya harus menggunakan kerangka kerja PHP seperti CakePHP?

Tidak ada jawaban universal untuk ini. Sebagai seorang profesional, Anda akan ditugaskan untuk menyelesaikan masalah spesifik dan ini akan menjadi faktor penentu untuk kapan dan apa dari setiap proyek, terutama jika klien memiliki permintaan khusus. Tetapi secara umum, Anda akan selalu menggunakan beberapa bentuk kerangka kerja dengan PHP, kecuali jika Anda memodifikasi atau memperluas aplikasi yang sudah ada sebelumnya yang memiliki kerangka kerja sendiri (seperti Wordpress atau PHPBB).

Apa hal-hal yang ditawarkan ini dan kerangka kerja PHP serupa lainnya untuk saya?

Seperti yang dikatakan oleh dirk, mereka menawarkan abstraksi. Artinya, mereka mengambil prosedur umum multi-langkah dan mencoba membuatnya sesederhana dan sesingkat mungkin. Singkatnya, mereka mencoba menghadirkan solusi hanya-tambahkan-air untuk tugas-tugas umum.

Dan apakah benar-benar penting untuk menggunakan kerangka kerja untuk menjadi seorang profesional?

Secara umum, tidak, tidak penting menggunakan kerangka kerja untuk menjadi seorang profesional. Tetapi secara realistis, Anda tidak akan memiliki banyak karier jika Anda tidak terbiasa dengan setidaknya beberapa kerangka kerja umum. PHP tanpa kerangka kerja seperti C ++ tanpa pustaka std. Anda tidak memerlukannya, dan Anda benar-benar dapat melakukan lebih banyak tanpa itu karena Anda akan langsung menggunakan fungsionalitas blok-blok builing tingkat rendah dari bahasa tersebut, tetapi Anda akan membutuhkan waktu lebih lama untuk melakukan hal yang sama.

Dan bisakah saya membuat kerangka kerja saya sendiri untuk menyediakan fitur yang saya suka?

Iya. Bahkan, Anda mungkin akan berakhir melakukannya meskipun tanpa disengaja. Maksud saya ini bukan kerangka kerja do-all yang ekspansif, tetapi lebih seperti tool-bag fungsi dasar dan skrip yang melakukan tugas tidak umum atau cukup umum untuk ditangani oleh kerangka kerja rata-rata. Milik saya pada dasarnya terdiri dari berbagai sistem file, penanganan proses, dan rex-ex tid-bit dengan beberapa utilitas curl dan stream / socket yang berbeda.

JSON
sumber
1

Biasa dari orang yang menghabiskan waktu bertahun-tahun meretas cara saya sendiri untuk berbicara ke database dan berbicara dengan API online dan baru sekarang mulai menggunakan kerangka kerja, menggunakannya ketika Anda setidaknya memiliki pemahaman tentang apa yang mereka lakukan, jika mungkin.

Jangan langsung melompat ke RedBean saat pertama kali bekerja dengan database, bekerja dengan DB secara manual terlebih dahulu. Dengan cara ini Anda memiliki pemahaman menyeluruh tentang apa yang sebenarnya Anda ambil dan lakukan untuk DB, yang benar-benar dapat membantu dengan skalabilitas. Anda juga dapat membuat solusi sendiri ketika kerangka kerja yang Anda gunakan tidak melakukan sesuatu yang perlu Anda lakukan.

Setelah Anda memahami apa yang terjadi, gunakan kerangka kerja! Itu membuat segalanya jadi lebih mudah. Crazyness dengan menyimpan query kemudian perulangan atas hasil dengan mysql_fetch_assocsemua pergi, dikurangi menjadi satu panggilan: $book = R::load( "book", $id ). Anda akan jauh lebih produktif dan dapat memperbaiki bug di masa depan atau menambahkan fitur di masa depan dengan lebih mudah.

TheLQ
sumber
1

Gunakan kerangka kerja ketika Anda tahu teknologi yang mendasari cukup baik untuk mengetahui apa yang dilakukan kerangka kerja untuk Anda, dan mengapa itu baik (atau buruk)

Kerangka kerja adalah semacam alat-meta, yang memungkinkan Anda untuk bekerja dengan alat-alat Anda (bahasa, database) sedikit lebih cepat tanpa harus khawatir tentang beberapa detail dari apa yang Anda lakukan, yang baik jika Anda benar-benar tahu Anda alat.

Apa yang Anda TIDAK ingin terjadi adalah bahwa Anda mempelajari kerangka kerja alih-alih alat, dan menjadi dinaikan ke dalam cara tertentu dalam melakukan sesuatu, dan akhirnya tidak benar-benar mengambil penguasaan bahasa dan konsep yang mendasarinya - itu harus menjadi alat, bukan kruk.

Eli
sumber
1

Ketika Anda mendapati diri Anda melakukan hal yang sama berulang-ulang, lihatlah sekeliling dan lihat apakah ada kerangka kerja yang melakukan hal-hal yang sama berlebihan yang akhirnya Anda lakukan sendiri. Jangan hanya menggunakan kerangka kerja karena hype. Saya pribadi menyukai CodeIgniter dan Rasmus Lerdorf's "no-framework PHP MVC framework" http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html

programmer
sumber
Saya telah menulis beberapa 'kerangka kerja tanpa kerangka' untuk meringankan rasa sakit menambahkan fitur-fitur baru ke sebagian besar situs statis (dan besar) yang tidak dapat dengan mudah dipindahkan ke sistem manajemen / publikasi apa pun, sehingga mereka memiliki kegunaannya. Tetapi saya tidak akan menggulirkan proyek saya sendiri untuk proyek baru (saya hanya akan menggunakan CI jika kerangka kerja dipanggil).
Pos Tim
@Tim Post Biasanya tidak pernah ada jawaban hitam dan putih untuk pertanyaan ini. Itu semua tergantung pada proyek yang dihadapi, posting asli tidak memberikan rincian tentang proyek tertentu.
programmer
1
Sepertinya saya mendapat suara turun dari kerangka kerja fanatik, bagus!
programmer
Twasn't me :) Seseorang mungkin bereaksi terhadap tautan yang Anda posting tanpa benar-benar menjelaskannya.
Tim Post
@Tim Posting Heh! Itu sebabnya saya memastikan untuk memisahkan kedua komentar ini. : D
programmer
-1

Saya akan merekomendasikan berpikir dengan hati-hati mengapa Anda akan menggunakan framework x, y atau z. Setiap kerangka kerja tidak hanya menyediakan fungsionalitas, yang tidak harus Anda terapkan sendiri, tetapi juga cara berpikir. Lihat saja Spring, JEE, Rails atau Django. Empat kerangka kerja yang menyediakan cukup untuk menginjak aplikasi web dalam waktu singkat.

Namun keempat mempromosikan cara berpikir mereka sendiri tentang bagaimana aplikasi web harus dibangun. Jika itu tidak sesuai dengan kebutuhan Anda atau sesuai dengan selera Anda, Anda akan kesulitan mengambil hal-hal lebih lanjut.

Ini merupakan perbandingan yang sangat radikal, tetapi mungkin membangun perpustakaan kecil lebih sesuai dengan kebutuhan Anda. Tetapi kerangka kerja yang pasti akan membantu Anda bekerja dalam tim yang lebih besar atau menemukan pekerjaan baru, karena itu menunjukkan bahwa Anda tertarik dalam pengembangan perangkat lunak secara keseluruhan.

Florian Salihovic
sumber
-2

Kerangka kerja selalu baik untuk digunakan dari awal. Ini mempromosikan kegunaan kembali kode, keterbacaan yang lebih baik dan menghemat sedikit waktu pengembangan.

Saya tidak terlalu berpengalaman dengan PHP, tapi saya akan mendorong penggunaan kerangka apa pun.

Pierre Pretorius
sumber
Mengapa suara turun?
Pierre Pretorius