Rabu, 02 Maret 2016
Konfigurasi, property, event dan lifecycle Aplikasi Yii2
Aplikasi adalah object-object yang memuat keseluruhan struktur dan siklus hidup sistem aplikasi Yii. Setiap aplikasi Yii memuat sebuah object aplikasi yang dibuat dalam entry script dan dapat diakses secara global melalui ekspressi \Yii::$app.Tergantung konteksnya, saat saya menyebut "aplikasi". Artinya bisa jadi application object atau application system.Ada 2 tipe aplikasi, aplikasi web dan aplikasi console. Sesuai namanya, aplikasi web menangani request web dan console menangani perintah console.
Konfigurasi Aplikasi Yii2
Saat entry script membua instance aplikasi, entry script akan memuat konfigurasi dan menerapkannya kepada aplikasi seperti berikut:require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); // load application configuration $config = require(__DIR__ . '/../config/web.php'); // instantiate and configure the application (new yii\web\Application($config))->run();
Seperti kofigurasi pada umumnya, konfigurasi aplikasi menentukan bagaimana menginisialisasi properti dari application object. Karena konfigurasi aplikasi sangat kompleks, dan biasanya disimpan di file konfigurasi seperti web.php pada contoh diatas.
Properti Aplikasi Yii2
Ada banyak properti aplikasi yang penting yang harus anda konfigurasikan dalam konfigurasi aplikasi. Properti-properti tersebut mendeskripsikan lingkungan berjalannya aplikasi. Sebagai contoh, aplikasi harus tau bagaimana memuat controller, dimana tempat menyimpan file temporary, dan lain-lain. Berikut adalah beberapa contoh property yang perlu diperhatikan.Properti Penting Aplikasi Yii2
Properti berikut dalam banyak kasus perlu dikonfigurasikan karena berbeda-beda antar aplikasi.aliases
Properti ini untuk mendefinisikan alias dalam bentuk array. Contohnya:[ 'aliases' => [ '@name1' => 'path/to/path1', '@name2' => 'path/to/path2', ], ]Properti ini memungkinkan anda untuk mendefinisikan alias sebagai alternatif dari memanggil method Yii::setAlias().
bootstrap
Property ini sangat berguna sekali untuk menentukan array dari komponen yang akan dijalankan saat proses bootstrapping aplikasi.Setiap komponen terdaftar di properti ini dapat berisi salah satu format berikut:
- Component ID dari aplikasi.
- Module ID.
- Nama class.
- Array konfigurasi.
- Fungsi anonim yang membuat dan me-return component.
[ 'bootstrap' => [ // an application component ID or module ID 'demo', // a class name 'app\components\Profiler', // a configuration array [ 'class' => 'app\components\Profiler', 'level' => 3, ], // an anonymous function function () { return new app\components\Profiler(); } ], ]Saat proses boostraping, setiap komonen akan dijalankan. Jika class component mengimplementasikan yii\base\Bootstrapinterface, method bootstrap() juga akan dipanggil.
catchAll
Properti ini hanya didukung oleh aplikasi web. Properti ini menentukan controller action yang meng-handle semua request user. Utamanya digunakan saat aplikasi dalam mode maintenance mode dimana kita ingin menampilkan halaman (contoh:pesan pemberitahuan maintenance) yamg sama untuk semua request yang masuk.Konfigurasi ini berupa Array dimana elemen pertama menentukan route dari action. Elemen berikutnya dan seterusnya menentukan parameter untuk diteruskan ke action. Berikut contoh konfigurasi catchAll untuk pemberitahuan situs sedang offline:
[ 'catchAll' => [ 'offline/notice', 'param1' => 'value1', 'param2' => 'value2', ], ]
components
Properti ini merupakan properti yang paling penting. Gunanya untuk me-register list application component yang nantinya dapat digunakan di tempat lain. Contoh:[ 'components' => [ 'cache' => [ 'class' => 'yii\caching\FileCache', ], 'user' => [ 'identityClass' => 'app\models\User', 'enableAutoLogin' => true, ], ], ]Setiap application component ditentukan dalam bentuk array. Dimana key dari array merupakan component ID, dan value / nilainya mewakili nama class component atau konfigurasi.
Komponen yang di register tersebut nantinya dapat diakses secara global dengan expression \yii::$app->componentID.
ControllerMap
Properti ini memungkinkan anda untuk memetakan controller ID. secara default, Yii memetakan controller ID pada controller class berdasar pada standar penamaan (contohnya: ID post dipetakan ke app\controllers\PostController). Dengan mengkonfigurasi properti ini anda bisa menentukan controller spesifik anda sendiri tanpa mengikuti standar penamaan. Contohnya:
[ 'controllerMap' => [ [ 'account' => 'app\controllers\UserController', 'article' => [ 'class' => 'app\controllers\PostController', 'enableCsrfValidation' => false, ], ], ], ]Key dari array mewakili controller ID, sedangkan nilai array terdiri dari nama controller class atau konfigurasi.
controllerNamespace
Properti ini mengatur namespace default letak controller class. Defaultnya di app\controllers. Jika controller ID adalah post, nama controller class nya adalah PostController, dan nama full class nya adalah app\controllers\PostController.Controller class juga bisa saja berada didalam sub-directory. Sebagai contoh, admin/post merupakan ID dari controller class app\controllers\admin\PostController.
language
Properti ini menentukan bahasa dimana aplikasi harusnya menampilkan content ke user. Nilai default dari properti ini adalah en yang artinya inggris (english). Anda bisa merubahnya menyesuaikan kebuthan anda.Properti ini mempengaruhi bermacam2 komponen dan widget, misalnya date picker, formatting angka, dll.
modules
Properti ini menentukan module yang terdapat dalam aplikasi.Properti ini memuat array dari konfigurasi module class, dimana key array menjadi module ID. contohnya:
[ 'modules' => [ // a "booking" module specified with the module class 'booking' => 'app\modules\booking\BookingModule', // a "comment" module specified with a configuration array 'comment' => [ 'class' => 'app\modules\comment\CommentModule', 'db' => 'db', ], ], ]
name
Menentukan nama aplikasi yang mungkin ditampilkan ke user.timeZone
Menentukan zona waktu yang nantinya digunakan PHP.Event Aplikasi Yii2
Aplikasi memicu beragam event selama siklus menangani request. Anda mungkin mencantumkan event handler untuk event-event dalam konfigurasi aplikasi:[ 'on beforeRequest' => function ($event) { // ... }, ]Anda juga dapat mencantumkan event handler selama proses bootstrapping setelah application instance dibuat. Contohnya:
\Yii::$app->on(\yii\base\Application::EVENT_BEFORE_REQUEST, function ($event) { // ... });
EVENT_BEFORE_REQUEST
Event ini di picu sebelum aplikasi menangani request. Nama event ini adalah beforeRequest.
Saat event ini di picu, application instance sudah di konfigurasi dan diinisialisasi.
EVENT_AFTER_REQUEST
Event ini di picu setelah aplikasi selesai menangani request tetapi belum mengirimkan response. Nama event ini adalah afterRequest.
EVENT_BEFORE_ACTION
Event ini di picu sebelum menjalankan setiap controller action. Nama event ini adalah beforeAction.
EVENT_AFTER_ACTION
Event ini di picu setelah menjalankan setiap controller action. Nama event ini adalah afterAction.
Siklus hidup (lifecycle) Aplikasi
Saat entry script sedang di eksekusi untuk mengangani request, sebuah aplikasi akan melakukan lifecycle berikut:- Entry script memuat konfigurasi aplikasi sebagai array.
- Entry script membuat instance aplikasi baru:
- preInit() dipanggil untuk mengkonfigurasi property aplikasi prioritas tinggi seperti basePath.
- Me-register error handle
- Mengkonfigurasi property aplikasi.
- init() dipanggil untuk memanggil bootstrap() untuk menjalankan bootstrapping components.
- Entry script memanggil yii\base\Application::run() untuk menjalankan aplikasi:
- Memicu event EVENT_BEFORE_REQUEST.
- Menagnani request, menentukan route dan parameter, membuat module, controller dan object action sesuai route, dan mengeksekusi action.
- Memicu event EVENT_AFTER_REQUEST.
- Mengirim response kepada user.
- Entry Script menerima status exit dari aplikasi dan menyelesaikan proses request.
loading...
Langganan:
Posting Komentar
(
Atom
)
Popular Posts
-
Secara default, Yii2 dibekali oleh template Bootstrap 3. Namun kita juga bisa menambahkan template lain yang lebih baik, seperti misalnya ...
-
Pada tutorial ini, saya akan membahas bagaimana cara membuat aplikasi CRUD (Create Read Update Delete) database secara otomatis dengan mengg...
-
RBAC (Role-Based Access Control) adalah konsep Access Control di Yii2 yang memisahkan hak akses user berdasarkan role atau peran. Yii2 sen...
© Asudahlah.com 2016 . Powered by Twitter Bootstrap , Blogger
Tidak ada komentar :
Posting Komentar