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 penentu dan/atau pengambil dalam kelas komponen. Sebagai contoh, dalam TControl, kami mendefinisikan properti ID menggunakan metode pengambil dan penentu 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 penentu. 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

Component events are special properties that take method names as their values. Attaching (setting) a method to an event will hook up the method to the places at which the event is raised. Therefore, the behavior of a component can be modified in a way that may not be foreseen during the development of the component.

A component event is defined by the existence of a method whose name starts with the word on. The event name is the method name and is thus case-insensitve. For example, in TButton, we have class TButton extends TWebControl { public function onClick( $param ) { ... } } This defines an event named OnClick, and a handler can be attached to the event using one of the following ways, $button->OnClick = $callback; $button->OnClick->add( $callback ); $button->OnClick[] = $callback; $button->attachEventHandler( 'OnClick' , $callback ); where $callback refers to a valid PHP callback (e.g. a function name, a class method array($object,'method'), etc.)

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" />

$Id: Components.page 1650 2007-01-24 06:55:32Z wei $