From a4a1cc36476568ef83387581a6f17baf2027ba4a Mon Sep 17 00:00:00 2001 From: kabayan <> Date: Fri, 17 Aug 2007 10:06:40 +0000 Subject: First attemp is failed. retry --- .../pages/Fundamentals/id/Applications.page | 55 +++++++++ .../pages/Fundamentals/id/Architecture.page | 13 +++ .../pages/Fundamentals/id/Components.page | 128 +++++++++++++++++++++ .../protected/pages/Fundamentals/id/Controls.page | 51 ++++++++ .../protected/pages/Fundamentals/id/Hangman.page | 14 +++ .../protected/pages/Fundamentals/id/Modules.page | 50 ++++++++ .../protected/pages/Fundamentals/id/Pages.page | 23 ++++ .../protected/pages/Fundamentals/id/Services.page | 34 ++++++ .../pages/Fundamentals/id/applifecycles.gif | Bin 0 -> 31200 bytes .../pages/Fundamentals/id/applifecycles.vsd | Bin 0 -> 220672 bytes .../protected/pages/Fundamentals/id/classtree.gif | Bin 0 -> 18320 bytes .../protected/pages/Fundamentals/id/classtree.vsd | Bin 0 -> 72704 bytes .../protected/pages/Fundamentals/id/directory.gif | Bin 0 -> 3967 bytes .../protected/pages/Fundamentals/id/lifecycles.gif | Bin 0 -> 60897 bytes .../protected/pages/Fundamentals/id/lifecycles.vsd | Bin 0 -> 225280 bytes .../pages/Fundamentals/id/objectdiagram.gif | Bin 0 -> 7700 bytes .../pages/Fundamentals/id/objectdiagram.vsd | Bin 0 -> 159744 bytes 17 files changed, 368 insertions(+) create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Applications.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Architecture.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Components.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Controls.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Hangman.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Modules.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Pages.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/Services.page create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/classtree.gif create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/directory.gif create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif create mode 100644 demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd (limited to 'demos') diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Applications.page b/demos/quickstart/protected/pages/Fundamentals/id/Applications.page new file mode 100644 index 00000000..45ab2359 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Applications.page @@ -0,0 +1,55 @@ + + +

Aplikasi

+

+Aplikasi adalah turunan dari TApplication atau asal kelasnya. Ia mengatur modul yang menyediakan fungsionalitas berbeda dan diambil bila diperlukan. Ia menyediakan layanan bagi pengguna-akhir. Ia adalah tempat utama untuk menyimpan berbagai parameter dalam sebuah aplikasi. Dalam aplikasi PRADO, turunan aplikasi adalah satu-satunya obyek yang secara global dapat diakses melalui panggilan fungsi Prado::getApplication(). +

+

+Aplikasi dikonfigurasi melalui konfigurasi aplikasi. Biasanya dibuat dalam naskah entri seperti berikut, + +require_once('/path/to/prado.php'); +$application = new TApplication; +$application->run(); + +Di mana metode run() memulai aplikasi untuk menangani permintaan pengguna. +

+ +

Organisasi Direktori

+

+Aplikasi PRADO minimal berisi dua file: file entri dan file template halaman. Ini harus diatur sebagai berikut, + +

+ + +

+Produk aplikasi PRADO biasanya membutuhkan file lebih banyak. Ia dapat menyertakan file konfigurasi aplikasi bernama application.xml di bawah path basis aplikasi protected. Halaman bisa diatur dalam direktori, beberapa diantaranya dapat berisi file konfigurasi halaman bernama config.xml. Untuk lebih jelasnya, silahkan lihat seksi konfigurasi. +

+ +

Penyebaran Aplikasi

+

+Menyebarkan aplikasi PRADO sebagian besar terkait dengan meng-copy direktori. Sebagai contoh, untuk menyebarkan aplikasi minimal di atas ke server lain, ikuti langkah-langkah berikut, +

+
    +
  1. Copy konten di bawah wwwroot ke direktori yang dapat diakses=Web pada server baru.
  2. +
  3. Ubah file naskah entri index.php agar ia menyertakan file prado.php secara benar.
  4. +
  5. Hapus semua konten di bawah direktori assets dan runtime dan pastikan kedua direktori dapat ditulis oleh proses server Web.
  6. +
+ +

Masa Hidup Aplikasi

+

