Penjelasan sederhana PHP OOP vs Prosedural?

106

Saya ingin belajar PHP dan ingin mendapatkan Ide tentang OOP dan Prosedural. Saya membaca beberapa blog dan tutorial lain tentang OOP vs Prosedural tetapi saya masih tidak dapat memahami pendekatannya.

OOP vs Prosedural

  1. Yang mana yang harus saya pelajari?
  2. Apa perbedaan kode? apa efeknya?
  3. Bagaimana kerangka kerja PHP membantu dalam pendekatan OOP? (Saya ingin belajar CodeIgniter)
  4. Apakah prosedural membutuhkan Kerangka?

Saya sangat ingin mengetahui perbedaan kode dari keduanya, pemahaman saya tentang OOP adalah Anda membuat kelas seperti dan itu dapat diakses. (Saya tidak tahu apakah itu benar).

Terima kasih!

Pennf0lio
sumber

Jawaban:

279

Latar belakang: Anda meminta "penjelasan sederhana" yang menyarankan:

  1. Anda menginginkan gambaran yang tidak masuk akal tanpa jargon
  2. Anda menginginkan sesuatu yang akan membantu Anda belajar dari awal
  3. Anda telah menemukan bahwa tidak ada dua orang yang menjawab pertanyaan dengan cara yang sama , dan itu membingungkan. Itulah alasan Anda di sini meminta penjelasan sederhana. Iya?

Jawaban Tanpa Jargon Singkat:

  1. Banyak penjelasan pengantar melompat dengan cepat ke dalam contoh "OOP dunia nyata". Hal itu cenderung membingungkan lebih dari sekadar bantuan, jadi abaikan saja untuk saat ini.
  2. Anda dapat menganggap kode sumber hanya sebagai "potongan" fungsionalitas, yang kebetulan disimpan ke file individual.
  3. Ada berbagai cara untuk mengatur "potongan" itu; tergantung pada hal-hal seperti konvensi bahasa pemrograman, latar belakang dan pelatihan pengembang, atau preferensi pribadi yang lama.
  4. OOP dan pemrograman prosedural hanyalah dua metodologi utama yang dikenal secara umum, untuk bagaimana mengatur dan mengatur "potongan" kode tersebut.

Jawaban Tanpa Jargon Panjang:

Prosedural vs OOP hanyalah salah satu aspek dari masalah mendasar pemrograman komputer: cara membuat kode Anda mudah dipahami dan sangat mudah dikelola secara profesional . Anda sebenarnya dapat menulis kode "prosedural" yang mengikuti beberapa prinsip OOP, jadi keduanya tidak selalu berlawanan.

Pemahaman Anda akan benar-benar tumbuh setelah Anda mempelajari bahasa pemrograman berorientasi objek lainnya , di antaranya, PHP adalah "anak baru di blok".

