Yii menggunakan alias secara luas. Alias path dikaitkan dengan direktori atau path file. Ditetapkan dalam sintaks dot (titik), mirip dengan format namespace yang diadopsi secara luas:
RootAlias.path.ke.target
dengan RootAlias
sebagai alias dari beberapa direktori yang sudah ada.
Dengan memanggil YiiBase::setPathOfAlias(), sebuah alias dapat diterjemahkan ke path
yang bersangkutan. Misalnya, system.web.CController
akan diterjemahkan sebagai
yii/framework/web/CController
.
Kita juga dapat menggunakan YiiBase::setPathOfAlias() untuk mendefinisikan alias path root yang baru.
Untuk kemudahan, Yii mendefinisikan beberapa alias root berikut :
system
: merujuk pada direktori Yii framework;zii
: merujuk pada direktori [pustaka Zii] (/doc/guide/extension.use#zii-extensions);application
: merujuk pada basis direktori aplikasi;webroot
: merujuk pada direktori yang berisi file skrip entri.ext
: merujuk ke direktori yang berisi semua extensions|extension pihak ketiga.Sebagai tambahan, jika suatu aplikasi menggunakan module, maka setiap module akan
memiliki root alias yang sudah di-define. Root alias ini memiliki nama yang sama dengan ID module dan merujuk ke base path module. Misalnya,
jika sebuah aplikasi menggunakan module yang memiliki ID users
, maka sebuah root alias bernama users
akan di-define.
Menggunakan alias, sangat nyaman untuk mengimpor definisi sebuah kelas. Sebagai contoh, jika kita ingin menyertakan definisi kelas CController, kita dapat memanggil seperti berikut:
Yii::import('system.web.CController');
Metode import berbeda dengan include
dan require
karena metode ini lebih efisien. Definisi kelas yang sedang diimpor
sebenarnya tidak disertakan (di-include) sampai ia dirujuk untuk pertama kalinya. Mengimpor
namespace yang sama berkali-kali juga lebih cepat daripada include_once
dan require_once
.
Tip: Ketika merujuk pada kelas yang didefinisikan oleh Yii framework, kita tidak perlu mengimpor atau menyertakannya. Semua kelas inti Yii sudah di-import pada awalnya.
Dimulai dari versi 1.1.5, Yii memungkinkan kelas-kelas user di pra-impor melalui sebuah mekanisme pemetaan kelas yang juga digunakan oleh kelas utama Yii. Kelas pra-impor dapat digunakan di mana saja dalam sebuah aplikasi Yii tanpa perlu di-impor atau di-include-kan secara eksplisit. Fitur ini paling berguna untuk sebuah framework atau pustaka yang dibuat di atas Yii.
Untuk melakukan pre-impor sekumpulan kelas, kode berikut ini harus dijalankan terlebih dahulu sebelum CWebApplication::run() dijalankan :
Yii::$classMap=array(
'ClassName1' => 'path/to/ClassName1.php',
'ClassName2' => 'path/to/ClassName2.php',
......
);
Kita juga dapat menggunakan sintaks berikut untuk mengimpor seluruh direktori agar file kelas di bawah direktori tersebut secara otomatis disertakan saat diperlukan.
Yii::import('system.web.*');
Selain import, alias juga dipakai di banyak tempat lain untuk merujuk pada kelas. Sebagai contoh, alias dapat dioper ke Yii::createComponent() guna membuat instance kelas terkait, meskipun file kelas tidak disertakan sebelumnya.
Namespace merujuk pada pengelompokkan logis beberapa nama kelas agar dapat dibedakan dari nama kelas lainnya jika namanya sama. Jangan menyamakan antara alias path dengan namespace. Sebuah alias path dipakai untuk merujuk pada file kelas atau direktori. Alias path tidak ada hubungannya dengan namespace.
Tip: Karena PHP sebelum versi 5.3.0 tidak mendukung namespace secara langsung, Anda tidak dapat membuat instance dari dua kelas yang memiliki nama yang sama dengan definisi yang berbeda. Untuk alasan ini, semua kelas Yii framework diawali dengan huruf 'C' (berarti 'class') agar bisa dibedakan dari kelas yang didefinisikan pengguna. Direkomendasikan bahwa prefiks 'C' khusus dipakai hanya untuk pemakaian Yii framework saja, dan kelas yang didefinisikan-pengguna diawali dengan huruf lainnya.
Sebuah kelas ber-namespace merujuk pada sebuah kelas yang dideklarasikan di dalam sebuah namespace non-global.
Misalnya, kelas application\components\GoogleMap
dideklarasikan di dalam namespace application\components
.
Menggunakan kelas ber-namespace memerlukan PHP 5.3.0 atau ke atas.
Mulai dari versi 1.1.5, dimungkinkan untuk menggunakan kelas ber-namespace tanpa
perlu meng-include-nya secara eksplisit. Misalnya, kita dapat membuat sebuah instance baru
dari application\components\GooleMap
tanpa perlu meng-include-kan file kelas koresponden
secara eksplisit. Ini memungkinkan dengan meningkatkan mekanisme autoloading kelas.
Untuk bisa melakukan autoload sebuah kelas ber-namespace, namespace harus dinamakan
dengan cara yang mirip dengan alias path. Misalnya, sebuah kelas application\components\GoogleMap
harus disimpan ke dalam sebuah file yang dapat dialiaskan sebagai application.components.GoogleMap
.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.