+Seperti masa hidup halaman, aplikasi juga mempunyai masa hidup. Modul aplikasi dapat meregistrasi event masa hidup. Ketika aplikasi mencapai masa hidup tertentu dan memunculkan event terkait, metode modul teregistrasi akan di panggil secara otomatis. Modul yang disertakan dalam rilis PRADO, seperti TAuthManager, menggunakan cara ini untuk melasanakan tujuannya. +

+

+Masa hidup aplikasi dapat digambarkan sebagai berikut, +

+ + +
$Id: Applications.page 1650 2007-01-24 06:55:32Z wei $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Architecture.page b/demos/quickstart/protected/pages/Fundamentals/id/Architecture.page new file mode 100644 index 00000000..9c986cf9 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Architecture.page @@ -0,0 +1,13 @@ + +

Arsitektur

+ +

+PRADO adalah kerangka kerja presentasi utama, meskipun tidak dibatasi demikian. Kerangka kerja terfokus pada pembuatan pemrograman Web, yang banyak berkaitan dengan interaksi pengguna, menjadi berbasis-komponen dan kendali-event agar pengembang itu bisa lebih produktif. Susunan kelas berikut menggambarkan beberapa kelas utama yang disediakan oleh PRADO, +

+ + +

+Ketika aplikasi PRADO memproses permintaan halaman, diagram obyek statisnya dapat dilihat sebagai berikut, +

+ +
$Id: Architecture.page 1650 2007-01-24 06:55:32Z wei $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Components.page b/demos/quickstart/protected/pages/Fundamentals/id/Components.page new file mode 100644 index 00000000..5bf1a3f2 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Components.page @@ -0,0 +1,128 @@ + +

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 $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Controls.page b/demos/quickstart/protected/pages/Fundamentals/id/Controls.page new file mode 100644 index 00000000..dba49936 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Controls.page @@ -0,0 +1,51 @@ + +

Kontrol

+

+Kontrol adalah turunan dari kelas TControl atau asal sub kelasnya. Kontrol adalah komponen yang didefinisikan sebagai tambahan pada antarmuka pengguna. Kelas basis TControl mendefinisikan hubungan leluhur-anak diantara kontrol yang mencerminkan pengurungan hubungan diantara elemen antarmuka pengguna. +

+ +

Susunan Kontrol

+

+Kontrol dikaitkan satu sama lain melalui hubungan leluhur-anak. Setiap kontrol leluhur dapat memiliki beberapa kontrol anak. Kontrol leluhur bertugas terhadap transisi keadaan dari kontrol anaknya. Hasil dari kontrol anak biasanya dipakai untuk mengatur penampilan kontrol leluhur. Hubungan leluhur-anak membawa kontrol bersama ke dalam susunan kontrol. Halaman ada di akar dari susunan yang penampilannya di berikan kepada pengguna-akhir. +

+

+Hubungan leluhur-anak biasanya dilakukan oleh kerangka kerja melalui template. Dalam kode, anda dapat menetapkan kontrol secara eksplisit sebagai anak dari yang lainnya menggunakan salah satu metode berikut, + +$parent->Controls->add($child); +$parent->Controls[]=$child; + +di mana properti Controls merujuk ke koleksi kontrol anak dari leluhur. +

+ +

Identifikasi Kontrol

+

+Setiap kontrol mempunyai properti ID yang dapat secara unik dapat mengidentifikasi dirinya sendiri diantara kontrol keluarganya. Sebagai tambahan, setiap kontrol mempunyai UniqueID dan ClientID yang dapat dipakai untuk mengidentifikasi kontrol secara global dalam susunan di mana kontrol berada. UniqueID dan ClientID sangat mirip. Pembentuk dipakai oleh kerangka kerja guna menentukan lokasi dari kontrol terkait dalam susunan, sementara yang kedua sebagian besar dipakai pada sisi klien sebagai ID tag HTML. Secara umum, anda tidak boleh bergantung pada bentuk eksplisit UniqueID atau ClientID. +

+ +

Wadah Penamaan

+

+Setiap kontrol mempunyai wadah penamaan yang mana kontrol membuat ruang nama (namespace) unik untuk membedakan antara kontrol dengan ID yang sama. Sebagai contoh, kontrol TRepeater membuat multipel item masing-masing mempunyai kontrol anak dengan ID yang sama. Untuk membedakan kontrol anak ini, setiap item bertindak sebagai wadah penamaan. Oleh karena itu, kontrol anak dapat diidentifikasi secara unik menggunakan wadah penamaan ID bersama dengan ID-nya sendiri. Seperti yang mungkin sudah anda mengerti, UniqueID dan ClientID bergantung pada wadah penamaan. +