Berikut ini ikhtisar singkat tentang apa yang akan Anda pelajari saat Anda membangun pengalaman:

  • Anda dapat menulis kode sumber PHP yang melakukan tugas-tugas berguna
  • Anda dapat mengatur tugas-tugas berguna ke dalam "potongan" kode
  • Anda dapat memikirkan "potongan" kode secara terpisah dari file individual tempat mereka disimpan
  • Terkadang "potongan" kode tersebut akan berperilaku berbeda berdasarkan parameter yang Anda berikan
  • Potongan kode yang menerima parameter disebut "Fungsi"
  • Fungsi dapat " disatukan " , dan ada berbagai cara untuk melakukannya:
    • Misalnya: Anda hanya dapat memiliki satu file PHP besar dengan semua fungsi yang pernah Anda tulis sepanjang hidup Anda, tercantum dalam urutan abjad berdasarkan nama fungsi
    • Misalnya: Anda dapat memiliki beberapa file PHP dengan fungsi yang digabungkan berdasarkan materi pelajaran [mis., Fungsi untuk melakukan manipulasi string dasar, fungsi untuk memproses array, fungsi untuk input / output file, dll]
  • OOP adalah cara khusus untuk "menggabungkan" Fungsi menjadi "Kelas"
  • Kelas hanyalah tingkat lain dari kode "penggabungan" sehingga Anda dapat memperlakukannya sebagai satu kesatuan yang utuh
  • Kelas A dapat dianggap sebagai "chunking" metode dan properti

    • metode hanyalah fungsi yang secara logis terkait satu sama lain dalam beberapa cara yang berarti. Kata "metode" dan "fungsi" pada dasarnya adalah dua istilah yang berbeda untuk hal yang sama.
    • properti hanyalah nilai data yang terkait dengan kelas. Ini adalah nilai yang sengaja tidak diisolasi ke fungsi individu mana pun, karena lebih dari satu fungsi di kelas harus memiliki akses ke sana.
      • Misalnya : jika kelas Anda memiliki sekumpulan metode untuk melakukan astronomi, properti kelas mungkin merupakan nilai untuk bilangan terkenal tertentu yang perlu diketahui oleh semua metode astronomi (seperti Pi, kecepatan cahaya, jarak antara planet tertentu, dll.).
    • Di sinilah sebagian besar penjelasan OOP membingungkan karena bercabang menjadi " contoh dunia nyata " yang dapat dengan cepat keluar dari topik . Seringkali, "dunia nyata" adalah eufemisme untuk perspektif ontologis individu tertentu. Itu cenderung berguna hanya jika Anda sudah memahami konsep tersebut dengan cukup baik untuk diajarkan kepada orang lain.
    • Untuk memahami OOP tanpa kebingungan, Anda dapat melewati contoh "dunia nyata" untuk saat ini, dan cukup fokus pada kodenya. Kelas hanyalah cara untuk menyimpan fungsi (alias metode) dan properti (alias data) sebagai kode PHP dalam satu atau lebih "potongan" terkait di mana setiap "potongan" menangani topik atau fungsionalitas tertentu. Itu saja yang perlu Anda ketahui untuk memulai.
  • Kelas berguna karena memungkinkan Anda untuk mengatur kode Anda pada tingkat yang sangat tinggi dengan cara yang memudahkan Anda untuk memahami, menggunakan, dan memelihara.

  • Ketika seseorang telah menulis banyak fungsi, dan mengaturnya ke dalam banyak Kelas, dan membuatnya bekerja bersama dengan cara yang keren, mereka mengemas semuanya bersama-sama dan menyebutnya "Kerangka" .
  • Framework hanyalah level "chunking" tertinggi berikutnya (termasuk gaya pengkodean dan konvensi) yang disetujui oleh satu atau lebih orang karena mereka menyukai cara kode diatur dan sesuai dengan gaya kerja, preferensi, nilai, rencana dunia mereka dominasi, dll.

Lihat juga

dreftymac.dll
sumber
1
@dreftymac: Anda dapat memberi saya umpan balik tentang apa yang dapat ditingkatkan dalam tambahan saya, alih-alih dengan canggung menghapusnya di belakang saya. Betulkah. Saya menyambut kritik yang membangun, dan saya mengundang Anda untuk melakukan hal yang sama.
Flavius
1
@Flavius ​​Oke. Terima kasih atas usahanya, dan untuk meluangkan waktu sejenak untuk menambahkan. Setelah memikirkannya, tampaknya masuk akal bahwa penambahan yang Anda buat pantas untuk jawaban yang berdiri sendiri.
dreftymac
2
Satu tambahan: Kelas juga berguna untuk menggabungkan data fungsi sehingga Anda tidak perlu menyebarkannya dalam parameter.
chiborg
1
+1 khusus untuk definisi Anda tentang "Kerangka". Saya telah mendengar banyak orang mencoba menjelaskan apa itu kerangka kerja, dan menurut saya kerangka kerja Anda adalah yang paling mudah dipahami.
TecBrat
1
sobat ... ini adalah penjelasan terbaik yang pernah saya baca tentang oop vs prosedural dan saya telah banyak membaca! kerja bagus sangat efektif, sederhana dan langsung ke intinya. Anda benar orang selalu menggunakan contoh dunia nyata dan ini bukan cara yang mudah untuk memahami apapun, itu omong kosong!
thechrishaddad
25

