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

Cara Membuat Blog Berorientasi Objek Menggunakan PHP

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Rohmat Trimanto (you can also view the original English article)

Dalam beberapa minggu terakhir, NETTUTS telah memposting beberapa tutorial hebat tentang cara memulai menggunakan PHP dan MySQL untuk membuat aplikasi web sederhana seperti shout box. Hari ini kita akan mengambil pengetahuan tentang PHP dan MySQL selangkah lebih maju dengan membuat blog sederhana. Meskipun ada banyak platform blog gratis yang sangat bagus, tujuan dari tutorial ini bukan untuk membuat blog "lebih baik" tetapi untuk menggunakan proses pembuatan blog untuk belajar tentang teknik struktur database lanjutan dan bagaimana menggunakan data lebih efisien dengan memanfaatkan objek di PHP.

Untuk tutorial ini diasumsikan bahwa Anda memiliki beberapa pemahaman dasar tentang PHP, MySQL, XHTML, dan kemudian pada jQuery / JavaScript.

Bagian 1) Membuat Basis Data kami

Sebelum kita pindah ke klien MySQL kami dan mulai membuat tabel kami, kami harus meletakkan apa yang kami inginkan di blog kami. Yang jelas yang perlu kita pegang adalah posting blog, dan di setiap posting harus berisi judul, posting, pengarang, dan tanggal diposting.

Sekarang kita bisa membuat satu meja untuk menyimpan informasi itu, dan kemungkinan besar mencapai pembuatan blog dasar, tetapi hanya dengan satu tabel kita tidak akan memiliki banyak kendali atas data kami. Misalnya, kita hanya bisa menyimpan nama penulis di tabel yang sama dengan posting blog, tetapi bagaimana jika kita ingin juga menyimpan email penulis? Yakin! Kami hanya menambahkan bidang lain ke meja kami akan menjadi solusi yang jelas.

Masalah muncul ketika di jalan Anda ingin mengubah alamat email penulis itu. Sekarang Anda harus mengubahnya untuk setiap posting blog yang dibuat orang itu.

Jadi apa yang akan kita lakukan adalah membuat tabel terpisah yang disebut "People" dan dalam hal ini, kita akan menyimpan semua informasi yang kita butuhkan dari penulis - seperti email, URL, nama mereka, dan ID unik. Kemudian dalam tabel posting blog kami, kami akan menunjuk ke orang yang kami inginkan menggunakan ID unik orang itu. Id ini disebut sebagai kunci asing dan hubungan antara tabel pos blog dan tabel orang disebut hubungan satu ke banyak.

Satu hal lain yang ingin kami miliki di blog kami adalah tag untuk setiap posting blog. Sekali lagi kami ingin membuat database kami efisien sehingga kami akan membuat tabel terpisah untuk tag kami. Sekarang apa yang kita lakukan? Haruskah kita membuat bidang di tabel posting blog yang merupakan kunci asing untuk tag kami? Masalah dengan menggunakan hubungan satu-ke-satu kali ini terkadang posting blog memiliki lebih dari satu tag; jadi sekali lagi, kita akan menggunakan hubungan satu ke banyak. Untuk melakukan ini kita perlu membuat tabel lain yang akan disebut sesuatu seperti "blog_post_tags" yang akan menyimpan dua kunci asing, satu akan menjadi ID posting blog dan yang lain akan menjadi ID tag yang dikaitkan dengan posting blog. Dengan cara ini kami dapat menetapkan tag sebanyak yang kami inginkan ke posting blog tetapi masih dapat mengedit informasi tentang tag spesifik di semua posting dengan permintaan MySQL sederhana.

Sekarang kita telah menggariskan seperti apa tampilan database kita, mari kita ciptakan. Saya akan menggunakan PhpMyAdmin karena itu adalah klien admin MySQL yang paling banyak digunakan. Ada beberapa konvensi penamaan berbeda yang dapat Anda gunakan saat membuat database, tabel, dan nama bidang Anda. Saya pribadi suka menggunakan semua huruf kecil dan garis bawah sebagai ganti spasi.

Catatan: Jika Anda tidak memiliki PHP dan MySQL pada sistem Anda atau server yang dapat menjalankannya, saya sarankan mengunduh instalasi yang berdiri sendiri dari Apache, PHP, dan MySQL. MAMP bagus untuk Mac dan WAMP bagus untuk PC.