+

+Kontrol dapat bertindak sebagai wadah penamaan jika ia menerapkan antarmuka INamingContainer. +

+ +

ViewState dan ControlState

+

+HTTP adalah protokol tidak berkondisi, berarti ia tidak menyediakan fungsionalitas untuk mendukung interaksi berlanjut antara pengguna dan server. Setiap permintaan dianggap sebagai diskrit dan berdiri sendiri dari yang lainnya. Aplikasi Web, sering perlu untuk mengetahui apa yang telah dilakukan pengguna dalam permintaan sebelumnya. Selanjutnya orang memperkenalkan sesi guna membantu mengingat informasi kondisi seperti itu. +

+

+PRADO meminjam konsep viewstate dan controlstate dari Microsoft ASP.NET guna menyediakan tambahan mekanisme pemrograman berkondisi. Penyimpanan nilai dalam viewstate atau controlstate mungkin tersedia untuk permintaan berikutnya jika permintaan baru dari submisi (disebut postback) ke halamanyang sama oleh pengguna yang sama. Perbedaan antara viewstate dan controlstate adalah bahwa pembentuk dapat dimatikan saat yang kemudian tidak bisa. +

+

+Viewstate dan controlstate diterapkan dalam TControl. Biasanya dipakai untuk mendefinisikan berbagai properti kontrol. Untuk menyimpan dan mengambil nilai dari viewstate atau controlstate, gunakan metode berikut, + +$this->getViewState('Name',$defaultValue); +$this->setViewState('Name',$value,$defaultValue); +$this->getControlState('Name',$defaultValue); +$this->setControlState('Name',$value,$defaultValue); + +di mana $this merujuk ke turunan kontrol, Name merujuk ke kunci yang mengidentifikasi nilai pasti, $defaultValue adalah opsional. Ketika mengambil nilai dari viewstate atau controlstate, jika kunci terkait tidak ada, nilai standar akan diberikan. +

+ +
$Id: Controls.page 1650 2007-01-24 06:55:32Z wei $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Hangman.page b/demos/quickstart/protected/pages/Fundamentals/id/Hangman.page new file mode 100644 index 00000000..7a66e328 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Hangman.page @@ -0,0 +1,14 @@ + + +

Contoh: Permainan Hangman

+

+Setelah melihat aplikasi "Hello World", sekarang kita membuat aplikasi yang lebih rumit disebut "Permainan Hangman". Dalam permainan ini, pemain diminta untuk menebak kata, satu huruf setiap waktu. Jika dia menebak huruf dengan benar, huruf akan ditampilkan dalam kata. Pemain dapat melanjutkan untuk menebak selama angka kesalahannya dalam batas yang sudah ditetapkan. Pemain memenangkan permainan jika menemukan kata dalam batas kesalahan, atau dia kalah. +

+

+Untuk memfasilitasi pembangunan permainan ini, kami perlihatkan diagram transisi keadaan dari proses permainan sebagai berikut, +

+Untuk dilanjutkan... +

+ + +
$Id: Hangman.page 1650 2007-01-24 06:55:32Z wei $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Modules.page b/demos/quickstart/protected/pages/Fundamentals/id/Modules.page new file mode 100644 index 00000000..daa4ccd8 --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Modules.page @@ -0,0 +1,50 @@ + + +

Modul

+

+Modul adalah turunan dari kelas yang menerapkan antarmuka IModule. Umumnya sebuah modul didesain untuk fungsionalitas tertentu yang dapat disertakan ke dalam aplikasi PRADO dan berbagi dengan semua komponen dalam aplikasi. +

+

+PRADO menggunakan konfigurasi untuk menetapkan apakah mengambil sebuah modul, mengambil modul jenis apa, dan bagaimana untuk menginisialisasi modul yang diambilnya. Para pengembang dapat mengganti modul inti dengan implementasinya sendiri melalui konfigurasi aplikasi, atau mereka dapat menulis modul baru guna menyediakan fungsionalitas tambahan. Sebagai contoh, modul dapat dikembangkan untuk menyediakan logika database umum pada satu atau beberapa halaman. Untuk lebih jelasnya, silahkan lihat konfigurasi. +

