Kerangka kerja AIS dirancang agar sederhana dan efisien, memungkinkan pengembang untuk dengan cepat membangun dan menggunakan aplikasi. Arsitekturnya mempromosikan kode yang bersih dan dapat dipelihara, menjadikannya pilihan yang tepat untuk pemula dan pengembang berpengalaman yang mencari solusi yang kuat dan dapat diskalakan.
Klon, lalu gunakan:
git clone https://github.com/titan2420/ais.git
Arsitektur AIS dirancang dengan kesederhanaan pada intinya. Kesederhanaan ini memfasilitasi pemahaman intuitif tentang sistem, memudahkan pengembang untuk berinteraksi dan memodifikasi kerangka kerja. Dengan meminimalkan kompleksitas, AIS memastikan bahwa pengembang dapat lebih fokus pada pengembangan fitur daripada bergulat dengan kerangka kerja itu sendiri.
---- app
-------- core
-------- controller
-------- model
-------- view
---- public
-------- js
-------- css
-------- img
Dalam kerangka AIS, rute didefinisikan menggunakan folder langsung dan struktur file di folder controller. Setiap folder mewakili segmen rute potensial, dan setiap file dalam folder tersebut dapat diakses sebagai titik akhir. Misalnya:
---- app
-------- controller
------------ home.php (Accessible via /)
------------ user
---------------- home.php (Accessible via /user/)
---------------- transactions.php (Accessible via /user/transactions)
---------------- edit-profile.php (Accessible via /user/edit-profile)
Struktur ini memungkinkan pemetaan URL yang mudah ke pengontrol dan tampilan yang sesuai, menyederhanakan proses perutean.
Ada middleware, preprocess, dan artitektur postprocess di AIS untuk mencegah duplikasi kode dan membuat kode lebih dapat dipelihara.
Lihatlah contoh ini:
---- app
-------- controller
------------ home.php
------------ middleware.php
------------ user
---------------- home.php
---------------- preprocess.php
---------------- postprocess.php
Ketika klien datang ke /user/ , langkah -langkah berikut akan diambil:
controller/middleware.php akan dieksekusi.controller/user/preprocess.php akan dieksekusi.controller/user/home.php akan dieksekusi.controller/user/postprocess.php akan dieksekusi.Routing dinamis dalam kerangka AIS memungkinkan untuk pola URL fleksibel yang beradaptasi dengan permintaan yang masuk secara dinamis. Alih -alih memiliki struktur URL yang tetap, routing dinamis menggunakan pola yang dapat cocok dengan beberapa jalur URL. Begini cara kerjanya:
---- app
-------- controller
------------ user
---------------- dynamic.php (Accessible via /user/{value})
Misalnya, jika suatu permintaan dibuat kepada /user/123 , sistem routing dinamis akan menginterpretasikan 123 sebagai parameter dan memprosesnya menggunakan pengontrol user/dynamic.php dengan variabel $link_vars .
<?php
// controller/user/dynamic.php
echo " User id: " . $ link_vars [ 0 ]; // User id: 123
?>Anda dapat menggunakan struktur direktori untuk routing dinamis juga, misalnya:
---- app
-------- controller
------------ user
---------------- dynamic
-------------------- dynamic
------------------------ home.php (Accessible via /user/{value[0]}/{value[1]})
------------------------ open.php (Accessible via /user/{value[0]}/{value[1]}/open)
-------------------- home.php (Accessible via /user/{value[0]})
-------------------- edit.php (Accessible via /user/{value[0]}/edit)
Misalnya, jika suatu permintaan dibuat kepada /user/123/AIS-Project , sistem routing dinamis akan menafsirkan 123 sebagai parameter dan memprosesnya menggunakan pengontrol user/dynamic.php dengan variabel $link_vars .
<?php
// controller/user/dynamic/dynamic/open.php
<<<<<<< HEAD
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ;
=======
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ; // Opening AIS-Project of 123 user.
>>>>>>> 0 bee68c121c4e091084a9bf093779bfe647b757d
?> Anda dapat memuat tampilan menggunakan fungsi view(view_path, data, options) .
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?> Jika ada layout.php , itu akan dimasukkan dalam tampilan secara otomatis.
---- app
-------- view
------------ layout.php
------------ home.php
------------ user
---------------- home.php
---------------- transactions.php
---------------- edit-profile.php
Anda akan menggunakan data pengguna di /user/home .
<?php
// view/user/home.php
echo " Welcome, " . $ user [ ' name ' ] . " ! " ;
?> Anda dapat dengan mudah membuat API menggunakan AIS Toolkit.
<?php
// controller/api/user/get-users.php
$ users = database:: select ( ' users ' , ' * ' , [ ' LIMIT ' => 1 ]);
response ( $ users );
?>Output akan berada dalam format JSON.
{
"meta" : {
"status" : " SUCCESS "
},
"data" : [
{
"id" : 1 ,
"name" : " John Doe "
}
]
}Anda dapat dengan mudah membuat perintah CLI menggunakan AIS Toolkit.
<?php
// controller/_cli/jobs/deactivate-users.php
$ inactive_users = database:: select ( ' users ' , ' * ' , [ ' active ' => 1 ]);
. . .
cout ( " Deactivated users: " . count ( $ inactive_users ));
?>Anda dapat menjalankannya menggunakan perintah ini:
php index.php -r jobs/deactivate-users
Di AIS, lebih disukai untuk tidak menggunakan model untuk simpilisitas. Namun, pada pengontrol, Anda dapat memuat model menggunakan fungsi model(model_path) saat diperlukan.
Di AIS, model sederhana dan mudah digunakan. Mereka terletak di folder app/model dan digunakan untuk berinteraksi dengan database.
<?php
// controller/user/home.php
model ( ' user ' );
// or
require MODEL . ' user.php ' ;
$ user = getUser ( $ _SESSION [ ' user_id ' ]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?>AIS menggunakan versi Medoo yang disesuaikan sebagai pembungkus basis data. Mudah digunakan dan mudah dimengerti.
<?php
// model/user.php
function getUser ( $ user_id ) {
return database:: select ( ' users ' , ' * ' , [ ' id ' => $ user_id ]);
}
function activateUser ( $ user_id ) {
return database:: update ( ' users ' , [ ' active ' => 1 ], [ ' id ' => $ user_id ]);
}
. . .
?> Jangan membuatnya rumit!
AIS Aturan 1: Untuk kesederhanaan, bukan untuk menggunakan kelas untuk pengontrol dan model untuk memastikan implementasi yang mudah.
AIS Aturan 2: Untuk kesederhanaan, setiap file hanya satu permintaan, memastikan bahwa file tetap kecil dan dapat dikelola.
AIS Aturan 3: Untuk kesederhanaan, tidak perlu menentukan metode HTTP dalam permintaan dan rute, nama file sudah cukup!
AIS Aturan 4: Untuk kesederhanaan, tidak menggunakan model direkomendasikan.
Berikut adalah penggunaan penuh untuk metode dalam kerangka AIS:
Memaksa halaman untuk diakses melalui metode permintaan HTTP dan jenis konten. Anda harus memanggil fungsi ini di awal pengontrol Anda. Jika kondisinya tidak terpenuhi, skrip akan berakhir dengan kesalahan HTTP.
Parameter:
$options (Array): Opsi untuk metode dan jenis konten.Contoh Penggunaan:
<?php
// controller/user/home.php
http_check ([ ' method ' => ' POST ' , ' content_type ' => ' application/json ' ]);
$ data = json_decode ( file_get_contents ( ' php://input ' ), true );
?>Memuat file model atau file model kontaning direktori.
Parameter:
$model (String): Jalur model di folder app/model .Contoh Penggunaan:
<?php
// controller/user/home.php
model ( ' user ' );
?>Memuat file tampilan dengan data dan opsi.
Parameter:
$view (String): Jalur tampilan di folder app/view .$data (Array): Data adalah array asosiatif yang akan diekstraksi ke dalam tampilan sebagai variabel.$options (array): Opsi untuk memuat tata letak seperti ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Opsi ini dapat diakses menggunakan variabel $_VIEW .Contoh Penggunaan:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
?> Membuat tampilan dan mengembalikan konten buffer output. Alih -alih menggunakan view() untuk menggemakan output ke klien, Anda dapat menggunakan render() untuk mendapatkan konten buffer output.
Parameter:
$view (String): Jalur tampilan di folder app/view .$data (Array): Data adalah array asosiatif yang akan diekstraksi ke dalam tampilan sebagai variabel.$options (array): Opsi untuk memuat tata letak seperti ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Opsi ini dapat diakses menggunakan variabel $_VIEW .Contoh Penggunaan:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
$ view = render ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
echo $ view ;
?> Memuat file pustaka atau direktori perpustakaan dengan file init.php .
Parameter:
$lib (string): Jalur perpustakaan di folder app/lib .Contoh Penggunaan:
<?php
// controller/user/home.php
lib ( ' upload ' );
$ uploader = new upload ();
?>Mengalihkan ke URL yang ditentukan dan mengakhiri skrip.
Parameter:
$url (string): URL untuk dialihkan ke.Contoh Penggunaan:
redirect ( ' https://example.com ' );Output data dengan pembatas opsional ke konsol. Nama ini diberikan dari bahasa C ++.
Parameter:
$data (campuran): Data ke output.$delimiter (String): Pembatas untuk ditambahkan.Contoh Penggunaan:
cout ( ' Hello World ' , " n " );Mengirimkan respons dengan data dan metadata opsional ke pengguna di API kemudian mengakhiri skrip.
Parameter:
$data (campuran): Data respons.$meta (array): metadata opsional.Contoh Penggunaan:
response ([ ' sum ' => 100 ], [ ' status ' => ' SUCCESS ' ]);
// Output to endpoint: {"data":{"sum":100},"meta":{"status":"SUCCESS"}}Mengirimkan respons dengan status dan data ke pengguna di API kemudian mengakhiri skrip.
Parameter:
$code (String): Status yang akan dikirim ke pengguna.$data (Array): Data respons.Contoh Penggunaan:
status ( ' PROCESS_ERROR ' , [ ' error ' => ' Something went wrong ' ]);
// Output to endpoint: {"data":{"error":"Something went wrong"},"meta":{"status":"PROCESS_ERROR"}}Mengirimkan respons keberhasilan dengan data.
Parameter:
$data (Array): Data respons.Contoh Penggunaan:
success ();
// Output to endpoint: {"data":[],"meta":{"status":"SUCCESS"}}Mengirimkan respons kegagalan dengan data dan status.
Parameter:
$data (Array): Data respons.$status (String): Kode status.Contoh Penggunaan:
fail ([ ' error ' => ' Invalid request ' ], ' ERROR ' );Mengirim kode status HTTP dengan data dan metadata opsional.
Parameter:
$code (int): Kode status HTTP.$data (Array): Data respons.$meta (array): metadata opsional.Contoh Penggunaan:
http_status ( 404 ); // Shows browser 404 error.Contoh Penggunaan:
http_status ( 404 , [ ' error ' => ' Not found ' ], [ ' status ' => ' ERROR ' ]);
// HTTP error 404 + Output to endpoint: {"data":{"error":"Not found"},"meta":{"status":"ERROR"}}Contoh Penggunaan:
http_status ( 404 , " Page not found! " );
// HTTP error 404 + Output text to endpoint: Page not found!Tidak melakukan apa -apa :). Ini digunakan untuk kecantikan kode atau hanya placeholder untuk pengembangan di masa depan.
Contoh Penggunaan:
do_nothing (); Dumps ( var_dump ) Variabel dan secara opsional mengakhiri skrip.
Parameter:
$var (campuran): Variabel untuk dibuang.$die (bool): Apakah akan mengakhiri skrip.Contoh Penggunaan:
dump ( $ var , true ); Alias untuk metode dump .
Parameter:
$var (campuran): Variabel untuk dibuang.$die (bool): Apakah akan mengakhiri skrip.Contoh Penggunaan:
d ( $ var , true );Alias untuk "buang dan mati". Membuang variabel dan mengakhiri skrip.
Parameter:
$var (campuran): Variabel untuk dibuang.Contoh Penggunaan:
dd ( $ var );Menghasilkan string alfanumerik acak dengan panjang tertentu.
Parameter:
$length (int): Panjang string acak.Contoh Penggunaan:
strand ( 8 ); // Output: "9S34zD7o" Mengirimkan permintaan application/x-www-form-urlencoded dengan data formulir.
Parameter:
$url (string): URL untuk mengirim permintaan ke.$data (array): Data formulir yang akan dikirim.Contoh Penggunaan:
post ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]); Mengirimkan permintaan application/json dengan data JSON.
Parameter:
$url (string): URL untuk mengirim permintaan ke.$data (Array): Data JSON untuk dikirim.Contoh Penggunaan:
post_json ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]);Mengeluarkan backtrace dari tumpukan panggilan saat ini.
Contoh Penggunaan:
backtrace (); // Outputs a backtrace of the current call stack.Siram buffer output dan tutup koneksi.
Contoh Penggunaan:
close_everything ();Menutup segalanya dan mengakhiri skrip.
Contoh Penggunaan:
die_gracefully ();