Kurumi adalah sebuah Framework sederhana yang namanya terinspirasi dari sebuah karakter anime yaitu Tokisaki Kurumi Kami membuat Framework ini bertujuan untuk memberi kemudahan kepada user untuk membuat sebuah web aplikasi mengunakan bahasa PHP NATIVE
Kami mengembangkan Framework ini tanpa mengunakan composer
Fitur-Fitur yang tersedia:
Kami menyediakan 2 cara instalasi, yaitu dengan :
1. Clone repository
Kamu dapat membuka terminal dan menggunakan perintah berikut.
git clone https://github.com/bydefaultiloveyou/Kurumi.git && cd Kurumi && rm -rf .git
Secara otomatis akan melakukan cloning pada source code yang ada di branch default ( master
), jika ingin mengunduh versi stable bisa menambahkan -b 1.x
di depan clone.
2. Unduh file ZIP
Kamu juga bisa mengunduhnya secara manual dengan menekan tombol di samping. Download
Setelah melakukan cloning repo atau download zip, masuk ke repo/folder 'Kurumi' melalui terminal dengan menjalankan perintah:
cd Kurumi
Untuk menjalankan server, jalankan perintah:
php kurumi server
Kemudian, buka localhost:3000
pada browser.
Kami mempunyai kurumi
, dia adalah sebuah program simple yang akan membantu masa development aplikasi kalian. Di dalamnya ada berbagai macam command yang bisa kalian gunakan.
app
Folder paling penting, sebagian besar komponen dari aplikasimu tersimpan disini.config
Berisi file konfigurasi yang dapat diatur sesuai keinginanmu, dapat mempermudah pengaturan seperti database, aktivasi fitur, lokasi input dan output untuk view dan sebagainya.public
Berisi file-file yang boleh dilihat oleh user maupun developer secara publik.resources
Folder resources mengandung view yang sebagai mentahanmu, tidak di compile asset seperti CSS atau JavaScriptroutes
Berisi konfigurasi rute yang dapat diakses pada aplikasimu beserta handler-nya (fungsi atau controller).storage
Berisi file yang dibuat secara otomatis oleh kurumi framework.vendor
Berisi file sistem dari framework ini. Disarankan tidak mengubah apapun yang ada di dalam sini.
Kurumi Mengadaptasi konsep URI dan closure, menyediakan sebuah ekpresi simple dan method yang mendefinisikan routing tanpa komplikasi file konfigurasi routing
use Kurumi\Http\Route;
Route::get('/greeting', function () {
echo 'Hello World';
});
Semua routing Kurumi di definisikan di file routing mu, yang berlokasi di routes directory
, file ini otomatis dijalankan oleh aplikasimu. File routes/web.php itu mendefinisikan sebuah tampilan web mu.
Kamu akan mendefinikan di file routes/web.php dan akan di akses setiap kamu mengunjungi url di browsermu. Seperti contoh, kamu mungkin mengakses routing mengikuti navigasi seperti http://kurumi.com/user di browser mu :
use App\Controllers\UserController;
Route::get('/user', [UserController::class, 'index']);
ini akan secara otomatis akan di akses jika kamu mengunjung route /user
di web browsermu
Kurumi menyediakan beberapa pilihan routing seperti
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::delete($uri, $callback);
Route::get($uri, $callback);
Method GET biasanya digunakan hanya mengambil data. Disini juga tempat untuk menampilan halaman website mu dengan :
view($filename)
Route::post($uri, $callback);
Method POST digunakan untuk mengirimkan data ke server yang ditentukan, sering menyebabkan perubahan pada keadaan atau efek samping pada server. bahasa simple nya nginsert data ke Database
Route::put($uri, $callback);
Method PUT menggantikan data yang ada dengan data yang dikirimkan / ngerubah data di Database.
Route::delete($uri, $callback);
Method DELETE untuk menghapus data yang ada di Database.
View adalah sebuah fungsi untuk menampilkan halaman web. Secara default file mengarah ke folder resources/views
sebagai contoh
di dalam folder
.
βββ resources
βββ views
βββ components
β βββ layouts.kurumi.php
βββ welcome.kurumi.php
fungsi view secara otomatis akan menampilkan isi dari file welcome.kurumi.php
cukup dengan menulisnya seperti di bawah ini
view('welcome')
kamu juga dapat mengirimkan data ke halaman view dengan mengirim data tersebut sebagai parameter kedua
view('welcome', [ 'waifu' => 'Kurumi' ])
Kurumi mengadaptasi .
sebagai lambang folder. Sebagai Contoh jika kamu ingin menampilkan file yang ada di sub directory kamu harus menyertakan format folder.file
contoh :
view('components.layouts')
maka isi dari file components/layouts.kurumi.php
akan ditampilkan
Haniel adalah nama angel milik Natsumi yang dapat merubah wujud benda apapun. Dia dapat merubah expression dan directive pada template html kamu menjadi kode php. Di bawah ini beberapa expression dan directive yang dapat digunakan :
- normal expression
{ $waifu = 'kurumi' }
baris di atas akan diterjemahkan menjadi
<?php $waifu = 'kurumi' ?>
- normal echo expression (memunculkan nilai dari variabel)
{! $waifu !}
- special echo expression (memunculkan nilai dari variabel yang dibungkus fungsi built-in php yaitu
htmlspecialchars
)
{{ $waifu }}
Note: directive diawali dengan tanda @
<div>
@if ( $kurumi === "sayang lutfi" ):
<p> π eh abang sayang</p>
@elseif ( $nakanoNino === "istri miko" ):
<p>Betsuniiii >////< </p>
@else:
<p>ayangku siapa? πΏ</p>
@endif
</div>
@each ( $waifus as $name ):
<p>{{ $name }}</p>
@endeach
Sama seperti fungsi built-in milik php yakni include, namun tidak perlu menggunakan tag pembuka <?php
dan penutup ?>
. @include secara default memanggil file pada folder resources/views
. Dan perlu diingat bahwa kurumi membaca tanda titik .
sebagai tanda garis miring /
yang biasa menjadi pemisah antara folder.
@include ('components.header')
@include ('components.navbar')
Dapat digunakan untuk mengambil file dari folder public
misal kamu memiliki file css dan javascript di dalamnya.
@asset ('css/style.css')
@asset ('js/script.js')
Melengkapi form menggunakan method selain bawaan html ( GET
dan POST
) seperti PUT
dan DELETE
.
<form action="/user" method="POST">
@method(DELETE)
<input type="text" name="user" />
<button>DELETE</button>
</form>
kami menyediakan template yang sederhana, template ini didorong oleh inheritance. Semua template ini harus menggunakan extension .kurumi.php
.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#F380AB" />
<link rel="manifest" href="@asset('manifest.json')" />
<title></title>
@css ("https://fonts.googleapis.com/css2?family=Radio+Canada&display=swap" rel="stylesheet")
@css ("https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css")
@css ("css/styles.css")
</head>
<body>
@deus ("layouts")
@javascript ("https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js")
</body>
</html>
@section ("layouts")
<main class="container">
<figure class="text-center p-5">
<img width="400" src="https://pbs.twimg.com/media/FJxua79XwAMXzND?format=jpg&name=900x900" alt="Kurumi" />
<h2>WELCOME TO KURUMI FRAMEWORK</h2>
<figcaption>
<p class="text-secondary">Simple framework for Koneksi.php</p>
<ul class="d-flex w-100 justify-content-center">
<a href="https://github.com/bydefaultiloveyou/Kurumi.git" target="__blank" style="text-decoration: none;" class="px-4 rounded-5 m-2 py-1 bg-primary text-white">
<li>Documentation</li>
</a>
<li class="px-4 py-1 bg-primary text-white rounded-5 m-2">Lincense MIT</li>
</ul>
</figcaption>
</figure>
</main>
@endsection
@extends ("layouts.main")
Perhatikan bahwa @deus
berfungsi sebagai parent dari layout, @deus('layouts)'
akan di isi oleh child dari layout yang telah di tentukan di @section ('layouts')
.
untuk parameter dari parent @deus
nya harus sama dengan child di @section
.
Perhatikan juga @extends ('layouts.main')
ini parameter nya adalah path
dari file parent layout yang kamu punya, untuk penulisan @extends
harus ditulis dipaling bawah code kamu.
Component akan memudahkan kamu dalam menerapkan layouting, kamu dapat memecah bagian-bagian web menjadi komponen yang lebih kecil sehingga 1 komponen hanya mewakili bagian tertentu misalnya header, footer, navigation bar, hidden element dan lain-lain.
Contoh pada file view utama yang terletak di resources/views/welcome.kurumi.php
@section ("layouts")
<x-header x-title="Kurumi" />
<main class="container">
<h2>Halo semua</h2>
</main>
@endsection
@extends ("layouts.main")
Seperti yang kamu lihat terdapat tag yang diawali 'x-' seperti berikut
<x-header x-title="Kurumi" />
Maka bagian tersebut akan diisi oleh komponen yang terletak di resources/views/components/header.kurumi.php
. Selain itu, atribut yang diawali 'x-' dapat digunakan pada file ini juga.
<div>
<h1>Welcome to {{ $title }} Framework!</h1>
</div>