+

+Ada tiga modul inti yang diambil secara standar kapan saja aplikasi dijalankan. Ketiganya adalah modul permintaan, modul respon, dan modul pengendali kesalahan. Sebagai tambahan, modul sesi diambil saat ia digunakan dalam aplikasi. PRADO menyediakan implementasi standar untuk semua modul ini. Modul kustom dapat dikonfigurasi atau dikembangkan guna mengganti atau menambah modul inti ini. +

+ + +

Modul Permintaan

+

+Modul permintaan menyediakan penyimpanan dan skema akses untuk permintaan pengguna yang dikirim melalui HTTP. Permintaan pengguna datang dari beberapa sumber, termasuk URL, data post, data sesi, data cookie, dll. Data ini semuanya dapat diakses melalui modul permintaan. Standarnya PRADO menggunakan THttpRequest sebagai modul permintaan. Modul permintaan dapat diakses melalui properti Request dari aplikasi dan kontrol. +

+ + +

Modul Respon

+

+Modul respon menerapkan mekanisme untuk mengirimkan output ke pengguna klien. Modul respon dapat dikonfigurasi guna mengontrol bagaimana output di-cache pada sisi klien. Standarnya PRADO menggunakan THttpResponse sebagai modul respon. Modul respon dapat diakses melalui properti Response dari aplikasi dan kontrol. +

+ + +

Modul Sesi

+

+Modul sesi melapisi fungsionalitas terkait dengan penanganan sesi pengguna. Modul sesi secara otomatis diambil saat aplikasi menggunakan sesi. Standarnya PRADO menggunakan THttpSession sebagai modul sesi, yang merupakan pelapis sederhana dari fungsi sesi yang disediakan oleh PHP. Modul sesi dapat diakses melalui properti Session dari aplikasi dan kontrol. +

+ + +

Modul Pengendali Kesalahan

+

+Modul pengendali kesalahan dipakai untuk menangkap dan memproses semua kondisi kesalahan dalam sebuah aplikasi. PRADO menggunakan TErrorHandler sebagai modul pengendali kesalahan. Ia menangkap semua peringatan PHP, perhatian dan kekecualian, dan ditampilkan dalam bentuk yang tepat bagi pengguna-akhir. Modul pengendali kesalahan dapat diakses melalui properti ErrorHandler dari turunan aplikasi. +

+ + +

Modul Kustom

+

+PRADO dirilis dengan beberapa modul lebih disamping yang inti. Ini termasuk modul cache (TSqliteCache dan TMemCache), modul manajemen pengguna (TUserManager), modul otentikasi dan otorisasi (TAuthManager), dll. +

+

+Ketika TPageService diminta, ia juga mengambil modul tertentu untuk layanan halaman, termasuk manajer asset (TAssetManager), manajer template (TTemplateManager), manajer tema/skin (TThemeManager). +

+

+Modul kustom dan modul inti semuanya dapat dikonfigurasi melalui konfigurasi. +

+ +
$Id: Modules.page 1650 2007-01-24 06:55:32Z wei $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Pages.page b/demos/quickstart/protected/pages/Fundamentals/id/Pages.page new file mode 100644 index 00000000..9ffb7c1c --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Pages.page @@ -0,0 +1,23 @@ + + +

Halaman

+

+Halaman adalah kontrol teratas yang tidak mempunyai leluhur. Presentasi halaman ditampilkan secara langsung ke pengguna-akhir. Pengguna mengakses halaman dengan mengirimkan permintaan layanan halaman. +

+

+Setiap halaman harus mempunyai file template. Akhiran nama file harus .page. Nama file (tanpa akhiran) adalah nama halaman. PRADO akan mencoba mencari file kelas halaman di bawah direktori yang berisi file template halaman. File kelas halaman tersebut harus mempunyai nama file yang sama (diakhiri dengan .php) seperti file template. Jika file kelas tidak ditemukan, halaman akan mengambil kelas TPage. +

+ +

PostBack

+

+Submisi formulir disebut postback jika submisi dibuat untuk halaman yang berisi formulir. Postback dapat dianggap sebagai kondisi di sisi klien, dimunculkan oleh pengguna. PRADO akan mencoba mengidentifikasi kontrol mana pada sisi server untuk postback kondisi. Jika seseorang menentukan misalnya, TButton, kami menyebutnya pengirim event postback yang akan menterjemahkan event postback ke dalam beberapa event sisi-server tertentu (contoh event OnClick dan OnCommand untuk TButton). + +

