Pertanyaan Bagaimana cara meningkatkan pengetahuan saya tentang PHP? (cepat) [ditutup]


Saya telah bekerja dengan PHP selama bertahun-tahun dan mendapatkan pemahaman bahasa yang sangat baik, menciptakan banyak sistem canggih dan tidak begitu canggih yang bekerja dengan sangat baik.

Masalah yang saya hadapi adalah bahwa saya hanya belajar ketika saya menemukan kebutuhan untuk sesuatu yang belum saya pelajari sebelumnya. Ini menyebabkan saya mencari solusi dan kode lain yang menangani masalah, jadi saya akan belajar tentang fungsi atau struktur baru yang belum pernah saya lihat sebelumnya. Dengan cara inilah saya telah belajar banyak teknik saya yang lebih baik (seperti mempelajari kelas yang dikeluarkan oleh Amazon, Google atau perusahaan besar lainnya).

Masalah utama dengan ini adalah konsep tidak dapat mempelajari sesuatu jika Anda tidak tahu itu ada. Sebagai contoh, saya butuh beberapa bulan pemrograman untuk belajar tentang empty() berfungsi, dan saya hanya akan memeriksa panjang string menggunakan strlen() untuk memeriksa nilai kosong.

Saya sekarang mulai membangun sistem yang lebih besar dan lebih besar, dan saya mulai membaca blog seperti highscalability.com dan telah meneliti replikasi MySQL dan data server untuk penskalaan. Saya tahu bahwa struktur kode Anda sangat penting untuk membuat sistem bekerja penuh.

Setelah membaca blog baru-baru ini tentang struktur reddit, itu membuat saya mempertanyakan apakah ada beberapa standar atau "sistem yang diterima" di luar sana.

Saya telah melihat ke dalam kerangka kerja (saya telah menggunakan Kohana, yang saya sesali, tetapi memutuskan bahwa kerangka kerja PHP tidak untuk saya) dan saya lebih suka perpustakaan fungsi saya sendiri daripada memiliki kerangka kerja.

Struktur saya saat ini adalah perpaduan antara WordPress, Kohana dan pengetahuan saya sendiri.

Cara-cara yang saya lihat berpotensi menguntungkan adalah:

  • Baca blog
  • Baca tutorial
  • Bekerja dengan orang lain
  • Membaca buku

Apa yang akan menjadi cara terbaik (s) untuk "sampai ke tingkat berikutnya" tingkat menjadi pengembang sistem yang sangat baik?


75
2018-06-01 08:43


asal


Jawaban:


Setiap orang yang ingin menjadi programmer PHP, selalu hanya mengambil kata pertama dan sepenuhnya mengabaikan yang kedua.

Sementara "pemrograman" adalah cara yang lebih penting daripada "PHP", untuk menjadi seorang profesional PHP, seseorang harus menjadi programmer di tempat pertama.

Jadi, saya memilih yang terakhir - membaca buku. Tidak pada PHP, tetapi pada pemrograman secara umum. Grady Boochitu, Martin Fowlerdan bahkan yang lama Donald Knuthyang itu.
Akan lebih baik untuk melihat beberapa bahasa lain, seperti Java atau Python. Bukan untuk beralih ke mereka, tetapi untuk belajar dari mereka.


116



Saya lebih suka perpustakaan fungsi saya sendiri   daripada memiliki kerangka kerja

Anda mengacu pada 'pustaka fungsi' dan 'a' kerangka kerja 'sebagai konsep yang berbeda (baik!) Jadi mengapa tidak mencoba dan menaikkan taruhan sedikit dan mengubah pustaka fungsi itu menjadi kerangka kerja? Pikiran Anda ini adalah cara yang bagus untuk belajar tetapi bukan cara terbaik untuk memiliki keterampilan yang dapat dipasarkan;)

Ini juga cara yang bagus untuk belajar salah jadi sebelum Anda memulai, Anda harus melakukan penelitian.

Fitur "harus memiliki"

