国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

簡單快速的開發(fā)WEB應用, PHP 框架 Lemon 介紹

lushan / 1981人閱讀

摘要:你可能已經(jīng)注意到了回調函數(shù)中的和,這兩個參數(shù),這兩個參數(shù)是和類的實例,是回調函數(shù)的必須參數(shù)。這兩個參數(shù)很有用,之后會介紹。上面典型的路由匹配的是一個,匹配多個值的時候,回調函數(shù)中的參數(shù)位置對應匹配的值,參數(shù)名自定。

喜歡(? ω ?) laravel 但是它太笨重了
想快速簡潔的開發(fā)小項目,試一試Lemon 吧

Lemon 是一個現(xiàn)代的 PHP 框架,采用 composer 管理組件依賴。

如何使用 Lemon 安裝

前面已經(jīng)說過 Lemon 采用 composer 加載。

第一步,使用 composer 安裝
mkdir lemon

cd lemon

composer require chanywn/lemon
第二步,新建 index.php 文件
require "vendor/autoload.php";

use LemonRoute;

Route::get("/", function($request, $response){
    return $response->write("Hello lemon");
});

Route::run();
第三步,執(zhí)行內置服務器
php -S localhost:4000

接下來,打開瀏覽器,訪問 http://localhost:4000

Lemon 的功能 路由

在 Lemon 中的路由是通過匹配的URL模式與回調函數(shù)。

Route::get("/", function($request, $response) {
  echo "index";
});

當然也可以這樣表示

Route::get("/", "hello");

function hello($request, $response){
    echo "index";
}
請求方式

Route 是路由模塊的靜態(tài)類,您可以通過執(zhí)行route類的各種靜態(tài)方法來響應特定方法。

Route::get("/method/1", function($request, $response) {
    echo "我收到了一個 GET 請求";
});

Route::post("/method/2", function($request, $response) {
    echo "我收到了一個 POST 請求";
});

Route::put("/method/3", function($request, $response) {
    echo "我收到了一個 GET 請求";
});

Route::delete("/method/4", function($request, $response) {
    echo "我收到了一個 POST 請求";
});

Route::any("/method/5", function($request, $response) {
    echo sprintf("我收到了一個 %s 請求", $request->method);
});

哈哈,可以愉快的開發(fā) restful api 了。

你可能已經(jīng)注意到了回調函數(shù)中的 $request$response,這兩個參數(shù),這兩個參數(shù)是RequestResponse類的實例,是回調函數(shù)的必須參數(shù)。這兩個參數(shù)很有用,之后會介紹。

通配符路由
route::get("/hello/(:any)", function($request, $response, $name) {
    echo "hello " . $name;
});

該方法第一個參數(shù)是要匹配的路由URL,其中(:any) 通配符用來匹配任意值。在回調函數(shù)中我們使用了$name參數(shù)來接收這個值。

上面典型的路由匹配的是一個,匹配多個值的時候,回調函數(shù)中的參數(shù)位置對應匹配的值,參數(shù)名自定

route::get("/(:num)/(:num)/(:num)", function($request, $response, $year, $month, $day) {
    echo $year . "/" . $month . "/" . $day;
});

(:num) 匹配只含有數(shù)字的一段。 (:any) 匹配含有任意字符的一段。

Request(請求)

得到當前請求的路徑、方法、ip

