From a2264c982ee999dbeab2daabdad5729d39a4615b Mon Sep 17 00:00:00 2001 From: Abdussamed Date: Sun, 30 Apr 2023 16:07:14 +0300 Subject: [PATCH] Changes --- Core/Request.php | 2 +- Core/Route.php | 37 +-- README.md | 282 +++++++++++++++++- Server/Home.php | 8 - ...c97192c2cfed90e18fe99b6efe0e0b45e84.bladec | 17 -- views/.gitignore | 0 views/layout.blade.php | 83 ------ views/topics/home.blade.php | 70 ----- 8 files changed, 300 insertions(+), 199 deletions(-) delete mode 100644 Server/Home.php delete mode 100644 cache/hello_f42c5c97192c2cfed90e18fe99b6efe0e0b45e84.bladec delete mode 100755 views/.gitignore delete mode 100755 views/layout.blade.php delete mode 100644 views/topics/home.blade.php 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(" +

Page title

+"); + +/** + * Response code belirleme + **/ +Response::Code(404); +Response::html(" +

Page not found

+"); + +/** + * Blade işleyip html veri göndermek için + **/ +Response::view("auth.register"); +Response::view("auth.login",[ + "status" => "Success !" +]); + +/** + * Send işlevi verilen verinin türüne göre json veya text göndermenin kısayolunu sağlar + **/ +Response::send("Merhaba !"); // text +Response::send(["data" => []]); // json + +/** + * Kullanıcıyı farklı bir sayfaya yönlendirmek için Redirect kullanılabilir + **/ +Response::Redirect("/"); +Response::Redirect("/", 304); + + +``` + +## http başlıklarını işleme (RequestHeader) + +```php +/** + * HTTP başlık verilerini alma + **/ +Request::$header->get("accept"); // --> image/jpg,*/* +Request::$header->accept; // --> image/jpg,*/* +// veya aynı şekilde +$requestHeader = new RequestHeader(); +$requestHeader->get("accept"); +$requestHeader->accept; + + +/** + * Request HTTP başlık verilerini ayarlama + **/ +Request::$header->set("content-type","text/plain; charset=utf8"); +Request::$header->{"content-type"} = "text/plain; charset=utf8"; +// veya aynı şekilde +$requestHeader = new RequestHeader(); +$requestHeader->set("content-type","text/plain; charset=utf8"); +$requestHeader->{"content-type"} = "text/plain; charset=utf8"; + +``` + +## Çerezleri işleme (RequestCookie) + +```php +//Cookie ayarlama ve değiştirme +Request::$cookie->setAttribute("lang","tr"); +Request::$cookie->lang = "tr"; + +//Cookie değerini ayarlama +$lang = Request::$cookie->getAttribute("lang"); +$lang = Request::$cookie->lang; + +//Cookie değerini ayarlama +Request::$cookie->removeAttribute("lang"); +unset(Request::$cookie->lang); + +//veya şe şekilde de kullanılabilir + +$cookie = new RequestCookie(); +$cookie->lang = "tr"; +``` + +## Upload edilen dosyaları işleme (RequestFile) + +```php +/** + * Upload edilen dosyayı kontrol etme + */ +Request::$file->hasFile("avatar"); // 1,2,3 or false +/** + * Kaç tane dosya olduğunu sorgulama + */ +Request::$file->count("avatar"); // 2 +/** + * Dosyaları alma + */ +Request::$file->getFile("avatar"); // ["name","path","mime","error","size",...] + +/** + * Dosyaları diske kaydetme + */ +Request::$file->save("avatar",__DIR__."/uploads/"); +Request::$file->save("avatar",__DIR__."/uploads/", "hashfilename.jpg", 1); // avatar ismiyle gelen 2. dosyayı kaydet +Request::$file->getFile("avatar")[0]->save("avatar",__DIR__."/uploads/") + +/** + * Tüm dosyaları diske kaydetme + * + * Aşağıdaki saveAll metodu avatar ismiyle gelen maximum 4 dosyayı uploads içerisine kaydeder + **/ +Request::$file->saveAll("avatar",__DIR__."/uploads/", null, 4); + +``` + +## Oturum kayıtları (Session) + +```php +// Oturum için tutulacak dosuyaların diskteki yerini belirleme +// init işlevinden önce kullanılmalıdır +Session::path("./session"); +// Oturum işlemleri için oturum başlatma +Session::init(); + +// Oturum verisini ayarlama +Session::set("loginned", true); +// Oturum verisini alma +Session::get("loginned"); // --> true +// Oturum verisini silme +Session::delete("loginned"); +// Oturum verisini sorgulama +Session::has("loginned"); // false +// Oturum verisine sonuna ekleme yapmak (liste değişkenine) +Session::add("store_list",["desk","cap"]); +// Oturumda liste olarak tutulan veriden son veriyi almak +Session::pop("store_list"); // --> "cap" +// Oturum verisine başına ekleme yapmak (liste değişkenine) +Session::unshift("store_list","mouse"); +// Oturum verisine başınden veri çıkarmak (liste değişkenine) +Session::shift("store_list"); // --> "desk" + +``` \ No newline at end of file diff --git a/Server/Home.php b/Server/Home.php deleted file mode 100644 index 245c24b..0000000 --- a/Server/Home.php +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - <?php echo \htmlentities($title??'', ENT_QUOTES, 'UTF-8', false); ?> - - - - - - - - - \ No newline at end of file diff --git a/views/.gitignore b/views/.gitignore deleted file mode 100755 index e69de29..0000000 diff --git a/views/layout.blade.php b/views/layout.blade.php deleted file mode 100755 index 24aa9a8..0000000 --- a/views/layout.blade.php +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - Abdussamed ULUTAŞ | @yield('title') - - - - - - - @stack('header') - - - -
-
- -
-

@yield('subject')

-
- -
- -
- - - @stack('footer') - - \ No newline at end of file diff --git a/views/topics/home.blade.php b/views/topics/home.blade.php deleted file mode 100644 index 1777b73..0000000 --- a/views/topics/home.blade.php +++ /dev/null @@ -1,70 +0,0 @@ -@extends('layout') - -@section('title', 'Özgeçmiş') - -@section('subject', 'Türkiye ve Meşhur Yemekleri') - -@push('sidebar') - - Türkiye hakkında - - - Türkiye mutfağı - - - Sonuç - - - Ezogelin Çorbası - - - Tarhana Çorbası - - - İşkembe Çorbası - - - Kebap - - - İmam Bayıldı - - - Hünkar Beğendi - -@endpush - -@section('content') -
Türkiye hakkında
-

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ürkiye mutfağı
-

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.

-
Sonuç
-

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.

-
Ezogelin Çorbası
-

- 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ı
-

- 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. -

-
İşkembe Çorbası
-

- Kuzu işkembesinden yapılan bu çorba, Türkiye'de oldukça popülerdir ve özellikle sabahları kahvaltı yerine içilir. -

-
Kebap
-

- 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. -

-
İmam Bayıldı
-

- Patlıcan, soğan, sarımsak ve domatesin bir araya gelmesiyle yapılan bu yemek, genellikle zeytinyağıyla pişirilir. -

-
Hünkar Beğendi
-

- 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