Pertama kita perlu membuat database kami, saya akan menyebutnya "nettuts_blog".

Selanjutnya, kita akan membuat tabel kita; yang pertama adalah "blog_posts".

"blog_posts" akan memiliki lima bidang: "id", "title", "post", "author_id", dan "date_posted". Untuk "id" kita akan menjadikannya kunci utama dan mengaturnya ke auto-increment. Apa yang akan dilakukan adalah menghasilkan id unik kami untuk kami. Setiap kali kami menambahkan postingan, ia akan memberinya nomor mulai dari satu dan bergerak naik untuk sebanyak mungkin posting yang kami miliki.

Sekarang kita juga perlu mengatur jenis variabel untuk setiap bidang. ID akan diatur untuk mengetik int, kependekan dari integer, karena itu hanya dapat berupa angka dan kita akan mengatur panjang maks ke 11. Field "title" akan diatur untuk mengetikkan varchar dengan panjang maksimal 255. Bidang "post" akan menjadi "text" dan kami tidak akan menetapkan panjang maksimal karena posting bisa sangat panjang. "author_id" akan sama dengan "id" tetapi kami tidak akan menetapkannya sebagai kunci utama kami atau menambahkannya secara otomatis, dan kami akan menetapkan "date_posted" untuk mengetik "Date".

Meja kita berikutnya adalah "people". Kami tidak menyebutnya "authors" karena di jalan kami mungkin ingin menciptakan kemampuan untuk mendaftar dan mengirim komentar dan orang-orang itu tidak akan dianggap sebagai penulis.

"people" akan berisi lima bidang juga: "id", "first_name", "last_name", "url", dan "email".

"id" akan ditetapkan sebagai int, kunci utama, dan untuk kenaikan otomatis, cara yang sama kita menetapkan id dari "blog_posts". "first_name", "last_name", "url", dan "email" semua akan diatur untuk mengetikkan varchar dengan panjang maksimal 255.

Tabel kami berikutnya akan menjadi "tags" dan akan untuk saat ini hanya berisi dua bidang: "id" dan "name". Di jalan kita bisa membuat ini lebih rumit dengan menambahkan deskripsi tetapi untuk tutorial ini, kita tidak akan melakukannya. Seperti yang kita lakukan sebelum "id" akan ditetapkan sebagai int, kunci utama, dan untuk kenaikan otomatis. "name" akan menjadi tipe varchar dan memiliki panjang maksimal 255.

Dan tabel terakhir kami, "blog_post_tags", hanya akan memiliki dua bidang: "blog_post_id" dan "tag_id". Mereka berdua akan diatur untuk mengetik int dengan panjang maksimal 11. Seperti yang kemungkinan besar Anda perhatikan, kami tidak menetapkan kunci utama untuk tabel ini. Ini karena kami tidak akan pernah mendapatkan data dari tabel ini kecuali kami meminta posting blog tertentu atau semua posting dari id tag tertentu.

Bagian 2) Membuat Objek kami di PHP

Sebelum kita mulai ke kode PHP kita yang sebenarnya kita perlu membuat file dan folder kita, untuk tutorial ini kita akan memiliki index.php di folder root kita, kemudian folder yang akan memuat style sheet CSS, file JavaScript, termasuk.php yang akan menyimpan referensi ke objek kami dan koneksi MySQL, dan blogpost.php yang akan menahan obejct BlogPost kami.

Setelah kita mengatur database kita, kita perlu membuat objek dalam PHP yang akan menangani data untuk kita. Objek dalam pemrograman adalah cara untuk menggabungkan atribut yang berbeda (sebagai variabel) dan metode yang semuanya berhubungan dengan hal yang sama. Objek juga membantu kami mengatur program kami lebih banyak lagi. Sebelum kita melompat ke objek kita untuk blog kita, mari kita buat objek sederhana sehingga kita dapat mengilustrasikan apa yang mereka dalam istilah "kehidupan nyata" lebih.

Objek kami akan disebut "Bike", sekarang ada dua jenis hal yang dimiliki setiap objek, properti dan metode. Properti menentukan objek dan metode adalah apa yang dilakukan objek. Misalnya, objek Bike kami akan memiliki properti seperti ukuran roda, jumlah roda gigi, dan mungkin ukuran bingkai. Untuk metode kami mungkin memiliki sesuatu seperti "Pedal".