route::get("/", function($request, $response) {
    echo $request->path ."
"; echo $request->method ."
"; echo $request->ip ."
"; });

接受get參數(shù)
localhost:3000/home?name=razor&age=0

route::get("/home", function($request, $response) {
    var_dump($request->get());
    // or
    echo $request->get("name");
});

接受post參數(shù)

route::any("/home", function($request, $response) {
    var_dump($request->post());
    // or
    echo $request->post("name");
});

判斷當前請求類型

route::any("/", function($request, $response) {
    if($request->isGET()) {
        echo "當前是 GET 請求";
    }

    if($request->isPost()) {
        echo "當前是 Post 請求";    
    }
});
Response(響應)

重定向

route::get("/", function($request, $response) {
    return $response->redirect("/home");
});

返回HTTP狀態(tài)碼

route::get("/", function($request, $response) {
    return $response->statusCode(404);
});

渲染視圖

route::get("/", function($request, $response) {
    return $response->view("index");
});

或者

route::get("/", function($request, $response) {
    return $response->view("index", ["title" => "首頁"]);
});
表單驗證
 "required|min:3|max:9",
            "age:年齡"      => "required|integer",
            "email:郵箱"    => "required|email",
    ];
    $validator = new Validation($request->get(), $rules);
    // 判斷是否成功驗證
    if(!$validator->success) {
        //輸出[數(shù)組]錯誤
        debug($validator->errors);
    } 
});

目前支持的規(guī)則有以下幾點

return [
            "email"     => ":attribute 格式不可用",
            "min"       => ":attribute 長度必須大于或等于 :min",
            "max"       => ":attribute 長度必須小于 :max.",
            "required"  => ":attribute 是必填項",
            "numeric"   => ":attribute 必須為數(shù)字",
            "integer"   => ":attribute 必須為整數(shù)",
            "alpha"     => ":attribute 必須僅包含字母字符", 
            "alpha_dash"=> ":attribute 必須僅包含字母、數(shù)字、破折號",
            "alpha_num" => ":attribute 必須僅包含字母、數(shù)字"
        ];

如果你感興趣,歡迎擴充驗證規(guī)程,比如httpurl、ip等等

數(shù)據(jù)庫操作

數(shù)據(jù)庫操作類的命名空間在 LemonDatabase; ,Database 基于Pdo實現(xiàn)的數(shù)據(jù)庫鏈式查詢。

配置
LemonDatabase::set([
        "driver"    => "mysql",
        "host"     => "localhost",
        "port"     => "3306",
        "username" => "root",
        "password" => "",
        "database" => "",
        "charset"  => "utf8"
    ]);
基本使用的例子
 "mysql",
        "host"     => "localhost",
        "port"     => "3306",
        "username" => "root",
        "password" => "",
        "database" => "",
        "charset"  => "utf8"
    ]);
   
Route::get("/", function($request, $response){
    $users = Database::table("users")->get();
});

Route::run();

get 方法有一個參數(shù),默認是*,執(zhí)行成功返回一個數(shù)組。

從數(shù)據(jù)表中獲取單個列或行

如果你只需要從數(shù)據(jù)表中獲取一行數(shù)據(jù),則可以使用 first 方法。這個方法將返回單個關聯(lián)數(shù)組:

$user = db::table("users")->where("name", "John")->first();

echo $user->name;

如果你不需要一整行數(shù)據(jù),則可以帶上參數(shù)來從單條記錄中取出單個值。此方法將直接返回字段的值:

$name= db::table("users")->where("name", "John")->first("name");

echo $name;
find 子句

如果你的某個表主鍵名正好叫id,你可以這樣找到它。

db::table("users")->find($id);

如果它叫其它什么名

db::table("users")->find($id, "user_id");
orderBy 子句

orderBy 方法允許你根據(jù)指定字段對查詢結果進行排序。orderBy 方法的第一個參數(shù)是你想要用來排序的字段,而第二個參數(shù)則控制排序的順序,可以為 asc 或 desc:

 db::table("users")->orderBy("id")->get();
Where 子句

你可以在查詢構造器實例中使用 where 方法從而把 where 子句加入到這個查詢中。基本的 where 方法需要3個參數(shù)。第一個參數(shù)是字段的名稱。第二個參數(shù)是要對字段進行評估的值。第三個參數(shù)是運算符,可選參數(shù)默認為=,它可以是數(shù)據(jù)庫所支持的任何運算符。

$users = db::table("users")->where("votes", 100)->get();

$users = db::table("users")->where("votes", 100, ">")->get();
take 子句

