Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Membuat Kerangka PHP5 - Bagian 2

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Dengan struktur dasar untuk Kerangka kami di tempatnya, sekarang saatnya untuk mulai menambahkan fungsionalitas ke dalamnya. Dalam tutorial ini kita akan membuat manajer template dan handler database, membawa kita selangkah lebih dekat ke Kerangka yang kuat yang cocok digunakan untuk hampir semua proyek. Jika Anda belum melakukannya, pastikan untuk meninjau Bagian 1 dari seri ini terlebih dahulu!




MVC: Tweak strukturnya

Pada bagian pertama tutorial ini, kita membuat sebuah folder bernama controllers untuk menyimpan logika bisnis untuk aplikasi kita. Seperti yang ditunjukkan daok dalam sebuah komentar, ini bukan tempat terbaik untuk semua logika bisnis, dan bahwa sebuah model harus digunakan untuk menyimpan logika ini. Sebelumnya, saya selalu menggunakan database itu sendiri sebagai model dalam sebagian besar aplikasi saya, namun memisahkan hal ini sedikit lebih akan membuat kerangka kerja kita semakin kuat, dan lebih mudah diperluas.

Jadi, apa itu MVC? MVC adalah pola desain (seperti pola Singleton dan Registry yang kita lihat di bagian 1), dan ini adalah singkatan dari Model View Controller, dan tujuan dari pola ini adalah memisahkan logika bisnis, tindakan antarmuka pengguna dan antarmuka pengguna dari satu sama lain. Meskipun kami tidak akan melakukan apapun dengan model dan controller kami dulu, mari memperbarui struktur folder kerangka kerja kami untuk menyertakan folder "models". Model akan berisi logika bisnis utama, dan controller akan menangani interaksi pengguna (misal: mengirimkan data, seperti komentar). NB: Fungsi __autoload kita tidak perlu diubah.

Handler Database

Sebagian besar situs web dan aplikasi web yang memanfaatkan PHP juga memanfaatkan mesin database, seperti MySQL. Jika kita menyimpan semua fungsi terkait database kita di tempat yang sama, maka kita bisa (secara teori) dengan mudah mengubah mesin database yang kita gunakan. Kita juga bisa membuat operasi tertentu lebih mudah, seperti memasukkan record, memperbarui record atau menghapus record dari database. Ini juga bisa mempermudah saat menangani beberapa koneksi database.

Jadi... apa yang harus dilakukan handler database kita:

  • Mengelola koneksi ke database
  • Mencoba memberikan beberapa tingkat abstraksi dari database
  • Cache kueri-kueri sehingga bisa kita gunakan nanti
  • Menjadikan operasi database menjadi lebih mudah

Mari kita lihat kode untuk handler database kita, kemudian kita akan membahasnya setelahnya.

Sebelum membahas hal ini secara lebih rinci, saya harus menunjukkan bahwa handler database ini sangat mendasar. Kita dapat memberikan abstraksi lengkap dengan tidak mengeksekusi kueri secara langsung, namun membangun kueri berdasarkan paramater ke fungsi kueri, dan kemudian menjalankannya.

Metode delete, insert dan update record memudahkan kita untuk melakukan beberapa tugas umum (seperti yang saya sebutkan di atas, kita bisa memperpanjangnya untuk melakukan lebih banyak hal), dengan hanya memberikan informasi seperti nama tabel, array field dan nilai yang berhubungan, nilai batas dan ketentuan. Kueri juga bisa "di-cache" sehingga kita bisa melakukan sesuatu nanti. Saya menemukan fitur ini (dan juga kemampuan untuk "cache" data array) sangat berguna saat dikombinasikan dengan manajer template, karena dengan mudah kita dapat melakukan iterasi melalui barisan data dan memasukkannya ke dalam template kita dengan agak mudah, seperti yang akan Anda lihat saat kita melihat manajer template.

Kita juga dapat bekerja dengan beberapa koneksi database dengan relatif mudah, asalkan kita beralih di antara koneksi yang sesuai saat kita perlu (walaupun ini tidak akan berhasil saat melakukan cache kueri dan mengambilnya melalui manajer template kita tanpa kerja lebih jauh), misalnya, cuplikan kode di bawah ini akan memungkinkan kita menghapus record dari dua database.

Bagaimana mungkin kita ingin memperluas kelas ini?

  • Abstraksi penuh
  • Memanfaatkan pewarisan, membuat sebuah antarmuka dan mewariskan kelas database darinya, masing-masing untuk mesin database yang berbeda
  • Menyimpan ID koneksi beserta kueri saat melakukan caching kueri
  • Memperbaiki sanitasi data, tergantung dari jenis data yang ingin kita sanitasi

Manajer Template

Manajer template akan menangani semua output, itu perlu untuk dapat bekerja dengan berbagai file template yang berbeda, menggantikan placeholder (saya menyebutnya tag) dengan data dan iterasi melalui bagian-bagian template dengan beberapa baris data dari database.

Untuk mempermudah, kami akan menggunakan kelas halaman untuk memuat konten yang terkait dengan halaman, ini juga mempermudah kami untuk memperpanjang fitur ini dan menambahkan fitur padanya nanti. Manajer template akan mengelola objek ini.

