diff --git a/Core/Request.php b/Core/Request.php index 7959aed..ed99b73 100755 --- a/Core/Request.php +++ b/Core/Request.php @@ -141,7 +141,7 @@ } public function getAttribute($name) { - return Request::staticInput($name); + return $this->input($name); } }; define("request", new Request(), false); \ No newline at end of file diff --git a/Core/Route.php b/Core/Route.php index cc81c83..d864233 100755 --- a/Core/Route.php +++ b/Core/Route.php @@ -3,7 +3,7 @@ include_once "Request.php"; include_once "Helpers.php"; - function magicRoute($path) + function magicRoute($path,$regexs = []) { $regex = []; $names = []; @@ -21,12 +21,17 @@ }else{ $magic = true; $symbol = tstring::from($matched[2]); + $regexng = "[^\/^?]+?"; + if(isset($regexs[$symbol->raw()])) + { + $regexng = $regexs[$symbol->raw()]; + } if($symbol->endsWith("?")) { $symbol = $symbol->slice(0,-1); - $pattern = "([^\/^?]+?)?"; + $pattern = "(".$regexng.")?"; }else{ - $pattern = "([^\/^?]+?)"; + $pattern = "(".$regexng.")"; } $regex[] = "\/". $matched[1] . $pattern . $matched[3]; $names[] = $symbol; @@ -40,12 +45,7 @@ }; function validateMagicRoute($mroute, $path) { - if(is_string($mroute)) - { - list($regex, $names) = magicRoute($mroute); - }else{ - list($regex, $names) = $mroute; - } + list($regex, $names) = $mroute; $matches = tstring::from($path)->match($regex); if($matches !== false) { @@ -72,9 +72,9 @@ public static $errors = []; public static $publics = []; public static $current = null; - public static function post($path, $callback) + public static function post($path, $callback, $regexs = []) { - $magic = magicRoute($path); + $magic = magicRoute($path, $regexs); $textPath = false; $type = "text"; if($magic[2] == true) @@ -101,9 +101,9 @@ } Route::$errors[$code][$method] = $callback; } - public static function get($path, $callback) + public static function get($path, $callback, $regexs = []) { - $magic = magicRoute($path); + $magic = magicRoute($path, $regexs); $textPath = false; $type = "text"; if($magic[2] == true) @@ -115,7 +115,7 @@ } $route = Route::from([ "type" => $type, - "path" => $path, + "path" => $textPath, "callback" => $callback, "method" => "get" ]); @@ -131,9 +131,9 @@ "method" => "get" ]); } - public static function any($path, $callback) + public static function any($path, $callback, $regexs = []) { - $magic = magicRoute($path); + $magic = magicRoute($path,$regexs); $textPath = false; $type = "text"; if($magic[2] == true) @@ -210,7 +210,7 @@ } public string $type; - public string $path; + public $path; public string $src; public $callback; public string $method; @@ -233,7 +233,7 @@ case 'magic': case 'text': $callback = $this->callback; - $callback(...$args); + $callback(new Request(),...$args); break; case 'public': $callback = $this->callback; @@ -262,6 +262,7 @@ break; } case "magic":{ + $t = validateMagicRoute($this->path,$url); if($t === false) { return false; diff --git a/README.md b/README.md index 787642f..bfad5f9 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,281 @@ -# microargist +# microargist framework -microargist \ No newline at end of file +## Rotaları belirlemek (Route) + + +```php + +// '/' rotasına girildiğinde "hi" mesajı gösterir +Route::get("/", function($request){ + Response::text("hi"); +}); + +// '/' rotasına post gönderildiğinde "hi" mesajı gösterir +Route::post("/", function($request){ + Response::text("hi"); +}); + +// girilen sayfada "get" metoduna ait bir rota bulunmaz ise Page not found yazısı gösterir +Route::error("get",404, function(){ + Response::text("Page not found"); +}); + +// girilen sayfada "post" metoduna ait bir rota hata verirse Server eror yazısını gösteri +Route::error("post",500, function(){ + Response::text("Server error !"); +}); + +// Her hangi bir method ile any-request rotasına ulaşılırsa hi mesajı gösterir +Route::any("/any-request", function($request){ + Response::text("hi"); +}); + + +/** + * /content/ + * Rotasından sonra gelen tüm dosya istekleri için public klasöründe dosyayı gönderir + * /content/image.jpg dosyası istendiğnide (varsa) /public/image.jpg dosyasını verecektir + **/ +Route::public("/content/",__DIR__."/public"); + + +/** + * İsteği işler ve kaydedilen rotalardan birini seçer ve çalıştırır + * + * */ +Route::Execute(); + +``` + +## İstekleri işlemek (Request) + +```php +/** + * isteğin hangi method ile geldiğini söyler + * get, post, head gibi + **/ +Request::method(); //--> get + + +/** + * URL içerisinde gelen verileri almak için get metodu kullanılır + **/ +Request::get("redir"); //--> /login + +/** + * post veri içerisindeki veriyi almak için post metodu kullanılır + **/ +Request::post("username"); //--> john + +/** + * get veya post veri içerisindeki veriyi almak için input metodu kullanılır + **/ +Request::input("username"); //--> john + +/** + * İsteklerin http başlık değerlerini almak için headers() metodu kullanılabilir + * Bu nginx, apache vs. sağlanılan tüm http başlıklarını verir + * */ +Request::headers(); + +/** + * Request üzerinden oturum işlemleri yapılması gereken durumlarda session() methodu çağrılabilir bkz. Oturum işlemleri + * */ +Request::session(); + +/** + * Request üzerinden çerez işlemleri yapılması gereken durumlarda cookie() methodu çağrılabilir bkz. Çerez işlemleri + * */ +Request::cookie(); + + + +/** + * Ayrıca get veya post verilerine $request içerisinden direkt ulaşılabilir + * */ +$request = new Request(); + +$request->no_data // null +$request->username // john +$request->password // Password + +// Gönderilen verinin içerik tipini almak için contentType kullanılabilir +$request->contentType(); + +``` + +## İsteklere cevap vermek (Response) + +```php +/** + * Dosya gönderme + **/ +Response::File(__DIR__."/storage/input.xlsx"); + +/** + * Dosya gönderme (mimetype ile) + **/ +Response::File(__DIR__."/storage/image.jpg","image/jpg"); + +/** + * Dosya indirmeye zorlama + **/ +Response::Download(__DIR__."/storage/image.jpg"); + +/** + * Yazı iletme + **/ +Response::Text("Hello !"); + +/** + * JSON veri iletme + **/ +Response::Json([ + "status" => "success", + "data" => [] +]); + +/** + * html formatında veri iletme + **/ +Response::html(" +
Türkiye, tarihi ve kültürel zenginlikleriyle dünyanın en özel ülkelerinden biridir. Akdeniz, Ege, Marmara ve Karadeniz'e kıyısı olan ülkemiz, doğal güzellikleri, tarihi yapıları, zengin mutfağı, misafirperver insanları ve daha birçok özelliğiyle turistlerin ilgisini çekiyor.
-Türkiye, tarihi kalıntıları ve antik kentleriyle de dikkat çekiyor. Özellikle Anadolu topraklarında yer alan Efes Antik Kenti, Perge Antik Kenti, Aspendos Antik Tiyatrosu, Hierapolis Antik Kenti, Side Antik Kenti, Göbeklitepe gibi yerler tarihe yolculuk yapmak isteyenler için harika bir seçenek. Ayrıca İstanbul, Osmanlı İmparatorluğu'nun kalbinde yer alan tarihi yapıları, Boğaz turu ve büyüleyici manzarasıyla da her yıl binlerce turisti ağırlıyor.
-Türk mutfağı da dünya çapında ünlüdür. Her bölgenin kendine özgü yemekleri, tatlıları ve içecekleri vardır. Özellikle kebab, döner, baklava, Türk kahvesi ve çayı tüm dünyada bilinir ve sevilir.
-Türk insanları da misafirperverliği ile ünlüdür. Türkiye'de gezerken, herhangi bir konuda yardım almak isterseniz, Türk insanlarının size yardım etmek için ellerinden geleni yapacaklarına emin olabilirsiniz. Türk kültürü, insan ilişkilerinde samimiyet ve güvene dayanır.
-Türkiye'nin zengin tarihi, kültürel, doğal ve gastronomik özellikleri turistlerin dikkatini çekiyor. Türkiye'yi ziyaret ederek, dünya mirasına sahip antik kentleri keşfedebilir, farklı tatları deneyebilir ve misafirperver Türk insanlarıyla tanışabilirsiniz.
-- Kırmızı mercimek, ince bulgur, domates, biber ve baharatların bir araya gelmesiyle yapılan bu çorba, Türkiye'nin en popüler çorbalarından biridir. -
-- Tarhana çorbası, kurutulmuş sebzeler, yoğurt, un ve baharatların karışımıyla yapılan bir çorbadır. Anadolu'nun hemen hemen her bölgesinde yapılmaktadır. -
-- Kuzu işkembesinden yapılan bu çorba, Türkiye'de oldukça popülerdir ve özellikle sabahları kahvaltı yerine içilir. -
-- Türkiye'nin en ünlü yemeklerinden biri olan kebap, etin şişe dizilmesi ve köz ateşinde pişirilmesiyle yapılır. Adana, Urfa, İskender ve Tantuni kebapları en popüler olanlarıdır. -
-- Patlıcan, soğan, sarımsak ve domatesin bir araya gelmesiyle yapılan bu yemek, genellikle zeytinyağıyla pişirilir. -
-- Dana eti ve patlıcan püresinin birleşimiyle yapılan bu yemek, Osmanlı mutfağından günümüze kalmış bir lezzettir. -
-@endsection \ No newline at end of file