Fitur baru yang penting di PHP 5.3 adalah namespace.
Fitur ini diusulkan di PHP5.0x, namun kemudian dibatalkan dan dijadwalkan untuk diimplementasikan di PHP6. Dan kali ini, PHP5.3 dirilis lagi "lebih cepat dari jadwal", yang menunjukkan bahwa pengembang sangat mementingkannya dan berhati-hati.
Saat resmi dirilis, isi dokumen mungkin sudah kadaluwarsa (dokumentasi mungkin sudah kadaluwarsa), jadi berikut penjelasan singkat penggunaan namespace: pertama, deklarasikan namespace dan tambahkan kata kunci namespace baru, yang seharusnya berada di awal file kelas
<?phpnamespace Project::Module;class User {const STATUS_OK = true;function register($data) {...}...} Kemudian di controller (mungkin file lain) Anda dapat memanggil
$ user = new seperti ini Project::Module::User();$user->register($register_info); Misalnya,
Project::Module::User;Project::Module::Blog; Ini membuatnya lebih mudah untuk mendeskripsikan dan memahami hubungan antara variabel dan kelas dari bahasa itu sendiri, sehingga menghindari metode penamaan Project_Module_Blog yang "tradisional" dan panjang.
Uraian di atas mungkin sulit untuk menjelaskan manfaat penggunaan namespace. Penggunaan yang baru ditambahkan dan sebagai kata kunci dapat menjelaskan masalahnya dengan lebih baik. Pernyataan use dan as dapat mereferensikan dan mendeklarasikan namespace "alias". Misalnya kode untuk membuat instance kelas pada controller di atas dapat ditulis seperti ini:
use Project::Module;$user = new Module::User();$user->register($register_info); atau bahkan
use Project ::Module:: User as ModuleUser;$user = new ModuleUser;$user->register($register_info);Konstanta dalam kelas juga dapat diakses melalui namespace. Misalnya, STATUS_OK pada kelas di atas dapat diakses melalui namespace
Proyek::Modul::Pengguna: :STATUS_OK akses. Selain itu, Anda juga dapat menggunakan alias untuk menyederhanakan "nama variabel" yang panjang
menggunakan Project::Module::User::STATUS_OK as STATUS_OK;echo STATUS_OK; Yang disebut "hyperspace" mengacu pada variabel, kelas, dan fungsi yang tidak memiliki namespace khusus. Misalnya
, fungsi seperti function foo() {...} dapat dieksekusi menggunakan foo() atau ::foo();.
Terakhir, gunakan fungsi autoload untuk memuat kelas dalam namespace yang ditentukan. Fungsi sederhananya adalah sebagai berikut
function __autoload( $classname ) {$classname = strtolower( $classname );$classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );require_once( dirname( __FILE__ ) . '/' . $ classname . '.class.php' );} Dengan cara ini, misalnya, memanggil
__autoload('Project::Module::User'); dapat secara otomatis memuat file Project_Module_User.class.php (meskipun ini tampaknya merepotkan).