Komponen

Komponen adalah turunan dari TComponent atau kelas anaknya. Basis kelas TComponent menerapkan mekanisme properti dan event komponen.

Properti Komponen

Properti komponen dapat dilihat sebagai variabel public yang menjelaskan aspek tertentu dari komponen seperti warna latar belakang, besar font, dll. Properti didefinisikan dengan keberadaan metode penyetel dan/atau pengambil dalam kelas komponen. Sebagai contoh, dalam TControl, kami mendefinisikan properti ID menggunakan metode pengambil dan penyetel berikut, class TControl extends TComponent { public function getID() { ... } public function setID($value) { ... } }

Untuk mendapatkan atau menetapkan properti ID, lakukan seperti berikut, seperti bekerja dengan sebuah variabel, $id = $component->ID; $component->ID = $id; Ini sama dengan yang berikut, $id = $component->getID(); $component->setID( $id );

Properti hanya-baca jika metode pengambil tetapi tidak untuk metode penyetel. Karena nama metode PHP adalah sensitif-huruf, nama properti juga sensitif-huruf. Kelas komponen mewariskan seluruh properti kelas leluhurnya.

Subproperti

Subproperti adalah properti dari beberapa properti tipe-obyek. Sebagai contoh, TWebControl mempunyai properti Font yang merupakan tipe TFont. Kemudian properti Name dari Font dirujuk sebagai subproperti (dengan memperhatikan TWebControl).

Untuk mendapatkan atau menentukan subproperti Name, gunakan metode beriktu, $name = $component->getSubProperty('Font.Name'); $component->setSubProperty('Font.Name', $name); Ini sama dengan yang berikut, $name = $component->getFont()->getName(); $component->getFont()->setName( $name );

Event Komponen

Event komponen adalah properti khusus yang mengambil nama metode sebagai nilainya. Melampirkan (setelan) metode ke sebuah event akan menancapkan metode ke tempat di mana event dimunculkan. Oleh karena itu, perilaku komponen bisa diubah dalam cara yang tidak terlihat selama pengembangan komponen.

Event komponen didefinisikan dengan keberadaan metode yang namanya dimulai dengan kata on. Nama event adalah nama metode dan sensitif-huruf. Sebagai contoh, dalam TButton, kita mempunyai class TButton extends TWebControl { public function onClick( $param ) { ... } } Ini mendefinisikan event bernama OnClick, dan pengendali dapat dilampirkan ke event menggunakan salah satu cara berikut, $button->OnClick = $callback; $button->OnClick->add( $callback ); $button->OnClick[] = $callback; $button->attachEventHandler( 'OnClick' , $callback ); di mana $callback merujuk ke callback PHP yang benar (misalnya nama fungsi, metode kelas array($object,'method'), dll).

Namespace

Namespace merujuk ke pengelompokan logis dari beberapa nama kelas agar dapat dibedakan dari nama kelas lain meskipun jika namanya sama. Karena PHP pada hakekatnya tidak mendukung namespace, Anda tidak bisa membuat turunan dari dua kelas yang mempunyai nama sama tapi dengan definisi berbeda. Untuk membedakan dari kelas didefinisikan pengguna, semua kelas PRADO diawali dengan huruf 'T' (berarti 'Type'). Para pengguna disarankan untuk tidak menamai kelasnya seperti ini. Sebaiknya mengawali nama kelasnya dengan huruf yang lainnya.

Namespace dalam PRADO dianggap sebagai direktori yang berisi satu atau beberapa file kelas. Sebuah kelas dapat ditetapkan tanpa dwimakna menggunakan namespace demikian diikuti oleh nama kelas. Setiap namespace dalam PRADO ditetapkan dalam format berikut,

PathAlias.Dir1.Dir2
di mana PathAlias adalah alias dari beberapa direktori, sementara Dir1 dan Dir2 adalah subdirektori di bawah direktori itu. Kelas yang benama MyClass didefinisikan di bawah Dir2 sekarang berkualifikasi lengkap sebagai PathAlias.Dir1.Dir2.MyClass.

Untuk menggunakan namespace dalam kode, lakukan seperti berikut, Prado::using('PathAlias.Dir1.Dir2.*'); menambah direktori yang dirujuk oleh PathAlias.Dir1.Dir2 ke dalam path include PHP agar kelas itu didefinisikan di bawah direktori itu dapat diturunkan tanpa prefiks namespace. Anda juga dapat menyertakan definisi kelas individual dengan Prado::using('PathAlias.Dir1.Dir2.MyClass'); yang akan menyertakan file kelas jika MyClass tidak didefinisikan.

Untuk lebih jelasnya mengenai mendefinisikan alias path, lihat seksi konfigurasi aplikasi.

Penurunan Komponen

Penurunan komponen berarti membuat turunan dari kelas komponen. Ada dua tipe penurunan komponen: penurunan statis dan dinamis. Komponen yang dibuat masing-masing disebut komponen statis dan komponen dinamis.

Penurunan Komponen Dinamis

Penurunan komponen dinamis berarti membuat turunan komponen dalam kode PHP. Itu sama dengan apa yang umum dirujuk pembuatan obyek dalam PHP. Sebuah komponen dapat dibuat secara dinamis menggunakan salah satu dari dua metode berikut dalam PHP, $component = new ComponentClassName; $component = Prado::createComponent('ComponentType'); di mana ComponentType merujuk ke nama kelas atau nama tipe dalam format namespace (contoh System.Web.UI.TControl). Pendekatan kedua diperkenalkan guna mengimbangi kekurangan dukungan namespace dalam PHP.

Penurunan Komponen Statis

Penurunan komponen statis adalah mengenai pembuatan komponen melalui konfigurasi. Pekerjaan pembuatan sebenarnya dilakukan oleh kerangka kerja PRADO. Sebagai contoh, dalam konfigurasi aplikasi, seseorang dapat mengkonfigurasi sebuah modul untuk diambil ketika aplikasi dijalankan. Selanjutnya modul adalah komponen statis yang dibuat oleh kerangka kerja. Penurunan komponen statis lebih umum digunakan dalam template. Setiap tag komponen dalam sebuah template menetapkan komponen yang akan dibuat secara otomatis oleh kerangka kerja ketika template diambil. Sebagai contoh, dalam sebuah template halaman, tag berikut akan membawa ke pembuatan komponen TButton pada halaman, <com:TButton Text="Register" />