Sekarang untuk kembali ke blog kami, kami hanya membutuhkan satu objek untuk sekarang disebut "BlogPost". BlogPost akan memiliki enam properti, id, judul, posting, penulis, tag, dan tanggal diposting. Jadi mari membuatnya dalam PHP.

Untuk mendefinisikan suatu objek dalam PHP kita mendefinisikannya sebagai "kelas". Kelas adalah struktur dari setiap objek, atau sebagaimana wikipedia mendeskripsikannya, "Dalam pemrograman berorientasi obyek, kelas adalah konstruksi bahasa pemrograman yang digunakan sebagai cetak biru untuk membuat objek. Cetak biru ini mencakup atribut dan metode yang dibuat oleh semua objek yang dibuat. " (http://en.wikipedia.org/wiki/Concrete_class). Kami akan membuka halaman blogpost.php kami dan menentukan objek pertama kami.

Catatan: Di setiap bagian tutorial, saya akan meninggalkan tag PHP pembuka dan penutup; "<? php" dan "?>" Anda harus memasukkannya di awal dan akhir dokumen Anda.

Di kelas kami, pertama-tama kita perlu mendefinisikan properti kita. Untuk melakukan ini, kita harus membuat variabel - tetapi dengan "publik" di depan mereka. Hanya catatan singkat, jika Anda menggunakan PHP4 maka Anda akan perlu menggunakan "var" bukan "publik".

Sekarang setelah semua properti kami ditentukan, kami ingin mendefinisikan metode pertama kami. Metode juga digambarkan sebagai fungsi, tetapi perbedaan utamanya adalah bahwa suatu metode adalah fungsi di dalam suatu objek. Jadi semua metode juga berfungsi tetapi tidak semua fungsi adalah metode.

Metode pertama kami akan menjadi apa yang disebut konstruktor; metode ini secara otomatis dipanggil setiap kali kita membuat instance baru dari objek BlogPost.

Penggunaan umum konstruktor adalah agar Anda dapat membuat objek baru dan mengatur properti objek tersebut dengan cepat.

Jadi apa yang ingin kita lakukan adalah membuat fungsi baru yang disebut __construct () dan kita akan lulus dalam lima nilai, id, judul, posting, id penulis, dan tanggal diposting. Untuk setiap nama variabel kita akan memasukkan "dalam" sebelum kata sehingga kita dapat mengatakan di dalam fungsi kita apa variabel yang sedang diteruskan dan variabel apa yang sudah ada.

Masalahnya di sini adalah bahwa, dengan kode saat ini, setiap kali kita membuat contoh baru dari BlogPost kita perlu menyediakan semua properti tersebut. Tetapi bagaimana jika kita ingin membuat posting blog baru dan belum mendefinisikan variabel-variabel itu? Untuk menangani ini, kita perlu "melebihkan" argumen untuk fungsi kita sehingga jika kita memanggil fungsi dan tidak meneruskan salah satu argumen, maka secara otomatis akan mengaturnya ke nilai default.

Seperti yang Anda lihat, semua yang kami lakukan untuk menyelesaikan tugas kami adalah mengatur setiap argumen ke nilai "null". Sekarang di dalam konstruktor kami, kami perlu mengatur masing-masing variabel kami ke nilai yang kami lewati. Untuk melakukan ini kita ingin mengaturnya ke objek kita sekarang; Kita bisa melakukan ini dengan kata kunci "ini". Tidak seperti banyak bahasa lain untuk mengakses properti di PHP Anda menggunakan "->" di mana dalam sebagian besar bahasa (I.E. JavaScript, ASP.NET) Anda menggunakan ".".

Ini berfungsi untuk id, judul, dan posting. Tapi bagaimana dengan yang lainnya? Untuk tanggal ini kami akan perlu memformat ulang data yang kami dapatkan dari MySQL agar lebih mudah dibaca. Itu mudah dicapai; Kami hanya meledakkannya (juga dikenal sebagai pemecahan dalam bahasa pemrograman lain) dan kemudian menyatukannya kembali. MySQL memberikannya kepada kita dalam format ini yyyy-mm-dd, jadi jika kita meledakkannya menggunakan "-" sebagai pemisah kita, kita akan mendapatkan sebuah array yang memiliki tiga nilai. Yang pertama akan memegang tahun kita, yang berikutnya akan memegang bulan kita, dan yang terakhir adalah hari itu. Sekarang yang kita lakukan adalah menempatkannya kembali dalam format apa pun yang kita inginkan. Saya akan mulai dengan mm / dd / yyyy.

Untuk penulis, yang harus kita lakukan adalah menanyakan database untuk orang dengan ID id pengarang kita. Kita bisa melakukan ini dengan query MySQL dasar.

Gabung Kiri

Sekarang, tag akan sedikit lebih sulit. Kita akan perlu berbicara dengan database, jadi kita perlu membuat query MySQL. Kami tidak akan khawatir tentang koneksi database sekarang, yang akan ditentukan di luar kelas ini. Sekarang yang kami miliki adalah ID posting blog. Kita dapat membandingkannya dengan tag posting blog di tabel blog_post_tags kami, tetapi kemudian kami hanya akan mendapatkan kembali ID tag dan perlu melakukan kueri lain untuk mendapatkan informasi tentang tag tersebut. Itu tidak baik; Kami ingin menjadi efisien jadi mari kita lakukan hanya dalam satu permintaan!

Untuk melakukan ini kita akan melakukan apa yang disebut gabungan kiri, ini berarti kita juga akan memilih data dari tabel lain tetapi hanya ketika cocok dengan data dari "kiri" atau data lain yang kita pilih. Jadi pertama mari kita dapatkan semua ID tag yang terkait dengan ID posting blog kita di tabel blog_post_tags.

Sekarang mari tambahkan gabungan kiri kami dan beri tahu permintaan kami, kami hanya ingin data dalam tabel tag:

Jadi sekarang kueri memilih semua dari tag dan tabel blog_posts_tags di mana, pertama blog_post_tags.blog_post_id sama dengan yang kami sediakan dan kemudian juga mengembalikan informasi tentang setiap tag yang memiliki tag_id itu di baris data yang sama dengan blog_post_id kami.

Sekarang kami ingin memproses data tersebut dalam PHP dengan loop sementara yang sederhana. Kami juga akan membuat dua larik yang akan menyimpan data kami: satu untuk nama tag, dan yang lainnya untuk id tag. Kami juga akan membuat string untuk menahan semua tag kami. Kami pertama akan mengaturnya ke "Tidak Ada Tag" sehingga jika kami tidak mengembalikan data dari permintaan MySQL kami, itu akan mengembalikan bahwa kami tidak memiliki tag, jika tidak, nilai itu akan ditimpa dengan nama-nama tag.

Sekarang kita akan memeriksa untuk memastikan apakah array memiliki panjang lebih besar dari nol (kita tidak ingin melakukan semua kode tambahan ini jika kita tidak perlu). Selanjutnya, untuk setiap tag dalam larik nama tag kami, kami akan menggabungkan string tag. Kami akan menggunakan pernyataan sederhana if else.

Anda kemungkinan besar memperhatikan bahwa kami tidak menggunakan array id tag. Kami akan meninggalkan mereka sendirian untuk saat ini dan kembali lagi nanti. Kami hanya ingin memulai dan menjalankan blog kami terlebih dahulu.

Langkah terakhir untuk kelas kami adalah menambahkan pernyataan jika untuk setiap properti sehingga jika kita tidak lulus, tidak akan mencoba untuk mengatur properti objek saat ini menjadi tidak ada (ini akan menyebabkan kesalahan). Berikut adalah seluruh kelas BlogPost dengan pernyataan if ditambahkan:

Sekarang kelas objek kami sudah selesai, sebagian besar hal-hal sulit sudah selesai! Sekarang yang harus kita lakukan adalah mengatur koneksi database kita dan HTML untuk menampilkan posting kita!

Bagian 3) Mengambil Data Dari MySQL dan Menampilkannya Dengan PHP

