3.3.3 Instalasi Advance
Ada beberapa situasi dimana Anda ingin menempatkan direktori CakePHP pada tempat yang berbeda pada filesystem. Mungkin dikarenakan oleh keterbatasan pada host berbagi, atau Anda hanya menginginkan sebagian kecil aplikasi Anda berbagi pustaka Cake yang sama. Bagian ini menjelaskan bagaimana menempatkan direktori CakePHP Anda tersebar pada filesystem.
Perlu diketahui, bahwa ada tiga bagian penting dalam aplikasi Cake:
- Pustaka inti CakePHP, di dalam /cake.
- Kode aplikasi Anda, di dalam /app.
- Webroot aplikasi, umumnya di dalam /app/webroot.
Setiap direktori ini dapat ditaruh dimana saja pada file system Anda, dengan pengecualian pada webroot, yang mana harus dapat diakses oleh web server Anda. Anda bahkan dapat memindahkah direktori webroot keluar dari direktori app selama Anda memberitahu Cake dimana lokasinya.
Untuk mengkonfigurasi instalasi Cake Anda, Anda perlu menyunting beberapa perubahan di /app/webroot/index.php. Ada tiga konstanta yang perlu Anda sunting: ROOT, APP_DIR, and CAKE_CORE_INCLUDE_PATH.
- ROOT perlu diset ke path direktori tempat direktori app berada.
- APP_DIR perlu diset ke path direktori app Anda.
- CAKE_CORE_INCLUDE_PATH perlu diset ke path direktori pustaka CakePHP Anda.
Mari kita coba melalui sebuah contoh sehingga Anda dapat melihat seperti apa instalasi advance dalam praktik. Bayangkan jika saya ingin menata CakePHP bekerja seperti berikut:
- Pustaka inti CakePHP akan ditempatkan di /usr/lib/cake.
- Direktori webroot aplikasi saya berada di /var/www/mysite/.
- Direktori app aplikasi saya ditempatkan di dalam /home/me/mysite.
Dengan diberikan tipe penataan ini, saya perlu menyunting berkas webroot/index.php (yang mana berada di /var/www/mysite/index.php, dalam contoh ini) menjadi seperti ini:
// /app/webroot/index.php (partial, comments removed)
if (!defined('ROOT')) {
define('ROOT', DS.'home'.DS.'me');
}
if (!defined('APP_DIR')) {
define ('APP_DIR', 'mysite');
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}
// /app/webroot/index.php (partial, comments removed)if (!defined('ROOT')) {define('ROOT', DS.'home'.DS.'me');}if (!defined('APP_DIR')) {define ('APP_DIR', 'mysite');}if (!defined('CAKE_CORE_INCLUDE_PATH')) {define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');}
Direkomendasikan untuk menggunakan konstanta DS dibandingkan simbol slash untuk delimeter path berkas. Hal ini mencegah eror dari berkas yang tidak ada akibat salah delimeter, dan hal ini membuat kode Anda lebih portable.
3.3.3.1 Path Class Tambahan
Kadang kala berguna untuk dapat berbagi class-class MVC antar aplikasi pada sistem yang sama. Jika Anda ingin controller yang sama dalam dua aplikasi Anda dapat menggunakan bootstrap.php CakePHP untuk menyediakan class tambahan ini ke view.
Dalam bootstrap.php, definisikan beberapa variabel bernama khusus agar CakePHP tahu tempat lain mencari class-class MVC:
$viewPaths = array(); $controllerPaths = array(); $modelPaths = array(); $helperPaths = array(); $componentPaths = array(); $behaviorPaths = array();
$viewPaths = array();$controllerPaths = array();$modelPaths = array();$helperPaths = array();$componentPaths = array();$behaviorPaths = array();
Setiap variabel khusus ini dapat diset menjadi array dari absolute path filesystem dimana class tambahan dapat ditemukan saat direquest. Pastikan setiap path yang didefinisikan terdapat trailing slash.