OOP tidak lebih dari pola desain. Jika Anda baru memulai, pelajari dasar-dasarnya dengan berfokus pada pendekatan prosedural. Yang terpenting, kenali prinsip-prinsip dasar seperti loop, kondisi, dan pemanggilan prosedur lain.

Saat Anda membuat kode prosedural, biasakan dengan menambahkan metode terkait di dalam satu file sumber. Belajar untuk membagi prosedur Anda menjadi unit logis dan kemudian Anda sudah mulai menjadi berorientasi objek. Pada dasarnya, objek tidak lebih dari kumpulan metode yang terkait satu sama lain hanya karena mereka beroperasi pada kumpulan data yang sama. (Tidak berbicara tentang database di sini, tetapi data aplikasi!)

OO terutama digunakan untuk membuat kode Anda lebih logis dengan membagi semuanya dalam blok sederhana. Dengan menggabungkan blok yang tepat, Anda mendapatkan aplikasi yang lengkap. OO bukanlah peluru perak atau palu emas yang akan menyelesaikan semua masalah Anda. Namun yang dilakukannya adalah membuat kode Anda lebih mudah dipahami.

Kemudian lagi, beberapa orang masih berhasil membuat kekacauan total dari objek, hanya dengan mengubahnya menjadi objek super besar dengan ratusan metode. Objek semacam itu tidak banyak berbeda dari pendekatan prosedural biasa, hanya karena banyaknya metode yang digabungkan tanpa logika nyata. Ini adalah kesalahan yang mudah dilakukan ketika orang mulai melakukan OOP terlalu cepat.

Wim ten Brink
sumber
3
Saya menemukan beberapa kode OOP menjadi jauh lebih membingungkan .. coba lihat perut prestashop misalnya.
AndrewC
Poin bagus tentang Pretashop. Magento sendiri adalah hewan yang mengepul, tetapi kami memutuskan untuk tetap menggunakannya karena alternatif seperti Pretashop atau WooComm bahkan lebih buruk.
PKHunter
6

Anda harus mempelajari keduanya. Objek hanyalah salah satu dari sekian banyak kemungkinan abstraksi yang ada, dan abstraksi adalah inti dari pemrograman. Yang mengatakan, mulailah dengan hal-hal prosedural, dan kemudian tambahkan objek nanti, karena internal objek PHP tetap prosedural.

Adapun kerangka kerja; pertama-tama pelajari dasar-dasar bahasa, tulis program eksperimental sekali pakai, dan semacamnya. Nanti Anda dapat membiasakan diri dengan kerangka kerja dan mempertimbangkan diri Anda apakah menurut Anda beberapa di antaranya berguna dalam beberapa konteks. Mereka jelas tidak wajib.

Joonas Pulakka
sumber
6

Untuk menambahkan jawaban hebat di atas. Anda harus melihat OOP sebagai perkembangan alami dari gaya pengkodean Anda-ketika Anda mulai menulis program kecil, Anda mungkin hanya perlu mengumpulkan beberapa baris kode php, kemudian mengelompokkannya menjadi beberapa fungsi dan semakin banyak fungsi yang Anda tulis, Anda mungkin merasa perlu untuk mengatur mereka dengan lebih baik ke dalam kelas. OOP biarkan struktur kode Anda lebih baik-memungkinkan pemeliharaan kode yang lebih baik.

Rawdreeg.dll
sumber
6

Php prosedural dan oop menggunakan kode php yang sama. Maka satu-satunya perbedaan adalah dengan prosedural, Anda fokus pada satu tugas dan hanya itu. Dalam oop, Anda mengatur kode Anda menggunakan pola atau potongan yang dapat digunakan kembali di berbagai area kode.

Jawaban sederhananya adalah, Anda perlu mengetahui dan memahami php. Anda bisa mempelajarinya di php.net. Setelah Anda memahaminya, Anda dapat mulai mengatur kode Anda ke dalam chuck.

Kode prosedural menggunakan fungsi, variabel.

Setelah Anda memahaminya, Anda dapat mulai mengatur fungsi dan variabel ke dalam kelas. Kami mulai memanggil fungsi sebagai metode dan variabel sebagai properti.

Semoga berhasil.

Edward Manda
sumber