# Shani Web Application Framework
Shani adalah kerangka kerja web open source yang dirancang untuk memungkinkan pengembangan aplikasi cepat dengan upaya minimal sementara kinerja, keamanan, kreativitas, dan praktik pengembangan aplikasi web modern hidup berdampingan.
Gunakan Shani untuk membangun aplikasi sisi cilent atau sisi server. Anda juga dapat menggunakan kerangka kerja front-end favorit Anda saat Shani berdiri di back-end, atau sebaliknya.
Shani berjalan dengan baik di Linux dan Mac OS, namun untuk pengguna Windows mereka dapat menggunakan Subsistem Windows untuk Linux (WSL).
Tidak diperlukan instalasi.
Untuk memulai server web aplikasi shani , jalankan perintah berikut di terminal:
$ php index.phpAplikasi Shani memiliki struktur proyek berikut
/root
apps/ (Contains user applications. Create your applications here)
config/ (Contains important server and hosts configurations)
hosts/ (Contains host configurations files (hostname.yml). Register your application here)
localhost.yml (can be customized)
ssl/ (Contains server ssl certificate files for)
mime.yml
server.yml (Server configuration are written here, and can be customized.)
gui/ (Contains support for GUI building)
assets/ (Contains static files e.g: .css, .js,fonts etc shared by all applications)
html/ (Contains html templates comes with framework)
library/ (Contains files comes with framework that can be used directly by user application)
shani/ (Contains core framework files)
index.php (The entry point of a Shani application)
Struktur folder aplikasi pengguna yang khas dapat muncul sebagai berikut:
apps/
demo/
v1/
modules/ (Can be renamed)
module1_name/ (Can be desired module name)
src/ (Can be renamed)
get/ (This is the request method as directory)
Resource.php (Can be any resource file)
views/ (can be renamed)
resource/ (All lowercase, must match resource file name)
lang/ (Can be renamed)
resource/ (All lowercase, must match resource file name)
breadcrumb/(Can be renamed)
resource/ (All lowercase, must match resource file name)
functions/ (can be renamed)
function-name.php (Must match function name in resource file class)
resource.php (must match module name)
module1_name.php (must match module name)
Mari kita asumsikan kita ingin membuat aplikasi yang disebut demo yang memiliki versi 1.0 ( v1 ). Aplikasi kami memiliki satu modul yang disebut greetings dan satu file sumber daya yang disebut Hello.php .
Sekarang, lihat contoh file sumber daya berikut:
<?php
namespace apps demo v1 modules greetings web get {
use shani engine http App ;
final class Hello
{
private App $ app ;
public function __construct ( App & $ app )
{
$ this -> app = $ app ;
}
/**
* Display greetings from Shani.
*/
public function world ()
{
//sending output to user agent using default view file (world.php)
$ this -> app -> render ();
}
}
} Membuat File View: ( apps/demo/v1/modules/greetings/views/hello/world.php )
<h1>Hello From Shani</h1>Mempertimbangkan contoh kami di atas, struktur folder aplikasi kami akan seperti ini:
apps/
demo/
v1/
modules/
greetings/
src/
get/
Hello.php
views/
hello/
world.php
Langkah selanjutnya adalah mendaftarkan aplikasi kami sehingga dapat tersedia di web. Anda dapat melakukan ini dengan pergi ke /config/hosts/ dan membuat file konfigurasi yang disebut localhost.yml . Anda dapat memilih nama apapun.
Ingat! Setiap aplikasi harus memiliki file konfigurasinya sendiri
Berikut ini adalah konfigurasi aplikasi default yang dilengkapi dengan Shani
# A user application must have atleast one version.
VERSIONS :
" 1.0 " :
# Environment variables are customs, you can create any e.g DEV, TEST, PROD or any
# Must extends shaniadvisorsConfiguration
ENVIRONMENTS :
DEV : appsdemov1configSettings
# Active environment can any one of the provided above.
ACTIVE_ENVIRONMENT : DEV
DEFAULT_LANGUAGE : sw
# Whether an application is running or not
RUNNING : true
" 2.0 " :
ENVIRONMENTS :
DEV : appsdemov2configSettings
ACTIVE_ENVIRONMENT : DEV
DEFAULT_LANGUAGE : sw
RUNNING : true
# The default application version
DEFAULT_VERSION : " 2.0 "Biarkan kami menyesuaikan file ini agar sesuai dengan kebutuhan aplikasi kami:
VERSIONS :
" 1.0 " :
ENVIRONMENTS :
DEV : appsdemov1configDevSettings
TEST : appsdemov1configTestSettings
PROD : appsdemov1configProdSettings
ACTIVE_ENVIRONMENT : DEV
DEFAULT_LANGUAGE : sw
RUNNING : true
DEFAULT_VERSION : " 1.0 " Langkah selanjutnya adalah membuat file kelas konfigurasi ini. Kami akan membuatnya di bawah apps/demo/v1/config/ . Beberapa konten bisa seperti itu:
<php
namespace apps demo v1 config {
use shani advisors Configuration ;
use shani engine http App ;
final class DevSettings extends Configuration
{
public function __construct ( App & $ app , array & $ configurations )
{
parent :: __construct ( $ app , $ configurations );
}
//Add all unimplemented methods here
}
} Mari kita asumsikan aplikasi kami tersedia melalui http://localhost:8008 , kami juga ingin aplikasi kami tersedia melalui http://127.0.0.1:8008 , dan http://example.local , atau lebih ...
Ada konsep alias, itu adalah ketika aplikasi tersedia melalui lebih dari satu nama host. Sama seperti kami membuat file localhost.yml , kami akan membuat file 127.0.0.1.alias dan example.local.alias file.
Ingat file localhost.yml harus tersedia sebelum membuat file .alias , jika tidak server Anda akan hancur
127.0.0.1.alias Isi file
localhost
example.local.alias Isi file
localhost
Seperti yang telah kita lihat, semua file .alias harus berisi nama host yang mereka tunjukkan. Beginilah cara Anda membuat alias dalam aplikasi Shani .
Sekali lagi, mari kita asumsikan aplikasi kami tersedia melalui localhost:8008 . Port default untuk server web kami adalah 8008 untuk http dan port 44380 untuk https. Kita dapat menggunakan URL berikut untuk memanggil world fungsi kita.
$ curl http://localhost:8008/greetings/0/hello/0/worldSelamat! Anda telah menyelesaikan langkah pertama untuk menjadi pengembang Shani .
Aplikasi Shani mengikuti pola URL berikut
http://hostname[:port]/module-name/param1/resource-name/param2/function-name[/more-params][?query=q1]
Memecah pola di atas, kita bisa melihatnya
module-name mewakili modul sumber daya saat ini yang diminta oleh pengguna. Ini adalah direktori di mana semua sub-sumber di bawah modul ini berada.param1 dan param2 adalah pengidentifikasi sumber daya, dapat berupa angka, string atau apapunresource-name atau kadang-kadang dikenal sebagai controller-name adalah sub-sumber. Ini adalah implementasi aplikasi yang sebenarnya, danfunction-name adalah nama fungsi yang tersedia dalam definisi kelas sumber daya. Setelah nama fungsi, Anda dapat menambahkan lebih banyak parameter atau menambahkan string kueriContoh:
http://localhost:8008/products/201/sales/10/details
Aplikasi Shani menggunakan konversi KEBAB ke Camel Case untuk mengonversi URL menjadi nama yang valid.
module-name dalam URL mewakili direktori module-name dalam struktur proyek.resource-name dalam URL mewakili kelas ResourceName di direktori module-name , dan direktori resource-name dalam direktori tampilanfunction-name dalam URL mewakili functionName dalam file kelas ResourceName , dan tampilan function-name.php di direktori tampilanBagian URL lainnya tetap tidak berubah.
Permintaan tarik dipersilakan. Untuk perubahan besar, buka masalah terlebih dahulu untuk membahas apa yang ingin Anda ubah.
Pastikan untuk memperbarui tes yang sesuai.
GPL-3.0