Jadi, apa sebenarnya yang dilakukan kelas ini?

Membuat objek halaman kita, dan mendasarkannya dari file template, objek halaman berisi konten dan informasi yang dibutuhkan untuk membuat HTML halaman. Kita kemudian buildFromTemplate('templatefile.tpl.php', 'templatefile2.tpl.php') untuk mendapatkan konten awal untuk halaman kita, metode ini mengambil sejumlah file template sebagai argumennya, dan menjahitnya bersama-sama secara berurutan, berguna untuk template header, konten dan footer.

Mengatur konten yang terkait dengan halaman dengan membantu objek halaman menyimpan data yang akan diganti ke dalam halaman, dan juga bit template tambahan yang perlu dimasukkan ke dalam halaman (addTemplateBit('userbar','usertoolsbar.tpl.php')).

Menambahkan data dan konten ke halaman dengan melakukan berbagai operasi penggantian pada konten halaman, termasuk mengambil hasil dari query yang di-cache dan menambahkannya ke halaman.

File template perlu menandai dirinya sendiri di mana permintaan kueri yang di-cache perlu diambil dan data dari kueri diganti. Ketika manajer template menemukan sebuah tag untuk menggantikan kueri, itu akan menjadi potongan halaman yang perlu diiterasi dengan memanggil getBlock('block') pada objek halaman. Potongan konten ini kemudian disalin untuk setiap record dalam kueri, dan memiliki tag di dalamnya diganti dengan hasil dari kueri. Kita akan lihat bagaimana tampilannya dalam template nanti di tutorial ini.

Manajer Template: Halaman

Objek halaman dikelola oleh manajer template, dan seharusnya berisi semua rincian yang terkait dengan halaman. Ini membuat manajer template bebas mengelola, sekaligus mempermudah kita untuk memperluas fungsionalitas ini di kemudian hari.

Bagaimana kelas ini dapat diperluas dan diperbaiki?

  • PostParseTags: Anda mungkin ingin mengganti tag setelah sebagian besar halaman telah diurai, mungkin konten dalam database berisi tag yang perlu diurai.
  • Halaman yang diberi kata sandi: Menetapkan kata sandi ke halaman, periksa untuk mengetahui apakah pengguna memiliki kata sandi dalam sebuah cookie atau sesi untuk memungkinkan mereka melihat halaman tersebut.
  • Halaman yang dibatasi (walaupun kami memerlukan komponen autentikasi kami terlebih dahulu!)
  • Mengubah
  • Secara dinamis menambahkan referensi ke file javascript dan css berdasarkan halaman atau aplikasi.

Memuat objek inti

Sekarang kita memiliki beberapa objek yang registri kita akan menyimpannya untuk kita, kita perlu memberitahu registri objek yang mana ini. Saya telah membuat sebuah metode dalam objek PCARegistry yang disebut loadCoreObjects yang (seperti yang dikatakannya) memuat objek inti. Ini berarti bisa saja memanggil ini dari file index.php kita untuk memuat registri dengan objek-objek ini.

Metode ini dapat diubah kemudian untuk menggabungkan objek inti lainnya yang harus dimuat oleh registri, tentu saja mungkin ada objek yang kita inginkan agar dikelola oleh registri kita, namun hanya bergantung pada aplikasi yang digunakan kerangka ini. Objek-objek ini akan dimuat di luar metode ini.

Beberapa Data

Agar kita dapat menunjukkan fitur baru yang ditambahkan ke kerangka kerja kita, kita memerlukan sebuah database untuk memanfaatkan handler database, dan beberapa fungsi manajemen template (dimana kita mengganti satu blok konten dengan baris dalam database).

Situs demonstrasi yang akan kita buat dengan kerangka kerja kita di akhir rangkaian tutorial ini adalah situs web dengan direktori anggota, jadi mari membuat tabel database yang sangat mendasar untuk profil anggota, berisi ID, nama, dan alamat email.

Jelas, kita memerlukan beberapa baris data dalam tabel ini!

Template cepat

Agar ada sesuatu yang akan ditampilkan, kita memerlukan template dasar, di mana kita akan mencantumkan data dari tabel anggota kita.

Komentar HTML START members dan END members menunjukkan blok anggota (yang diperoleh melalui metode getBlock() di halaman), ini adalah tempat manajer template akan melakukan iterasi melalui record di database dan menampilkannya.

Kerangka yang sedang digunakan

Sekarang, kita perlu membawa semua ini bersama-sama, dengan file index.php kita:

Jika sekarang kita melihat halaman ini di browser web kita, hasil kueri akan ditampilkan di halaman:

Datang di bagian 3...

Pada bagian ketiga kita akan mengambil sedikit jalan memutar dari sisi pengembangan Kerangka kita, dan melihat bagaimana mendesain dengan kerangka kerja kita, dan bagaimana mengiris template HTML sehingga sesuai untuk kerangka kerja kita. Ketika kita mulai membangun aplikasi pertama dengan kerangka kerja kita, kita akan melihat secara lebih rinci beberapa cara kerja kelas-kelas ini. Akhirnya, terimakasih atas komentar Anda terakhir kali!

  • Berlangganan Feed RSS NETTUTS untuk tutorial dan artikel pengembangan web harian lainnya.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.