1.3. File dan Database

Pada bagian ini, kita akan membahas bagaimana file CMS dan tabel database harus ditata dan diberi nama.

Struktur Direktori

Dalam CMS yang sedang kita bangun, kita memiliki dua jenis file referensi:

  1. Referensi seperti /news atau /my/page adalah mereferensi ke halaman, dan akan ditampilkan melalui kontroler depan CMS. Mereka tidak ada sebagai file fisik pada sistem, tetapi sebagai entri dalam database.
  2. Apa-apa dengan titik di dalamnya adalah referensi ke sebuah file nyata yang sebenarnya, dan tidak akan diteruskan ke front controller. Misalnya, sesuatu seperti /f/images/test.jpg atau /j/the-script.js.

Ini dikelola dengan menggunakan modul web server disebut mod_rewrite untuk mengambil semua permintaan HTTP dan mengurai mereka sebelum mereka dikirim ke mesin PHP.

Seluruh struktur direktori beserta keterangannya bisa dilihat di github, yaitu di https://github.com/phpgeek-programmer/PatmaCMS/tree/570d2d0ee23c507602bb4ab3a993d36ebd62bf69. Seiring dengan  pengembangan lebih lanjut, struktur direktori tersebut diatas mungkin akan diubah lagi.

Dua file di direktori htdocs adalah :

  • index.php – file ini adalah pengontrol halaman di frontend. Semua permintaan halaman dilewatkan di file ini, dan kemudian akan meload library, plugins, dan seterusnya yang dibutuhkan.
  • .htaccess – File ini berisi aturan mod_rewrite yang memberitahu web server bagaimana cara mengurai permintaan HTTP, me-redirect lewat index.php (atau pengontrol lainnya, seperti yang kita akan lihat nanti) atau secara langsung ke web server, tergantung permintaannya.

Struktur Database

Struktur database dari core CMS sederhana hanya berisi beberapa tabel.

Kamu membutuhkan untuk menyimpan informasi mengenai halaman website, dan informasi pengguna seperti administrator.

Jika ada plugin yang membutuhkan tabel, mereka akan menginstal tabel mereka sendiri, tetapi core CMS seharusnya hanya memiliki beberapa tabel.

Inilah yang akan kita gunakan sebagai daftar tabel pertama kali:

  • Pages – Tabel ini menangani informasi tentang tiap halaman, seperti nama, id, tanggal pembuatan, dan seterusnya.
  • User Accounts – Berisi data pengguna, seperti email, password, dan seterusnya.
  • Groups – Pengguna bisa digolongkan dalam bermacam-macam group yang disimpan di tabel ini. Satu-satunya yang mutlak kita butuhkan adalah group “_administrator”, tetapi ada kegunaan lainnya yang akan kita diskusikan lagi nanti.

Untuk tujuan optimisasi, kita harus mencoba untuk membuat query database sesedikit mungkin. Ini akan menjadi jelas ketika kita membahas navigasi situs web, Manajemen Halaman, dimana dibutuhkan query cukup banyak untuk menu yang kompleks.

Beberapa CMS merekam plugin aktif dan pengaturan lainnya dalam database, tetapi merupakan pemborosan dalam menggunakan database untuk mengambil pengaturan yang mungkin tidak sangat sering berubah  , namun dibutuhkan pada setiap halaman.

Sebaliknya, kami akan mencatat rincian plugin aktif dalam file konfigurasi.

File Konfigurasi

Sebuah file konfigurasi dibutuhkan agar CMS tahu bagaimana melakukan koneksi ke database, dimana sumber daya di simpan, dan potongan informasi lainnya yang dibutuhkan untuk memulai menjalankan situs web.

File konfigurasi juga menjaga sedikit informasi yang dibutuhkan pada setiap halaman, seperti plugin yang aktif, apa tema situs yang digunakan, dan info lainnya yang jarang diubah.

File konfigurasi akan disimpan di direktori /apps/config/ yang tidak bisa diakses secara langsung dari browser.

Ada dua cara file konfigurasi dapat ditulis:

  • Format Parse-able. Dalam bentuk ini, file konfigurasi dibuka, dan beberapa variabel konfigurasi diekstrak darinya dengan menjalankan script yang membaca file tersebut.
  • Format Executable. Dalam bentuk ini, file konfigurasi berisi script PHP, dan diload dengan fungsi include() atau require().

Menggunakan file parseable, CMS akan dapat membaca file tersebut dan jika ada sesuatu yang salah dengan itu, akan dapat menampilkan kesalahan di layar. Ini memiliki kelemahan bahwa hal itu akan kembali diurai setiap kali dimuat, sedangkan bentuk file yang berisi script PHP dikompilasi dan dicache oleh mesin seperti Zend, atau akselerator lain yang mungkin telah  Anda instal.

Bentuk kedua, file executable, perlu ditulis dengan benar atau mesin akan rusak, tetapi memiliki kelebihan yang tidak perlu diurai setiap waktu, jika akselerator digunakan, dan juga memungkinkan untuk pengaturan konfigurasi alternatif untuk dipilih berdasarkan kondisi (misalnya, menetapkan tema untuk menguji tema tersebut jika Anda menambahkan ?theme=tes di URL).

 

Advertisements

About phpgeek programmer

pemimpi yang berharap menjadi the best programmer di zamannya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s