Ada fitur-fitur tertentu hampir semua kerangka kerja, dan ada alasan untuk itu. Telitilah mereka; Temukan Mengapa mereka hadir dan apa variasi mereka; pilih penerapan mana yang ingin Anda sertakan dalam kerangka kerja Anda.

  • Berorientasi Objek (ini adalah kunci mengapa Anda menulis kerangka kerja dibandingkan dengan hanya menggunakan pustaka fungsi Anda)
  • Penggunaan Pola (lihat dan mulai tanyakan pada diri Anda mengapa begitu banyak kerangka kerja yang digunakan Pengontrol Aplikasi sebagai lawan Kontroler Depan... dan ada beberapa platform yang digunakan Pengontrol Halaman?
  • Dasar Struktur MVC
  • URL bersih

Fitur platform non-PHP yang ingin Anda pahami dan tiru

Saya tidak tahu minat Anda, jadi saya akan berhenti di situ.

Publikasikan itu!

Bagian ini penting, karena Nathan benar: pekerjaan Anda harus dilihat, ditantang, dikritik, dan dikoreksi oleh orang lain. Jangan tinggalkan lampu di bawah gantang - itu perlu dilihat; meletakkannya di Google kode atau sourceforge atau sesuatu, dan jika orang-orang akan repot-repot melihatnya dengan serius, Anda perlu menganggapnya serius; Anda perlu mempertahankan tes unit dan tes regresi; Anda perlu menggunakan kontrol versi; Anda perlu memberikan komentar dengan baik, dengan besar /* header comment */ di bagian atas setiap file dan komentar yang menghasilkan dokumen yang berguna untuk setiap kelas dan anggota daripadanya.

Ringkasan

Jika Anda melakukan semua ini, Anda dapat belajar (pada tingkat tinggi) tentang platform lain. Anda pasti bisa "ding 40" sebagai pengembang PHP. Anda dapat mempelajari tentang pengujian unit; tentang pengujian regresi. Anda dapat belajar tentang mendokumentasikan secara efektif.

Dijamin kerangka kerja Anda akan keluar "idiosyncratic dan mungkin sucky", tetapi Anda bisa belajar banyak dari menulisnya. Hanya perlu diingat bahwa kerangka itu bukanlah produk; ini sebuah perjalanan ... macam-macam.


28



  1. Memeriksa fitur tersembunyi dari PHP dan Antarmuka standar PHP
  2. Pelajari bahasa yang berbeda. Pelajari bahasa yang memiliki kurva belajar yang lebih tajam daripada PHP. Setiap kali saya menunjukkan kelebihan bahasa lain di PHP, saya dituduh melakukan bashing PHP, kebanyakan adalah orang-orang yang jelas tidak pernah benar-benar menguasai bahasa tingkat tinggi lainnya. Tapi aku akan mengambil risiko. Saya menyarankan Ruby, Python, Pearl dan haXe (sebagai mitra yang diketik secara ketat). Setelah Anda melakukannya, coba terapkan pengetahuan baru Anda ke PHP. Atau hanya menjauh dari PHP, jika Anda tidak ingin kembali (yang saya pikir tidak mungkin terjadi).
  3. Belajar untuk berurusan dengan critisizm. Reaksi Anda terhadap pos Nathan menunjukkan dengan jelas bahwa Anda belum bisa menghadapinya. Dia benar sekali.
    • Melihat kerangka kerja PHP saya yang pertama sekarang, saya harus mengatakan itu cukup menyebalkan. Pada saat itu saya pikir itu hebat (dan masih lebih baik daripada banyak kode produksi yang sudah saya lihat disebarkan). Namun, itu memiliki banyak kekurangan. Kecuali Anda seorang jenius total, kerangka kerja pertama Anda hanya akan terlihat sangat jika Anda melihat kembali pada mereka beberapa tahun kemudian (dengan asumsi Anda berevolusi).
    • Sebenarnya, setiap kerangka yang akan Anda buat akan terlihat lebih buruk seiring berjalannya waktu (dengan anggapan Anda tidak berhenti berevolusi). Untuk alasan ini Anda mungkin juga menggunakan kerangka kerja yang tersedia dan lebih fokus pada pengembangan aplikasi. Jika kerangka kerja yang Anda gunakan memiliki keterbatasan, pertimbangkan untuk berkontribusi daripada menulis lagi kerangka kerja PHP lainnya.
    • Titik waktu untuk memilih menulis kerangka kerja Anda sendiri (tidak hanya untuk bersenang-senang / belajar, tetapi untuk penyebaran produksi) adalah ketika kebutuhan Anda melampaui apa yang ditawarkan kerangka lain di luar sana dan bukan ketika Anda hanya tidak suka ide bekerja dengan satu. Ini adalah kesalahan umum, yang telah saya lakukan sendiri. Tetapi sekarang saya dapat mengatakan, saya telah belajar darinya. Tetapi jika Anda meminta saran (yang sayangnya tidak saya lakukan pada saat itu), Anda akan mendapatkan jawaban seperti ini.
    • Anda belajar banyak dari bekerja dengan kode yang tidak Anda tulis sendiri. Anda tidak hanya mengambil konsep yang dipromosikan oleh kerangka kerja yang dipikirkan banyak orang, tetapi Anda juga belajar menjadi produktif, fleksibel, dapat bekerja dalam tim dan menyelesaikan pekerjaan (sambil mendapatkan hasil yang cukup baik).
    • Saya kira Anda tidak dapat benar-benar berpikir Anda lebih baik daripada setiap tim proyek open source PHP di luar sana, jika tidak Anda akan bertanya. Dapatkan lebih dari kebutuhan naluri keras kepala untuk menemukan kembali roda setiap pengembang muda memiliki dan tumbuh untuk mengatasi masalah belum ada yang belum ditangani.
  4. Pelajari, apa perbedaannya, antara pustaka komponen dan kerangka kerja. Karena Anda pikir Anda dapat mengganti kerangka kerja dengan "pustaka fungsi Anda sendiri", Anda mungkin belum mengerti, apa inti kerangka kerjanya. Silahkan lihat ketergantungan inversi, inversi kontrol dan injeksi ketergantungan.
  5. Pelajari tentang desain perangkat lunak. Lihatlah prinsip-prinsip OO seperti PADAT dan MEMAHAMI.
  6. Coba berbagai paradigma yang berbeda. AOP, pemrograman fungsional. Tingkatkan keterampilan OO Anda menggunakan bahasa dengan orientasi objek yang lebih kuat, seperti Ruby, Objective-C atau Smalltalk.
  7. Lihatlah kerangka kerja PHP seperti Flow3, Symfony, PHP igniter dan CakePHP. Saya sudah menunjukkan mengapa saya pikir Anda harus melakukannya.
  8. Seperti yang ditunjukkan dalam komentar saya yang lain, Anda harus mempertimbangkan penyimpanan lain selain RDBM. SQL dan OOP benar-benar tidak berjalan dengan baik. Silahkan lihat di OODBMS, lapisan abstraksi database yang berbeda, key-value-store, toko dokumen seperti CouchDB dan MongoDB, mendistribusikan server cache sebagai memcache dll.

18



Berikut beberapa pemikiran:

  • Cobalah hal yang berbeda. Pelajari bahasa baru. Beberapa kali dalam proses belajar bahasa lain itu, sebenarnya membuat Anda lebih baik pada keduanya.

  • Berkontribusi pada proyek sumber terbuka.

  • Skalabilitas tinggi dan PHP / MySQL bukan teman. Ada teknologi saat ini yang dibangun hanya untuk itu. node.js dan Redis untuk menyebutkan pasangan.

  • Jawab pertanyaan dalam SO. Masalah orang lain dapat membuat Anda berpikir di luar kotak dan Anda memperbaiki proses mencoba membantu, dan Anda juga melakukan sesuatu yang baik kepada seseorang.

  • [akan mencoba untuk menambahkan di sini jika saya memikirkan hal lain yang saya baru saja bangun minum kopi: D]


11



Belajar untuk melakukan apa yang sudah Anda ketahui ... dengan cara yang berbeda. Contoh:

  • dalam bahasa yang berbeda
  • di platform yang berbeda
  • secara paralel / didistribusikan
  • melalui kerangka kerja (ya, Anda memutuskan bahwa mereka "bukan untuk Anda" - mungkin mencoba yang berbeda, mereka kadang-kadang sangat berbeda satu sama lain)

3



Mungkin Anda harus melihat ke dalam kerangka kerja lagi, saya akan menyarankan melihat pada Zend Framework, karena itu lebih seperti pustaka komponen yang dapat Anda gunakan sesuai keinginan Anda, dan tidak benar-benar memaksakan struktur kaku yang harus Anda ikuti (seperti beberapa kerangka lain lakukan), meskipun itu menunjukkan tata letak proyek (cukup waras imho). Titik awal yang bagus adalah Bertahan dari ujung yang dalam.

Hal-hal yang belum Anda sebutkan, dan itu bisa berguna untuk diketahui (terutama dalam proyek-proyek besar):


3



Sederhana: lakukan. Kebutuhan akan membuat Anda belajar. Temukan cara untuk terlibat dalam proyek yang semakin maju, baik itu komersial atau open source. Tidak ada cara lain yang bisa Anda pelajari.


3



Saya akan bergabung dengan papan diskusi dan mencoba memecahkan masalah orang lain. Kadang-kadang ada pertanyaan yang cukup menantang yang memaksa Anda melakukan penelitian. Jika Anda tidak dapat menjawabnya, Anda dapat menunggu seseorang yang bisa dan belajar sesuatu kemudian.

Adapun kerangka kerja, belajar dari mereka. Saya juga menggulung sendiri, karena sebagian besar kerangka kerja di luar sana bisa agak lambat. Meskipun cukup cepat untuk sebagian besar situs web di luar sana.

Saya juga merekomendasikan melihat perpustakaan PHP Facebook. Mereka melakukan beberapa hal menarik di sana.


3



Yang terbaik yang bisa Anda lakukan adalah membeli buku algoritma yang efisien. Dalam setiap kehidupan mahasiswa ilmu sains ada saatnya dia harus mempelajarinya. Masalah yang dibahas / dipecahkan ada abstraksi dari hampir semua masalah dunia nyata yang mungkin Anda hadapi.

Selain itu membaca blog tentang bagaimana orang lain melakukannya baik-baik saja karena membantu Anda memahami bagaimana praktis menggunakan (dan mungkin bahkan menerapkan) prinsip-prinsip algoritma yang efisien.

Salam.


2