+ +

Masa Hidup Halaman

+

+Mengerti masa hidup halaman adalah penting untuk menguasai pemrograman PRADO. Masa hidup halaman merujuk ke transisi kondisi dari sebuah halaman saat melayani halaman ini bagi pengguna-akhir. Ini dapat digambarkan dalam grafik kondisi berikut, + +

+ +
$Id: Pages.page 1650 2007-01-24 06:55:32Z wei $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Services.page b/demos/quickstart/protected/pages/Fundamentals/id/Services.page new file mode 100644 index 00000000..2d89573d --- /dev/null +++ b/demos/quickstart/protected/pages/Fundamentals/id/Services.page @@ -0,0 +1,34 @@ + + +

Layanan

+

+Layanan adalah turunan dari kelas yang menerapkan antarmuka IService. Setiap jenis layanan memproses tipe permintaan tertentu pengguna. Sebagai contoh, respon layanan halaman terhadap permintaan pengguna untuk halaman PRADO. +

+

+Sebuah layanan diidentifikasi secara unik dengan properti ID-nya. Standarnya ketika THttpRequest dipakai sebagai modul permintaan, nama variabel GET digunakan untuk mengidentifikasi layanan mana yang sedang diminta oleh pengguna. Jika nama variabel GET sama dengan beberapa ID layanan, permintaan dianggap untuk layanan itu, dan nilai dari variabel GET dikirimkan sebagai parameter layanan. Untuk layanan halaman, nama variabel GET harus page. Sebagai contoh, URKL berikut meminta halaman Fundamentals.Services, + +http://hostname/index.php?page=Fundamentals.Services + +

+

+Para pengembang dapat menerapkan layanan tambahan untuk aplikasinya. Untuk menjadikan layanan agar tersedia, konfigurasi itu dalam konfigurasi aplikasi. +

+ +

Layanan Halaman

+

+PRADO menerapkan TPageService untuk melayani permintaan halaman pengguna. Halam disimpan di bawah direktori yang ditetapkan oleh properti BasePath dari layanan halaman. Properti standarnya ke direktori pages di bawah path basis aplikasi. Anda boleh mengubah standar ini dengan mengkonfigurasi layanan dalam konfigurasi aplikasi. +

+

+Halaman disusun ke dalam direktori di bawah BasePath. Dalams setiap direktori, di sana ada file konfigurasi bernama config.xml, yang berisi konfigurasi yang hanya efektif ketika halaman di bawah direktori atau sub direktori itu diminta. Untuk lebih jelasnya, lihat seksi konfigurasi halaman. +

+

+Parameter layanan untuk layanan halaman merujuk pada halaman yang sedang diminta. Parameter seperti Fundamentals.Services merujuk pada halaman Services di bawah direktori <BasePath>/Fundamentals. Jika parameter tersebut tidak ada dalam permintaan, dianggap sebagai halaman standar bernama Home. Menggunakan THttpRequest sebagai modul permintaan (default), URL berikut masing-masing akan meminta halaman Home, About dan Register, + +http://hostname/index.php +http://hostname/index.php?page=About +http://hostname/index.php?page=Users.Register + +di mana contoh pertama mengambiil keuntungan bahwa layanan halaman adalah layanan standar dan Home adalah halaman default. +

+ +
$Id: Services.page 1650 2007-01-24 06:55:32Z wei $
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif new file mode 100644 index 00000000..d5300aa6 Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd new file mode 100644 index 00000000..56f6602d Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/classtree.gif b/demos/quickstart/protected/pages/Fundamentals/id/classtree.gif new file mode 100644 index 00000000..b1fbf0d6 Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/classtree.gif differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd b/demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd new file mode 100644 index 00000000..c000d32f Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/directory.gif b/demos/quickstart/protected/pages/Fundamentals/id/directory.gif new file mode 100644 index 00000000..c7d5086d Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/directory.gif differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif new file mode 100644 index 00000000..5edaff5f Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd new file mode 100644 index 00000000..368d0ba7 Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif new file mode 100644 index 00000000..7910469c Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif differ diff --git a/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd new file mode 100644 index 00000000..b2457220 Binary files /dev/null and b/demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd differ -- cgit v1.2.3