Mengenal Autoload dan Yii::import
May 9th, 2012, Written by: | Categories: Programming, Yii Framework

Di dalam tutorial menggunakan Yii Framework, Anda akan menemukan sebuah sintaks yang tidak asing, yakni Yii::import(). Koding ini bisa saja terletak di dalam file konfigurasi ataupun di koding pada umumnya. Semua orang pasti tahu kalau fungsi import() ini sudah pasti berhubungan dengan include koding dari file lain. Tetapi bukankah PHP sudah punya fungsi include() atau require()? Mengapa masih harus ada Yii::import() lagi?

Yii::import() memiliki kelebihan ekstra dibandingkan fungsi PHP include() dan require().

Jika kita menyertakan kode tertentu dengan menggunakan include() atau require(), maka server akan langsung menjalankan kode yang disertakan itu. Jadi kalau koding kita di awal-awal banyak include() dan require(), start-nya akan lama. Kalau Yii::import() tidaklah demikian. Di Yii::import(), kode hanya dijalankan, pada saat memang sudah diperlukan. Di dalam dunia pemograman, ada istilah untuk ini, namanya autoload. Pada PHP sendiri terdapat fungsi untuk mengurus autoload yang disebutnya sebagai Standard PHP Library Autoload.

Anda sebetulnya sudah sering mendapatkan manfaat autoload ini. Ketika menggunakan kelas CActiveRecord, sebetulnya kelas CActiveRecord tidak pernah dijalankan sampai betul-betul diperlukan. Hampir semua kelas utama Yii menggunakan sistem autoload. Itulah sebabnya mengapa Yii Framework mampu menjalankan kelas utama sangat cepat. Kelas Yii yang tidak autoload biasanya kelas turunan dari Zii. Contoh turunan Zii seperti kelas CGridView, CMenu dan widget-widget lainnya.

Cara Kerja Yii::import() dalam Yii

Terkadang ketika membuat sebuah kelas, misalnya kelas KelasKu. Lalu pas dijalankan malah terjadi error seperti berikut ini:

include(KelasKu.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory.

Jika terkena error demikian, itu mengapa yah?

Pesan error di atas, sebetulnya cukup umum. Pesan error itu maksudnya adalah kita ingin memakai KelasKu. Seperti biasa, Yii akan mencari file dengan nama KelasKu.php di tempat yang sudah ditentukan. Namun, karena sudah dicari kesana kemari tidak ditemukan file KelasKu.php, akhirnya Yii pun mengeluarkan error menjelaskan file-nya tidak ketemu.

Nah, mengapa Yii tidak menemukan file-nya bisa beraneka ragam. Tetapi kadang-kadang alasan tidak ditemukan adalah karena file kelas kita terletak di folder spesial. Supaya Yii mau mencari di folder di sana, maka kita memakai Yii::import(). Contoh, kita membuat sebuah kelas spesial bernama PenghitungKredit. Nah, kelas PenghitungKredit terletak di bagian protected/components/special/PenghitungKredit.php. Maka kita cukup menulis sintaks demikian:

Yii::import('application.components.special.PenghitungKredit');

Menggunakan Yii::import() harus ingat satu aturan pada saat membuat file. Nama file harus sama persis dengan nama kelas. Jadi jika nama kelasnya adalah BookFinder, maka nama filenya harus BookFinder.php. Mungkin yang menjadi masalah adalah kita ingin meng-import file, tetapi sayangnya nama kelasnya berbeda dengan nama file (kasus ini terjadi terutama pustaka orang lain yang bukan dari Yii). Misalnya nama kelas BookFinder tetapi nama file malah Book.php. Jika menghadapi kendala seperti demikian, tidak perlu bingung. Cukup tambah sebuah parameter, dan Yii akan mengurus semuanya:

Yii::import('application.components.special.Book', true);

Tetapi satu hal yang harus diperhatikan adalah, jika menambahkan parameter “true” di belakang Yii::import(), maka itu artinya Yii akan mengimpor paksa, yang berarti sifatnya menjadi sama seperti include() atau require().

Demikian pembahasan mengenai Yii::import() dan autoload milik Yii. Jika masih ada pertanyaan, jangan sungkan-sungkan untuk bertanya.

More about: ,

Leave a Reply