Sebelum kita melakukan apa pun yang kita butuhkan untuk mengatur file include.php kami untuk mengadakan referensi ke objek BlogPost kami dan terhubung ke database MySQL kami. Pertama mari kita sertakan objek kita dengan pernyataan sertakan sederhana:

Sekarang mari tambahkan koneksi database kami:

Selanjutnya, kita perlu mengambil posting blog kita dari database. Untuk melakukan ini, kita akan membuat fungsi yang dapat mengambil hingga dua argumen. Kami akan membebani mereka berdua; sehingga Anda dapat memanggil fungsi dengan argumen 0, 1, atau 2.

Di dalam fungsi kami, kami perlu memeriksa untuk melihat argumen apa yang dilewatkan dan membuat permintaan MySQL kami sesuai.

Jadi apa yang kami lakukan di sini adalah menanyakan apakah setiap argumen tidak kosong, alasan kami menggunakan fungsi kosong daripada hanya melakukan perbandingan standar "! = Null" karena kosong tidak hanya memeriksa apakah variabelnya null, tetapi jika kosong juga (I.E. ""). Sekarang kita akan menulis pertanyaan tergantung pada variabel apa yang kita miliki. Jika kami mengirimkan ID posting blog, kami hanya ingin posting blog tunggal itu, jika kami memberikan fungsi pada inTagId kami ingin semua posting yang memiliki tag itu, dan jika tidak kami hanya ingin semua posting blog dalam database kami.