你可以使用take 方法來限制查詢結果數(shù)量,兩個參數(shù)第一個是起始位置,第二個是取多少條數(shù)據(jù):

$users = db::table("users")->take(10, 20)->get();
insert 方法

查詢構造器也提供了 insert 方法,用來插入記錄到數(shù)據(jù)表中。insert 方法接收一個包含字段名和值的數(shù)組作為參數(shù):

db::table("users")->insert(
    ["email" => "john@example.com", "votes" => 0]
);

執(zhí)行成功返回受影響的行,失敗返回false.

自增 ID

(無)

Updates 方法

當然,除了在數(shù)據(jù)庫中插入記錄外,你也可以使用 update 來更新已存在的記錄。update 方法和 insert 方法一樣,接收含有字段及值的數(shù)組,其中包括要更新的字段。可以使用 where 子句來約束 update 查找:

db::table("users")->where("id", 1)->update(["votes" => 1]);
自增或自減

(無)

Delete 方法

查詢構造器也可使用 delete 方法從數(shù)據(jù)表中刪除記錄。在 delete 前,還可使用 where 子句來約束 delete 語法:

db::table("users")->delete();

db::table("users")->where("votes",100,">")->delete();
實戰(zhàn)

基于 Lemon 的博客項目

https://blog.codefun.cn/

源碼倉庫

https://github.com/chanywn/lemon

歡迎貢獻代碼

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23184.html

相關文章

  • 使用 Xdebug 在 PHPStorm 中調試 PHP 程序(框架/原生均適用)

    摘要:紅色方形,表示中斷當前程序調試。第三個圖形示,強制進入當前函數(shù)內部的程序。框架說明加載的文件列表可以觀察到所有全局變量當前局部變量的數(shù)值可以新增變量,觀察變量隨著程序執(zhí)行的變化。參考文章使用與調試一 序言 Xdebug 作為 PHP 調試工具,提供了豐富的調試函數(shù)和配置,可以直觀的看到 PHP 源代碼的步進和性能數(shù)據(jù),以便優(yōu)化PHP代碼。 使用 phpstorm + xdebug 來調...

    cloud 評論0 收藏0
  • PHP 學習總結之數(shù)組

    摘要:概述我們知道,在編程語言中,數(shù)組的使用頻率是很高的,幾乎每個腳本都會使用到。循環(huán)缺點遍歷完成之后,不能對數(shù)組進行第二次遍歷數(shù)組內部指針指向了最后一個元素。 概述 我們知道,在 PHP 編程語言中,數(shù)組的使用頻率是很高的,幾乎每個腳本都會使用到。 PHP 自帶了大量的、優(yōu)秀的操作數(shù)組的函數(shù)以供我們使用,本文就對這些數(shù)組函數(shù)的使用做一些分類和總結,方便大家以后查閱。 創(chuàng)建 1. range...

    wangdai 評論0 收藏0
  • 堅持不懈續(xù)集 (二) 初學者挑戰(zhàn)學習Python編程30天

    摘要:元組是有序且不可更改或不可修改不可變的集合。不允許重復成員。列表是有序且可修改可變的不同數(shù)據(jù)類型的集合。避免上述問題的一種方法是使用。計數(shù)橙色年齡,,,,,,,打印年齡。語法反轉水果香蕉,橙色,芒果,檸檬水果。按字母順序排序,年齡。 ...

    Amio 評論0 收藏0
  • Spring Boot簡單環(huán)境搭建

    摘要:一創(chuàng)建一個簡單的項目使用,通過導入的模塊,可以將許多程序依賴的包自動導入到工程中。三啟動項目啟動項目,也就是運行方法,在瀏覽器訪問,即將看到頁面上顯示了。其實在依賴中集成了,服務器服務由提供。 一、創(chuàng)建一個簡單的Maven項目 使用Maven,通過導入Spring Boot的starter模塊,可以將許多程序依賴的包自動導入到工程中。使用Maven的parent POM,還可以更加容易...

    dack 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<