Stable Version 6.1
Pertama kali saya ucapkan terima kasih kepada Tuhan YME, karena saya dapat menyelesaikan Garuda Framework Pro Edition PHP ini. Awal tujuan membuat framework ini adalah untuk kebutuhan pribadi saya agar dapat mempermudah saya dalam mengerjakan project website.
Framework ini hampir mendekati sempurna, dan sudah dapat membantu 60% pengerjaan sebuah app website. Framework ini membutuhkan sedikit pengetahuan tentang OOP agar dapat digunakan dengan maksimal Contoh website yang sudah saya buat dengan menggunakan GF Pro ini yaitu Room Chat dan Generator Short URL
Garuda Framework Professional untuk saat ini sudah mendukung 3 database :
1. MySql (Hanya dapat terhubung 1 database mysql )
2. Sqlite ( Dapat terhubung lebih dari 1 database Sqlite )
3. PostgreSql ( Dapat terhubung lebih dari 1 database PostgreSql )
Berikut adalah spesifikasi sistem yang diperlukan :
Catatan : "Jika anda masih menggunakan versi PHP lama atau < 7.0 ,
Maka segera UPDATE terlebih dahulu versi PHP anda dengan versi yang terbaru pada saat ini, jika tidak maka kemungkinan framework ini tidak berjalan atau ERROR"
Konfigurasi informasi database server dapat dilihat
pada file "app/config.php" array => $config_database , atau lihat cara mengubah informasi database server
di sini
1. Konfigurasi Bagian Pertama Terletak Pada File 'system/GF_Production.php'
return $app_production = array( 'maintenance' => false, 'file_maintenance' => 'maintenance', 'notice_error' => true, 'time_zone' => 'Asia/Jakarta', 'uri_parameter' => 'p', 'start_benchmark' => true);
RewriteEngine On #RewriteCond %{HTTPS} !on #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # ganti dibagian ini RewriteRule ^(.+)$ index.php?p=$1 [QSA,L]
2. Konfigurasi Bagian Kedua Terletak Pada File 'app/config/config.php'
Jika anda ingin menggunakan PDO , DNS database yang tersedia di framework ini hanya tersedia untuk MySql,
untuk DNS database microsoft access, sqlite, sql server, dan oracle , anda harus mencari sendiri. Dan di framework ini saya rekomendasikan menggunakan MySqli
$class_database = array('mysqli','pdo','sqlite','postgresql'); $database_use = array('mysql','sqlite','sqlserver','oracle');
$config_app = array( 'run_database' => true, 'multi_language' => true, 'class_database' => $class_database[0], 'database_use' => $database_use[0] );
$config_database = array( 'server_name' => 'localhost', 'user_name' => 'root', 'database_name' => 'db_gf', 'password' => '' );
d). Konfigurasi selanjutnya yaitu, jika mengaktifkan multi_languange, secara default maka bahasa yang terpilih adalah 'ind' pada bagian 'default_value_languange'
$language_name = array( 'ind', 'eng', ); $language_data = array( 'indonesia', 'english', ); $cookie_config = array( 'name_language_cookie' =>'app-language-GF', 'default_value_language' => $language_name[0]);
e). Konfigurasi selanjutnya yaitu , mengatur file LIBRARY yang akan digunakan , Secara default library yang tersedia yaitu PHP Mailer, PHPQrCode, Fpdf, dan Mobile Detect
$_library_app = array( 'phpmailer/PHPMailerAutoload', 'phpqrcode/qrlib', 'fpdf/fpdf', 'Mobile_Detect/Mobile_Detect', 'captcha/sys' );Untuk menambahkan library baru anda harus membuat folder didalam "app/library/nama_folder/", Kemudian tambahkan kedalam array diatas, "nama_folder/nama_file".
f). Konfigurasi selanjutnya yaitu , mengatur file HELPER yang akan digunakan , Secara default helper yang tersedia yaitu 'MyHelper', isi dari helper bisa digunakan untuk membuat function-function yang anda butuhkan dalam pembuatan website
$_helper_app = array('MyHelper');Isi array diatas adalah nama dari file helper pada "app/helper/nama_helper.php".
g). Konfigurasi selanjutnya yaitu , mengatur file ROUTER yang akan digunakan , Untuk file router yang tersedia hanya sebagai contoh
$_router_app = array( 'Router-Satu','Router-Dua','Router-Tiga' ,'Router-Empat','Router-Lima','Router-Enam' ,'Router-Tujuh','Router-Delapan','Router-Sembilan' ,'Router-Sepuluh' );Isi array diatas adalah nama dari file router pada "app/router/nama_router.php".
h). Konfigurasi selanjutnya yaitu , mengatur file Controller yang akan digunakan , Untuk file controller yang tersedia hanya sebagai contoh
$_controller_app = array('Controller-Satu');Isi array diatas adalah nama dari file controller pada "app/controller/nama_controller.php".
i). Konfigurasi selanjutnya yaitu , mengatur file Model yang akan digunakan , Untuk file Model yang tersedia hanya sebagai contoh
$_model_app = array('Model-Satu','Model-Dua',"Model-Tiga","Model-Empat","Model-Lima","Model-Enam");Isi array diatas adalah nama dari file model pada "app/model/nama_model.php".
// Name space untuk Router use System\GF_Router as GF;Pada awal Route selalu sertakan Route kosong , untuk mengatur halaman default dialihkan ke "...", sebagai contoh
GF::Route("","home");Maka ketika mengunjungi locahost/GF/ secara otomatis akan mengalihkan kehalaman "app/view/home.php" , atau
GF::Route("",function(){ echo "Hello World"; });
GF::Route("Home");Maka secara otomatis akan mengalihkan kehalaman "app/view/home.php"
GF::Route("Home","change-home");Maka secara otomatis akan mengalihkan kehalaman "app/view/change-home.php"
GF::Route("Home","user/home");Maka secara otomatis akan mengalihkan kehalaman "app/view/user/home.php"
GF::Route("Home",function(){ // logic here... GF::setView("home"); });Untuk membuat view di callback function dapat dilihat pada line 4 diatas.
GF::Route("Home",function(){ $result['username'] = "Garuda Framework"; $result['email'] = "Garuda@Framework.com"; GF::setView("home",$result); });Maka pada view home, array $result akan menjadi variabel $username, dan $email Atau mengekstrak 2 data array, sebagai contoh seperti berikut ini
GF::Route("Home",function(){ $result['username'] = "Garuda Framework"; $result['email'] = "Garuda@Framework.com"; $data['id_user'] = "12"; GF::setView("home",$result,$data); });Maka pada view home, array $result akan menjadi variabel $username, $email, dan $id_user
Untuk membuat pretty GET -> "localhost/GF/post/a/b/c/d" Gunakan tanda { } atau tanda # untuk mempercantik parameter. Jumlah maksimum parameter adalah 11 -> a / b / c / d / e / f / g / h / i / j / k , Contoh kode :
GF::Route("post/{ a }/{ b }/{ c }/{ d }",function($get){ $a = $get['a'] ?? false; $b = $get['b'] ?? false; $c = $get['c'] ?? false; $d = $get['d'] ?? false; // alihkan ke halaman view GF::setView("post",$get); });atau
GF::Route("post/# a #/# b #/# c #/# d #",function($get){ $a = $get['a'] ?? false; $b = $get['b'] ?? false; $c = $get['c'] ?? false; $d = $get['d'] ?? false; // alihkan ke halaman view GF::setView("post",$get); });
Parameter yang dibuat akan dikembalikan dalam bentuk array.
Jika anda ingin menggunakan GET PHP seperti biasanya http://localhost/GF/get-biasa&nama=contoh, bisa dengan seperti ini
GF::Route("get-biasa",function(){ $nama = $_GET['nama'] ?? false; echo $nama; });atau dengan POST PHP seperti biasanya
GF::Route("post-biasa",function(){ $nama = $_POST['nama'] ?? false; echo $nama; });
GF::RouteToOne("username",function($username){ echo $username; });
Untuk membuat model , buat terlebih dahulu sebuah Class lalu extends dengan elDB
class Contoh extends elDB { function __construct() { # code... } }
Untuk mendapatkan jumlah data gunakan method getCount(), sebagai contoh
public function countData(){ $this->setQuery("select id_user from t_user"); $result = $this->getCount(); return $result; }
Berikut ini adalah cara untuk mengelola data kedatabase menggunakan MySQLI
Untuk mengecheck id dari tabel gunakan method checkId(), method ini sama dengan "select nama_field from nama_tabel where nama_field=value_field", cocok digunakan untuk login kedalam sistem ,sebagai contoh (maximal 3 parameter)
public function getId(){ $result = $this->checkId("nama kolom","nama tabel","colom primary key" ,"value primary key" ); return $result ? true : false; }Sebagai contoh, query untuk dibawah ini adalah "select id_user from t_user where username='albert' and password='abcabc' limit 1", maka penulisannya cukup seperti ini :
public function getId(){ $result = $this->checkId("id_user","t_user","username","albert" ,"password","abcabc"); return $result ? true : false; }
Untuk mendapatkan seluruh data gunakan method getAllData(), sebagai contoh
private function $data = array(); public function getAll() { $this->setQuery("select id_user,username,email,pass from t_user order by id_user asc"); // return array return $this->getAllData(); }
Untuk insert data dapat menggunakan method insert(), sebagai contoh
public function insertData() { $result = $this->insert("nama_tabel","kolom 1","value kolom 1", "kolom 2","value kolom 2", "kolom 3","value kolom 3" ); return $result ? true : false; }
Untuk insert data batas 9 kolom dan 9 value
$result = $this->insert("nama_tabel","kolom 1","value kolom 1" ,"kolom 2","value kolom 2" ,"kolom 3","value kolom 3" ,"kolom 4","value kolom 4" ,"kolom 5","value kolom 5" ,"kolom 6","value kolom 6" ,"kolom 7","value kolom 7" ,"kolom 8","value kolom 8" ,"kolom 9","value kolom 9" );
Untuk update date dapat menggunakan method update(), sebagai contoh
public function updateData(){ $result_value = $this->checkId("kolom primary key","nama_tabel","where kolom","value kolom"); if (! $result_value){ return false && exit; } $result = $this->update("t_user","id_user",$this->id_user ,"username",$this->username ,"email" ,$this->email ,"pass" , $this->password); return $result ? true : false; }
Untuk update data batas 9 kolom dan 9 value
$result = $this->update("nama_tabel","kolom primary key","value primary key" ,"kolom 1 " , "value kolom 1 " ,"kolom 2 " , "value kolom 2 " ,"kolom 3 " , "value kolom 3 " ,"kolom 4 " , "value kolom 4 " ,"kolom 5 " , "value kolom 5 " ,"kolom 6 " , "value kolom 6 " ,"kolom 7 " , "value kolom 7 " ,"kolom 8 " , "value kolom 8 " ,"kolom 9 " , "value kolom 9 " );
Untuk hapus data dapat menggunakan method delete(), sebagai contoh
public function deleteData() { $result_value = $this->checkId("kolom primary key","nama tabel","where kolom primary key","value kolom primary keu"); if (! $result_value){ return false && exit; } $result = $this->delete("nama tabel","kolom primary key","value primary key"); return $result ? true : false; }
untuk method delete(), maksimal parameter yaitu 4, contoh
$result = $this->delete("nama tabel","kolom primary key 1","value primary key 1" ,"kolom unique key 2","value unique key 2", ,"kolom unique key 3","value unique key 3" ,"kolom unique key 4","value unique key 4"); return $result ? true : false;
Untuk menggunakan Query bebas, anda bisa gunakan method execute(), sebagai contoh
public function createData(){ $this->setQuery("insert into t_user("username","email") VALUES ('contoh','contoh@gmail.com')"); $result = $this->execute(); } public function updateData(){ $this->setQuery("update t_user set username='abc',email='abc' where id_user=12"); $result = $this->execute(); } public function deleteData(){ $this->setQuery("delete from t_user where id_user=12"); $result = $this->execute(); }
Berikut method-method yang diturunkan dari parent elDB
/* * Method Dari Parent elDB MySqli * * -> setQuery() < Wajib Periksa Petik Satu > * # getCount() = mengembalikan jumlah data * # getData() = mengembalikan data yang diinginkan * # getAllData() = mengembalikan seluruh data * * -> insert() = insert data < Tidak Perlu Periksa Petik Satu > * -> update() = update data < Tidak Perlu Periksa Petik Satu > * -> delete() = delete data < Tidak Perlu Periksa Petik Satu > * * -> checkId() = check data berdasarkan id primary key * * -> execute() = method query bebas , insert update dan delete */
Pada method getCount(),getData(), getAllData() dan execute(), harus memasukkan query terlebih dahulu dengan method setQuery(), dan periksa input user secara manual seperti petik satu ', #hastag,
Pada method insert(),update(), delete() dan checkId(), tidak membutuhkan method setQuery(), dan untuk petik satu ', sudah otomatis, anda hanya tinggal periksa string yang lain seperti #hastag,
Untuk memasukkan model kedalam Router, dapat menggunakan cara seperti ini
GF::Route("contoh-memasukkan-model",function(){ $obj = GF::Model("Model-Satu"); });
atau langsung membuat object baru
GF::Route("contoh-memasukkan-model",function(){ $obj = new Data_User(); });
Berikut ini adalah cara untuk mengelola data kedatabase menggunakan PDO
Pertama membuat class terlebih dahulu, extends elDB,lalu masukkan attribut
private $id_user; private $username; private $email; private $password;
Contoh menambahkan data
public function addData() { self::beginTransaction(); self::query('insert into t_user(username,email,pass) VALUES(:username, :email, :pass)'); self::bind(':username', $this->username); self::bind(':email', $this->email); self::bind(':pass', $this->password); $r = self::execute(); self::endTransaction(); return $r; }
Conth mengubah data
public function updateData() { self::query('update t_user set username=:username,email=:email,pass=:pass where id_user=:id_user'); self::bind(':id_user', $this->id_user ); self::bind(':username', $this->username ); self::bind(':email', $this->email ); self::bind(':pass', $this->password ); $r = self::execute(); return $r; }
Contoh menghapus data
public function deleteData() { self::query('delete from t_user where id_user=:id_user'); self::bind(':id_user', $this->id_user); $r= self::execute(); return $r; }
Contoh mendapatkan data single dari tabel
public function getDataUserSingle() { self::query("SELECT username FROM t_user WHERE username = :username limit 10"); self::bind(':username', $this->username); $row = self::single(); return $row; }
Contoh mendapatkan semua data dari tabel
public function getAllUser() { self::query('SELECT * FROM t_user limit 20'); $row = self::resultset(); return $row; }
Untuk mengalihkan route kedalam controller, sebagai contoh class User_Controller
class User_Controller { function __construct() { $this->login(); } public function login(){ echo "User Login"; } }Dan untuk memanggil class User_Controller diatas didalam route contoh "localhost/GF/example"
GF::Route("example",function(){ $user = new User_Controller(); });atau seperti berikut
GF::RouteToController("example","User_Controller");maka kedua kode ditas akan memanggil constructor secara otomatis, atau bisa juga seperti ini
GF::RouteToController("example","User_Controller","login");akan memanggil function login didalam class User_Controller Atau menggunakan callback function
GF::RouteToController("example","User_Controller",function($obj){ $obj->login(); });Untuk memanggil view didalam controller, pertama harus mendeklarasikan namespace 'use System\GF_Router as GF', contoh
use System\GF_Router as GF; class User_Controller { function __construct() { $this->login(); GF::setView("login"); } public function login(){ echo "User Login"; } }Maka pada saat Controller dipanggil akan memanggil function login dan mengalihkan kehalaman view "login";
Contoh Salah -> GF::RouteToController("example/{ a } / { b }"), Method Controller tidak dapat dimasukkan parameter seperti Route
Untuk membuat view pada lokasi "app/view/contoh.php" GF akan otomatis mencari ekstensi .php dan .html, jika .php tidak ditemukan maka akan mencari .html
GF::setView("contoh");atau file diletakkan didalam folder, sehingga
GF::setView("folder_user/contoh");dan untuk mengekstrak variabel dari array gunakan kode seperti berikut
$data_array['username'] = "abcdef"; $data_array['email'] = "abcdef@gmail.com"; GF::setView("contoh",$data_array);atau mengekstrak variabel dari 2 array gunakan kode seperti berikut
$data_array['username'] = "abcdef"; $data_array['email'] = "abcdef@gmail.com"; $result['login'] = true; GF::setView("contoh",$data_array,$result);Untuk menambahkan halaman statis file bisa menggunakan kode seperti berikut
GF::setHead("template/head"); GF::setView("contoh-satu");Maka penjelasan kode diatas, akan memasukkan file di "app/view/template/head.php" sebelum memasukkan file "app/view/contoh-satu.php". Lihat contoh di Router Empat
Namespace yang digunakan untuk framework ini adalah :
// Name space untuk Router use System\GF_Router as GF; // Name space untuk File use System\GF_File as File; // Name space untuk single/multiple upload file/gambar use System\GF_Upload as Upload; // Name space untuk request POST form input, lihat contoh di router-empat use System\GF_Post as Req; // Name space untuk Json use GF_Text\JSON_Generator as Json; // Name space untuk Captcha Generator Sederhana use GF_Text\Captcha_Generator_Simple as Captcha; // Name space untuk Captcha Generator Penjumlahan use GF_Text\Captcha_Generator_Sum as Captcha_Two; // Name space untuk XML (Membaca file xml) use GF_Text\GF_Xml as XML; // Name space untuk encrypt decrypt Key Hash Iv use System\GF_Encrypt_Decrypt as Crypto;Bila anda belum paham apa itu namespace, lihat di sini
1. Server Side (PHP)
2. Client Side (CSS)
3. Client Side (Library Javascript)
3. Tambahan
use System\GF_Encrypt_Decrypt as Crypto; GF::Route("crypthograpy-php",function(){ /** * Hanya contoh jika ingin mengencrypt * String dengan menggunakan Key dan Hash */ $obj = new Crypto; // Memasukkan secret key $obj->setKey('My_Secret_Key_ABCD'); // Menentukan jenis Hash yang akan digunakan // Jika ingin melihat semuah jenis Hash gunakan method ini // $obj->getAllHash(); $obj->setHasType('tiger160,4'); // Memasukkan string yang akan diencrypt $obj->setValue("Garuda Framework Professional Edition..."); $result = $obj->encrypt(); echo "Hasil Encrypt : ".$result."
"; // ============================================ $new_obj = new Crypto; // Memasukkan secret key $new_obj->setKey("My_Secret_Key_ABCD"); // Menentukan jenis Hash yang akan digunakan // Jika ingin melihat semuah jenis Hash gunakan method ini // $obj->getAllHash(); $obj->setHasType('tiger160,4'); // Memasukkan string yang akan didecrypt $obj->setValue($result); $result = $obj->decrypt(); echo "Hasil Decrypt : ".$result."
"; echo "Key : My_Secret_Key_ABCD
"; echo "Hash : tiger160,4
"; echo "Semua jenis HASH : "; echo json_encode($obj->getAllHash()); });
use System\GF_Upload as Upload; /** * Contoh melakukan upload multiple * localhost/GF/process-multiple-upload */ GF::Route("process-multiple-upload",function(){ if (isset($_FILES) && isset($_POST['submit'])) { /** * Function untuk mengaktifkan multi upload */ Upload::setMultipleUpload(); /** * Apabila file yang akan diupload adalah gambar, maka aktifkan function ini * Upload::setImageOnly(); */ /** * Apabila file yang akan diupload adalah gambar, dan ingin dicompress, gunakan function ini * Upload::setCompressImage(50); */ /** * Untuk menentukan direktori tempat upload file (direktori akan otomatis dibuat jika ditemukan) * app/storage/multiple */ Upload::setPath('multiple'); /** * Memasukkan nama-nama file yang akan diupload (jumlahnya harus sama dengan nama-nama dari form), jika ingin menggunakan nama * file yang asli maka hapus function ini * @var array */ $filename = array( _randomStr(5), _randomStr(5), _randomStr(5), _randomStr(5), _randomStr(5), _randomStr(5), _randomStr(5) ); Upload::setFileName($filename); /** * Memasukkan nama-nama dari form upload yang akan diupload * @var array */ $data = array("file_1","file_2","file_3","file_4","file_5","file_6","file_7"); Upload::setFileUpload($data); /** * Memasukkan maximum file upload * 1.3 MB */ Upload::setMaxSize(1300000); /** * Melakukan upload * return array */ $result = Upload::do(); echo json_encode($result); }else{ echo "404"; } });
<-?phpp use System\GF_Router as GF; // Gunakan method enabledApi() ini, untuk mengaktifkan mode API, // Agar URL kita bisa diakses oleh publik GF::enabledApi(); GF::Route("API_USER",function(){ echo "Route ini akan menjadi public, dapat diakses oleh publik"; }); // Sedangkan untuk mengembalikan seperti semula dalam artian menjadi private, // Gunakan method ini disabledApi() GF::disabledApi(); GF::Route("profile",function(){ echo "Route ini akan menjadi private, tidak dapat diakses oleh publik"; });
Maka dengan begitu pada saat mengakses "www.example.com/API_USER", maka dapat diakses oleh publik, karena header sudah di setting menjadi " Access Control Allow Origin: * ", sedangkan pada saat mengakses "www.example.com/profile", maka hanya dapat diakses oleh domain itu saja karena sudah diatur headernya menjadi " Access Control Allow Origin: www.example.com/profile " dan " Access-Control-Allow-Credentials: true ".
Untuk custom string anda bisa gunakan method dibawah ini (lihat contoh di Router-Delapan), fungsi dari custom string ini yaitu untuk membuat filter pada string yang diterima, misal jika ingin menangkap input dari user hanya number atau angka maka gunakan _setNumber(), atau jika hanya ingin alfabet saja dari A sampai Z gunakan _setAlfabet()
$name = _setAlfabet($get['name']) ?? false; $email = _setCustomString($get['email'],"a-zA-Z0-9@.") ?? false; $phone = _setNumber($get['phone']) ?? false;
// Membuat Object $me = new Template_HTML; // Membuat Judul HTML $me->setTitle("Home"); /* * Memasukkan Informasi Meta image,author,title,description,name,copyright */ $meta_html['image'] = 'example.png'; $meta_html['author'] = 'Lamhot Simamora'; $meta_html['title'] = 'Home'; $meta_html['description'] = 'Garuda Framework Pro'; $meta_html['name'] = 'Garuda Framework Pro'; $meta_html['copyright'] = 'Copyright@2017 All Right Reserved'; // Menyimpan Meta $me->setMeta($meta_html); // Memasukkan CSS jika ada $me->setCSS(""); // Mengeluarkan hasil / output $me->render(); // dan terakhir penutup HTMl _closeBody();
$GF_PATH = array( 'GF_DIR_NAME' => substr(dirname($_SERVER['PHP_SELF']) ,strrpos(dirname($_SERVER['PHP_SELF']),'/') + 1), /* * Nama File */ 'GF_System' => 'GF_System', 'GF_Text' => 'GF_Text', 'GF_Production' => 'GF_Production', 'GF_Helper' => 'GF_Helper', 'GF_Image_Error' => 'GF-error', 'GF_Anonymous' => 'GF_Anonymous', 'GF_Html' => 'GF_HTML', 'GF_Index' => 'index', 'GF_Interface' => 'GF_Interface', 'GF_404' => '404', 'GF_Query' => 'GF_Query', 'GF_CMD' => 'GF_Command_Prompt', /* * Nama Direktori */ 'GF_Config_DIR' => 'config/', 'GF_System_DIR' => 'system/', 'GF_Storage_DIR' => 'storage/', 'GF_APP_DIR' => 'app/', 'GF_Router_DIR' => 'router/', 'GF_Controlelr_DIR' => 'controller/', 'GF_Helper_DIR' => 'helper/', 'GF_Library_DIR' => 'library/', 'GF_Model_DIR' => 'model/', 'GF_DB_DIR' => 'database/', 'GF_Config_DIR' => 'config/', 'GF_Language_DIR' => 'language/', 'GF_View_DIR' => 'view/', 'GF_External_DIR' => 'external/', 'GF_Error_View' => 'error/', 'GF_Image_Base64' => 'image-base-64/' );
GF::errorPage();
defined('sys_run_app') OR exit('403 You dont have permission to access / on this server...');
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?p=$1 [QSA,L]
private static $danger_file = array('.html','.php','.js','.exe','.php5','.php7','.htaccess');Untuk upload semua jenis file, anda bisa memasukkan jenis file apa yang tidak dapat diupload, dengan cara seperti berikut (Lihat contoh di Router-Dua)
$file_format = array(".exe",".js",".txt"); Upload::setDangerFile($file_format);Dan hal yang sama jika ingin upload untuk gambar, masukkan array kedalam method. (lihat contoh di Router-Lima)
$image_format = array(".png",".jpg",".gif"); Upload::setImageOnly($image_format);
use System\GF_Router as GF; /** * Membuat session baru * @paramater {[key]}{[value]} * return boolean */ GF::newSession("key","value"); /** * Mengecheck session apakah ada atau tidak * @paramater {[key]} * return boolean */ GF::checkSession("key"); /** * Mendapatkan semua session yang ada * return array */ GF::getAllSession(); /** * Mendapatkan session * @paramater {[key]} * return value */ GF::getSession("key"); /** * Menghapus session * @paramater {[key]} * return boolean */ GF::destroySession("key");
use System\GF_Router as GF; /** * Membuat cookie baru, anda bisa mengatur waktu cookie pada bagian parameter limit_time, contoh untuk membuat cookie dalam 2 hari * @paramater {[key]}{[value]}{[limit_time]} * return boolean */ GF::newCookie("key","value",2); /** * Jika parameter limit_time di kosongkan, maka default adalah 1 hari */ GF::newCookie("key","value"); /** * Mendapatkan semua cookie yang ada pada aplikasi anda, Bukan pada komputer client * return boolean */ GF::getAllCookie(); /** * Mendapatkan cookie * @paramater {[key]} * return boolean */ GF::getCookie("key"); /** * Menghapus cookie * @paramater {[key]} * return boolean */ GF::destroyCookie("key");
*new Contoh menggunakan database SQLite, menampilkan data dari tabel "t_user"
// Memasukkan path / lokasi database $path = __EXTERNAL_DIR__."my_db.db"; // Membuat objek baru $db = new GF_SQLite($path); // Memasukkan query untuk menampilkan data $db->setQuery("select * from t_user"); // Memanggil function getAllData $r = $db->getAllData(); // Mengeluarkan hasil dalam bentuk JSON echo json_encode($r); $db->close();
Contoh menggunakan database SQLite, memasukkan data ke tabel "t_user"
// Memasukkan path / lokasi database $path = __EXTERNAL_DIR__."my_db.db"; // Membuat objek baru $db = new GF_SQLite($path); $username = _randomStr(9); $email = _randomStr(4)."@"._randomStr(3).".com"; $r = $db->insert("t_user","username",$username ,"email",$email); var_dump($r); $db->close();
Contoh menggunakan database SQLite, membuat tabel baru "t_company"
$path = __EXTERNAL_DIR__."my_db.db"; $o = new GF_SQLite($path); $r = $o->execute("CREATE TABLE t_company (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, ADDRESS CHAR(50))"); var_dump($r); $o->close();Selengkapnya lihat contoh di Router-Satu
Contoh parse XML dari sebuah file
// Name space untuk XML use GF_Text\GF_Xml as XML; $file = __EXTERNAL_DIR__."example.xml"; /** * Membuat object baru * @var XML */ $o = new XML(); /** * Memasukkan file XML, atau bisa juga dari URL */ $o->setXml($file); /** * Parse XML */ $o->parseXml(); // $o->getPath(); // $o->getContent(); // $o->getXml(); /** * Mengambil hasil parse XML, dalam bentuk JSON */ echo $o->getJson();Selengkapnya lihat contoh di Router-Satu dan Model Enam
Contoh menggunakan database PostgreSql menampilkan data dari tabel "t_user"
function __construct() { $this->obj = new GF_PostgreSql; $this->obj->setConnection($this->server_info); $this->obj->connect(); } public function getAllDataUser() { $this->obj->setQuery("select * from t_user"); $this->obj->execute(); return $this->obj->getAllData(); }Selengkapnya lihat contoh di Router-Tiga dan Model-Lima
Kekurangan Garuda Framework Pro :
- Belum tersedia konfigurasi penggunaan Facebook Graph & Twitter Card
- Belum tersedia sistem cache
- Error handling masih sederhana
- Support PDO tapi hanya MySql database
- Belum tersedia Migration