Langkah selanjutnya adalah memproses data yang dikembalikan dari setiap kueri, membuat objek, dan kemudian menambahkannya ke array untuk kembali.

Berikut ini seluruh kode include.php file:

Sekarang kita dapat melanjutkan untuk menampilkan data kami, mari membuka file index.php kami dan mengatur halaman HTML dasar. Di dalam tubuh kita, kita akan membuat pembagian dengan id "utama" yang akan berisi blog kita. Kami akan memberikan judul blog kami dan kemudian memiliki div kedua di dalam utama yang akan disebut "blogPosts".

Di dalam div blogPosts kami, kami akan memasukkan beberapa PHP sehingga kami dapat menampilkan posting kami. Pertama kita akan menyertakan file include.php kita dan kemudian memanggil fungsi GetBlogPosts kita tanpa argumen untuk mendapatkan semua posting blog kita dan mengaturnya ke array bernama blogPosts.

Sekarang, kita akan menggunakan loop foreach untuk menampilkan posting blog kita. Apa yang dilakukan foreach loop bagi kita saat ini adalah mengambil array dan mengeksekusi kode dalam loop untuk setiap item dalam array, Anda juga bisa menggunakan normal for loop untuk mencapai ini tetapi loop foreach membutuhkan lebih sedikit kode.

Di dalam loop, kami menggunakan $ post sebagai item array saat ini, dan karena $ blogPosts adalah array dari objek BlogPost kita dapat menggunakan "->" untuk mengakses setiap properti yang kita inginkan. Mari kita mulai dengan hanya menggemakan judul setiap posting blog ke halaman kami dan tambahkan saja <br/> - sebagai contoh.

Jika kita pergi ke database kami dan memasukkan beberapa data palsu, kemudian buka index.php di browser, kita akan mendapatkan sesuatu seperti ini:

Mari kita benar-benar membangun pos kita di HTML. Setiap posting akan dibungkus dalam div dengan kelas "post". Kemudian kita akan memiliki judul posting di dalam tag h1 dan posting sebenarnya di dalam tag <p>. </ P>

Mari beri juga setiap postingan footer yang akan menyertakan penulis postingan, tanggal diposting, dan tag posting. Kami akan memasukkan semua informasi ini dalam tag span dengan "footer" kelas.

Sekarang mari kita lihat file index.php kami lagi di browser:

Sepertinya semuanya bekerja! Selanjutnya, mari tambahkan beberapa gaya.

Jauh lebih baik; Anda dapat melihat ini secara online di sini atau klik tombol "demo" besar. Itu untuk tutorial ini. Dalam tutorial selanjutnya, kami akan menambahkan lebih banyak fungsi ke blog kami, termasuk beberapa fungsi AJAX yang bagus!

Saya harap Anda sekarang memiliki pemahaman yang lebih baik tentang cara kerja pemrograman berorientasi objek. Bahkan jika Anda akhirnya melakukan sebagian besar pengembangan Anda menggunakan framework, sangat penting untuk memiliki pemahaman inti tentang fundamental. Jika Anda memiliki pertanyaan khusus tentang tutorial ini, jangan ragu untuk menge-tweet saya @benemills. Saya ingin mengucapkan terima kasih khusus kepada James Padolsey karena telah membantu saya dengan artikel ini.

Ikuti terus Bagian 2!

  • Berlangganan NETTUTS RSS Feed untuk lebih banyak tuts pengembangan web harian dan artikel.


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.