superframework / superframework
The super fastest framework ever for scalable project
Installs: 183
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 2
Forks: 2
Open Issues: 0
Type:project
Requires
- php: 7.3.*|7.4.*|8.0.*
- ext-curl: *
- ext-json: *
- ext-openssl: *
- ext-pdo: *
- fherryfherry/super-framework-engine: ^v1.1.0
This package is auto-updated.
Last update: 2024-11-14 11:55:40 UTC
README
The lightweight and fastest PHP framework from the creator of CRUDBooster
Why Super Framework?
Kita mengadopsi beberapa pola pada framework laravel dan sekaligus merangkum apa saja yang paling essensial (terutama bagi kami) dalam development web. Sehingga kami dapat memaksimalkan performa kecepatan dari framework ini.
Daftar Isi
- Instalasi
- Memulai
- Controller & Routing
- CLI
- File System
- Session
- Cache
- Request
- Response
- Validation
- Database ORM / Query Builder
- Helper
- Collection
- Firebase Cloud Message
- MRS Pattern
- Cron Job / Scheduler
- Useful Libraries
- Contact
Instalasi
Syarat Kebutuhan Sistem
Sebelum melakukan instalasi pastikan sistem Anda sudah memenuhi persyaratan berikut ini:
- php 7.3 >= | 7.4 >=
- Web server Apache / Nginx
- MySQL / MariaDB / Postgre / SQL Server / SQLite
- Composer
- PDO
Opsional, namun direkomendasikan :
- php Zend OPCache Extension
Perintah Instalasi
Buka terminal / command prompt pada folder yang telah Anda siapkan, dan jalankan perintah berikut:
$ composer create-project superframework/superframework my_new_super
Jika kamu mengalami kegagalan instalasi karena issue platform checking
php version tidak sesuai padahal php kamu sudah kompatibel. Kamu bisa tambahkan parameter --ignore-platform-reqs
$ composer create-project superframework/superframework my_new_super --ignore-platform-reqs
Memulai
Konfigurasi Environment (.env)
Silahkan copy file .env.example
menjadi .env
. Apabila OS Anda tidak dapat melakukannya, Anda dapat menggunakan perintah :
$ cp .env.example .env
Kemudian atur file .env tersebut.
# Bagian ini Anda dapat menggantinya dengan nama proyek APP_NAME="PHP Super Framework" # Bagian ini dapat diganti dengan mysql, pgsql, sqlsrv, sqlite DB_CONNECTION=mysql # DB_HOST biarkan localhost DB_HOST=localhost # DB_PORT sesuaikan dengan port servis database Anda, untuk mySQL defaultnya adalah 3306 DB_PORT=3306 # DB_DATABASE isi dengan nama database proyek Anda DB_DATABASE=super # DB_USERNAME isi dengan user database DB_USERNAME=root # DB_PASSWORD isi dengan password database DB_PASSWORD= # Apabila Anda ingin error ditampilkan pada browser, maka isi nilai berikut dengan true DISPLAY_ERRORS=false # Apabila Anda ingin merekam setiap kejadian error pada siste, # maka isi nilai berikut dengan true. Maka nanti ketika terjadi error tersimpan pada folder /logs LOGGING_ERRORS=false
Struktur Folder
Sebelum Anda lanjut membuat aplikasi dengan framework ini, Anda perlu mengerti terlebih dahulu struktur folder pada framework SuperFramework ini.
/app /Helpers /Lang /Migrations /Models /Modules /bootstrap /configs /logs /public /tasks /vendor
/app
Folder app
berisi bisnis logika pada aplikasi Anda. Disini akan berisi semua file controller, helper, model, dan lain-lain.
/bootstrap
Folder bootstrap
berisi file cache yang digenerasi oleh sistem. Secara praktik Anda tidak perlu menambah / mengurangi apapun yang telah digenerasi pada folder ini.
/configs
Folder configs
berisi file pengaturan dasar pada aplikasi. Anda dapat menyesuaikan beberapa pengaturan disini, namun beberapa sudah diarahkan ke file .env
/logs
Folder logs
berisi file .log
hasil rekaman kejadian - kejadian pada sistem aplikasi Anda, seperti error dan debug.
/public
Folder public
ini digunakan untuk file yang dijalankan pertama kali oleh aplikasi. Berisi file index.php
serta tempat Anda mengisinya dengan file-file asset css/js.
/tasks
Folder tasks
ini berisi file schedule yang akan dijalankan pada cronjob. Anda dapat menduplikasi file task yang ada, dan menyesuaikan sesuai kebutuhan cron job yang baru.
/vendor
Folder vendor
ini berisi berbagai macam library yang dibutuhkan pada sistem framework ini. Anda tidak perlu mengubah / menambahnya secara manual, karena sudah dikontrol dan dimanajemen oleh Composer.
Controller & Routing
Membuat Controller
Buka tool editor favorit Anda, dan buat file pada
app/Modules/Main/Controllers/TestController.php
Kemudian isikan file controller tersebut dengan format sebagai berikut :
<?php namespace App\Modules\Main\Controllers; use SuperFrameworkEngine\Foundation\Controller; /** * Class TestController * @route test */ class TestController extends Controller { /** * @return false|string * @route / * @throws \Exception */ public function index() { echo "Ini controller percobaan"; } }
Lalu kemudian save file tersebut.
# Pastikan Anda membuat nama file controller persis seperti perintah diatas
Buka terminal pada root folder proyek Anda. Dan jalankan perintah berikut ini :
$ php super compile
Perintah diatas digunakan untuk menyimpan perubahan konfigurasi, routing, dan class lainnya.
Jika sudah, Anda dapat mencobanya pada browser:
example.com/test
atau jika menggunakan localhost
localhost/projek_anda/public/test
Routing
Routing pada superframework diatur langsung pada setiap class controller.
Routing Class
Routing class adalah routing yang diatur diatas class name. Dengan routing class Anda dapat membuat sebuah awalan routing pada class controller tersebut.
<?php namespace App\Modules\Main\Controllers; use SuperFrameworkEngine\Foundation\Controller; /** * @route test */ class TestController
Maka akan menghasilkan :
example.com/test
Routing Method
Routing method berarti Anda mendefinisikan routing pada setiap method.
/** * @route welcome */ public function welcome() { echo "Ini controller percobaan"; }
Maka jika digabung dengan routing class tadi akan menghasilkan:
example.com/test/welcome
Routing Dengan Argument
Anda dapat memasukkan argument pada url dan mencocokan pada method Anda dengan cara sebagai berikut:
/** * @route welcome/{argument1}/{argument2} */ public function welcome($argument1, $argument2) { dd($argument1, $argument2); }
Jangan lupa untuk menjalankan perintah berikut sebelum mendapatkan perubahan :
$ php super compile
POST / GET
Pada superframework Anda tidak membutuhkan mendeklarasikan secara manual pada setiap routing. Jadi setiap routing dapat berjalan sebagai GET maupun POST. Apabila Anda ingin memvalidasi method yang dikirimkan oleh user, maka Anda harus menggunakan helper khusus seperti contoh berikut :
/** * @route submit */ public function submit() { if(request_method_is_post()) { // Lanjut bisnis logik Anda } // Atau if(request_method_is_get()) { // Lanjut eksekusi setelah get } }
CLI (super)
Seperti layaknya framework lain seperti laravel mempunyai artisan
pada super framework juga mempunyainya dengan nama super
. Cara menggunakannya sebagai berikut:
php super [command]
File System
Anda dapat melakukan upload file dengan helper FileSystem berikut
Sebelum memanggil fungsi diatas, pasang use berikut ini diatas class controller.
use SuperFrameworkEngine\App\UtilFileSystem;
Session
Untuk menggunakan session, silahkan gunakan helper berikut ini :
Cache
Untuk menggunakan cache, silahkan gunakan helper berikut:
Request
Jika pada PHP native Anda mengenal $_GET, $_POST, $_REQUEST, pada framework ini telah dibungkus ulang menjadi helper berikut
Response
Untuk menampilkan output controller dapat berupa json maupun view blade.
View pada superframework mengadopsi kehebatan "blade" yang Ada pada Laravel. Maka bagi Anda pengguna Laravel pasti sudah terbiasa menggunakan blade ini. Anda dapat membaca dokumentasi lebih banyak pada tautan ini Blade
Validation
Anda dapat memvalidasi request user dengan class berikut ini
Validator::make($requestData, $rules);
Atau lebih lengkap :
// Pastikan Anda menambahkan baris ini pada bagian baris use class controller use SuperFrameworkEngine\App\UtilValidator\Validator; use SuperFrameworkEngine\Exceptions\ValidatorException; // Pada method Anda dapat memanggilnya sebagai berikut try { Validator::make(request(),[ 'title'=>'required' ]); // Code milik Anda selanjutnya } catch(ValidatorException $e) { redirect_back(['message'=>$e->getMessage(),'type'=>'warning']); }
Berikut rule yang dapat Anda gunakan:
required
, email
, url
, int
, unique:{table}
,exists:{table},{field}
Database ORM
Untuk membuat query pada superframework Anda dapat menggunakan DATABASE ORM bawaan ini.
Lebih detail cara kerja fungsi ini Anda bisa merujuk ke file vendor/fherryfherry/super-framework-engine/src/App/UtilORM/ORM.php
namun jangan mengubah file ini secara langsung karena perubahan Anda akan hilang jika Anda update.
Helper
Berikut ini helper yang tersedia pada superframework
Collection
Anda bisa menggunakan fungsi simple_collect
untuk mengolah suatu array menjadi collection sehingga memudahkan untuk memodifikasi, filtrasi dan lain-lain pada suatu array.
$data = simple_collect([1,2,3,4]) // Menghitung total array $result = $data->count(); // Mendapatkan array $result = $data->get(); // Menghitung summary by key $result = $data->sum($key = "key"); // Menghitung rata-rata by key $result = $data->avg($key = "key"); // Memberikan kondisi sama dengan dan mendapatkan 1 data $result = $data->whereEqual("key","value")->first(); // Memberikan kondisi tidak sama dengan dan mendapatkan 1 data $result = $data->whereNotEqual("key","value")->first(); // Memberikan kondisi in array dan mendapatkan data array $result = $data->whereIn("key",[1,2,3,4])->get(); // Memberikan kondisi not in array dan mendapatkan data array $result = $data->whereNotIn("key",[1,2,3,4])->get(); // Memberikan kondisi like $result = $data->whereLike("key","value")->get(); // Memberikan kondisi negtive like $result = $data->whereNotLike("key","value")->get(); // Memberikan kondisi lebih besar dari $result = $data->whereGreaterThan("key",5)->get(); // Memberikan kondisi lebih kecil dari $result = $data->whereLessThan("key",5)->get(); // Memberikan kondisi lebih besar dari sama dengan $result = $data->whereGreaterThanEq("key",5)->get(); // Memberikan kondisi lebih kecil dari sama dengan $result = $data->whereLessThanEq("key",5)->get();
Firebase Cloud Message (FCM)
Anda bisa menggunakan class berikut untuk mengirim FCM
// Tambahkan import ini diatas nama class use SuperFrameworkEngine\App\UtilFirebase\FCM; // ===== Detail Penggunaan Class ===== $msg = new FCM(); $msg->title("Judul Pesan"); $msg->message("Deskripsi pesan"); // Untuk menambahkan data lain $msg->data([ "data1"=>"value1" ]); // Kirim fcm $msg->send();
Model, Repository, Service
Ini adalah sebuah pattern development. Kami menganjurkan untuk selalu menggunakan pattern ini ketika Anda membuat query pada database.
Model
Berisi attribut-attribute sesuai dengan kolom yang ada pada tabel.
Repository
Anda dapat membuat seluruh query pada aplikasi Anda menggunakan repository ini.
Service
Anda dapat membuat query yang memiliki logika khusus pada class service ini.
// Anda bisa menggunakan model class untuk query database // Dari Model $data = Users::query()->where("id=?",[$id])->find(); // Dari Repository $data = UsersRepository::query()->where("id=?",[$id])->find(); // Dari Service $data = UsersService::query()->where("id=?",[$id])->find();
Anda cukup menambahkan query()
pada chain yang pertama.
Cron Job / Scheduler
Fitur cron job / scheduler pada superframework menggunakan library Crunz/Schedule.
Anda dapat membuat sebuah file php baru di folder /tasks
dengan isian seperti berikut :
<?php use Crunz\Schedule; $schedule = new Schedule(); # Pada bagian ini Anda dapat menuliskan perintah command line $task = $schedule->run(PHP_BINARY. ' super {command}'); # Pada bagian ini Anda dapat memberikan timeline waktu kapan cron ini akan dijalankan # daily, hourly, everyThreeHours, dll $task->daily()->description("Run feed content"); return $schedule;
Lalu Anda harus menambahkan perintah ini pada sistem crontab
pada linux Anda.
* * * * * * cd /path/html/project/ && /var/bin/php super schedule:run
FAQ
Install projek pada web server Nginx, ke sub folder, hasilnya 404 Not Found
Biasanya kita harus menulis syntax rewrite khusus pada virtual host nginx. Tidak semua syntax yang Anda dapatkan akan langsung bekerja, biasanya muncul 404 Not Found. Cobalah solusi dari stackoverflow ini : https://stackoverflow.com/a/61013994/934326
Useful Libraries
Berikut ini adalah library tambahan yang sangat berguna untuk menunjang pengembangan aplikasi Anda. Anda dapat menggabungkannya dengan superframework.
- CRUD Generator - a crud generator for superframework https://github.com/fherryfherry/crud-generator
- Simple HTML DOM Wrapper - PHP Dom https://github.com/Wikia/simplehtmldom
- PHPMailer - Email sender https://github.com/PHPMailer/PHPMailer
- Imagine - Image manipulation
https://imagine.readthedocs.io/en/latest/index.html - Snappy - PDF Generation https://github.com/KnpLabs/snappy
- PHPSpreadsheet - Spreadsheet XLS Generation https://phpspreadsheet.readthedocs.io/en/latest/
- Spout - XLS fast read and write https://opensource.box.com/spout/getting-started/
- DOMPDF - PDF Generation https://github.com/dompdf/dompdf
Support & Donation
Hi thanks for using my open source project, you could support me via : https://saweria.co/ferryariawan or via https://buymeacoffee.com/ferryariawan
Contact
Laporan keamanan / celah / security dapat Anda kirimkan ke ferdevelop15@gmail.com