ClassLoader adalah pustaka PHP untuk kelas autoloading. Kelas autoloading berarti bahwa kelas dimuat hanya ketika mereka benar -benar dibutuhkan daripada harus memasukkan setiap file kelas pada setiap eksekusi. Ini mengurangi halaman memuat overhead terutama di situs web yang lebih besar, karena hanya beberapa file kelas yang perlu dimuat. Biasanya kelas juga dimuat secara dinamis dari file dengan nama file berdasarkan namespace dan nama kelas. Ini juga membuatnya lebih mudah untuk mengelola sejumlah besar file kelas.
Perpustakaan ini mendukung dua standar saat ini untuk kelas autoloading, yaitu PSR-0 dan PSR-4. Ide dasar di balik standar ini adalah bahwa file kelas berada di direktori berdasarkan namespace mereka dan dalam file yang dinamai sesuai dengan kelas. Perbedaan utama antara kedua standar ini adalah bahwa PSR-4 tidak mengharuskan seluruh namespace hadir dalam hierarki direktori.
Namun, karena pengoperasian menemukan file kelas yang sebenarnya cenderung relatif mahal, perpustakaan ini juga menyediakan mekanisme caching dasar yang memungkinkan caching lokasi file kelas dalam file PHP. Dengan caching, perbedaan kinerja antara autoloading dan memuat file secara manual menjadi diabaikan.
Dokumentasi API, yang dapat dihasilkan menggunakan Apigen, dapat dibaca secara online di: http://kit.riima.net/api/classloader/
Cara termudah untuk menginstal perpustakaan ini adalah dengan menggunakan komposer untuk menangani ketergantungan Anda. Untuk menginstal pustaka ini melalui komposer, cukup ikuti dua langkah ini:
Dapatkan composer.phar dengan menjalankan instalasi baris perintah komposer di root proyek Anda.
Setelah Anda menjalankan skrip instalasi, Anda harus memiliki file composer.phar di root proyek Anda dan Anda dapat menjalankan perintah berikut:
php composer.phar require "riimu/kit-classloader:^4.4"
Setelah menginstal pustaka ini melalui komposer, Anda dapat memuat pustaka dengan memasukkan file vendor/autoload.php yang dihasilkan oleh komposer selama instalasi.
Jika Anda sudah terbiasa dengan cara menggunakan komposer, Anda dapat menambahkan perpustakaan sebagai ketergantungan dengan menambahkan file composer.json berikut ke proyek Anda dan menjalankan perintah composer install :
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} Jika Anda tidak ingin menggunakan komposer untuk memuat perpustakaan, Anda juga dapat mengunduh perpustakaan secara manual dengan mengunduh rilis terbaru dan mengekstraksi folder src ke proyek Anda. Anda kemudian dapat memasukkan file src/autoload.php yang disediakan untuk memuat kelas perpustakaan.
ClassLoader mendukung autoloading sebagaimana didefinisikan oleh standar PSR-0 dan PSR-4 melalui metode addBasePath() dan addPrefixPath() masing-masing. Anda tidak perlu memahami standar ini untuk menggunakan perpustakaan ini, cukup gunakan metode yang paling cocok untuk Anda.
Autoloading kelas PSR-0 menentukan bahwa file kelas harus ditempatkan di pohon direktori yang mencerminkan namespace mereka. Misalnya, kelas 'foo bar baz' dapat ditempatkan di file '/path/to/classes/foo/bar/baz.php'. Metode ini biasanya merupakan cara paling sederhana untuk menempatkan file kelas Anda.
Menggunakan metode addBasePath() , Anda dapat menentukan direktori dasar di mana mencari kelas. Untuk memuat kelas yang disebutkan di atas, Anda dapat menggunakan kode berikut:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Jika direktori tertentu hanya berlaku untuk namespace tertentu, Anda dapat menggunakan parameter kedua untuk menentukan namespace juga. Namun, direktori masih perlu menunjuk ke direktori dasar untuk namespace. Misalnya:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Perhatikan bahwa PSR-0 juga menyatakan bahwa menggarisbawahi dalam nama kelas diperlakukan sebagai pemisah namespace (tetapi tidak menggarisbawahi di ruang nama). Jadi, bahkan jika kelas Anda disebut 'foo bar_baz', kedua contoh di atas masih akan berhasil. Bahkan jika ruang nama kelas Anda didefinisikan menggunakan garis bawah pada nama kelas, Anda perlu menggunakan backslash dalam argumen namespace.
Tidak seperti PSR-0, standar autoloading kelas PSR-4 tidak memerlukan kelas untuk ditempatkan di pohon direktori yang mencerminkan seluruh namespace mereka. Sebaliknya, bagian dari namespace dapat diganti dengan jalur tertentu.
Misalnya, jika kelas Anda 'foo bar baz' terletak di file '/path/to/library/baz.php', Anda dapat mendaftarkan jalur menggunakan addPrefixPath() dan menentukan namespace seperti yang ditunjukkan dalam contoh berikut:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); Ini memungkinkan struktur direktori yang jauh lebih pendek karena seluruh namespace tidak perlu tercermin dalam pohon direktori. Dimungkinkan juga untuk menghilangkan argumen namespace, dalam hal ini jalur akan bekerja sama dengan jalur yang ditambahkan melalui addBasePath() , kecuali fakta bahwa menggarisbawahi dalam nama kelas tidak akan diperlakukan sebagai pemisah namespace.
Meskipun Anda bisa memanggil metode penambahan jalur beberapa kali, dimungkinkan untuk menambahkan beberapa jalur menggunakan array. Ini biasanya membuat konfigurasi lebih mudah. Misalnya, Anda dapat menambahkan beberapa jalur dasar dengan memberikan array:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();Atau Anda dapat menambahkan jalur spesifik namespace dengan memberikan array asosiatif yang mendefinisikan ruang nama menggunakan tombol array:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();Seperti yang ditunjukkan pada contoh di atas, Anda juga dapat memberikan daftar jalur untuk namespace tertentu.
Mencari kelas dalam sistem file pada setiap permintaan adalah urusan yang mahal. Sangat disarankan untuk menyimpan lokasi file sehingga mereka tidak perlu dicari pada setiap permintaan. Bagaimanapun, file kelas tidak cenderung bergerak di sistem file.
Perpustakaan ini menyediakan sistem caching yang sangat sederhana melalui FileCacheClassLoader . Kelas menyimpan lokasi file dalam satu file PHP yang dimuat pada setiap permintaan alih -alih mencari file secara manual.
Penggunaan FileCacheClassLoader tidak jauh berbeda dari menggunakan ClassLoader . Anda hanya perlu memberikan jalur ke file cache yang dapat ditulisi di konstruktor. File akan digunakan untuk menyimpan lokasi kelas dan akan ditulis ulang ketika file kelas baru ditemukan. Misalnya:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();Perpustakaan ini adalah Hak Cipta (C) 2012-2017 Riikka Kalliomäki.
Lihat Lisensi untuk Lisensi dan Informasi Menyalin.