chkn / core
PHP MVC 框架
README
PHP 框架,用于开发轻量级的服务器端应用。
安装
- 使用 composer 下载此包。
composer create-project chkn/core folder_name
- 安装应用密钥
php chkn key:generate
- 更改应用程序的根目录。它必须是您主文件夹的名称。
php chkn root folder_name
- 数据库配置
- 更改数据库连接 =
php chkn db:connection __Connection__ - 更改数据库主机 =
php chkn db:host __host__ - 更改数据库名称 =
php chkn db:name __name__ - 更改数据库字符集 =
php chkn db:charset __charset__ - 更改数据库用户名 =
php chkn db:username __username__ - 更改数据库密码 =
php chkn db:password __password__
- 更改数据库连接 =
- 运行应用程序
php chkn roast- `php chkn roast --port=8000
包
CHKN 框架中的默认类在 Drive:ROOT_FOLDER/config/Package/package.conf 中分组和编译。
- 查询构建类 - 设置为 0 以禁用
QUERY_BUILDER=1
- 加密和解密类 - 设置为 0 以禁用
ENCRYPTION=1
- 下载类 - 设置为 0 以禁用
DOWNLOAD=1
- 上传类 - 设置为 0 以禁用
UPLOAD=1
- 会话类 - 设置为 0 以禁用
SESSION=1
- 维护类 - 设置为 0 以禁用
MAINTENANCE_CLASS=1
- 页面未找到类 - 如果找不到类或方法,则显示页面未找到页面。设置为 0 以禁用
PAGE_NOT_FOUND=1
- CSRF 令牌类 - 设置为 0 以禁用
CSRF=1
供应商样式和脚本
在应用程序中包含全局样式和脚本。
- 包含全局 CSS - 转到
config/vendors/stylesheet.conf
/**Set your App's Global Stylesheet/Libraries
/**Include every file after a new line
/**Save the stylesheet inside public/vendor/css/
/**Don't include the file extension
/**Start
bootstrap.min
fontawesome.min
fontawesome-all
/**End
- 包含全局脚本 - 转到
config/vendors/scripts.conf
/**Set your App's Global JavaScript/Libraries
/**Include every file after a new line
/**Save the scripts inside public/vendor/js/
/**Don't include the file extension
/**Start
jquery
bootstrap.min
fontawesome.min
/**End
控制器和页面
正如我们所知,控制器负责在视图中显示什么,在模型中请求什么。在 CHKN 框架中,控制器是您系统中最重要的文件。控制器是您声明要使用的模板、在模板中显示的页面、页面标题、页面样式表和脚本以及您在模型中创建请求的地方。
创建控制器
- 您必须在 Http/Controller/ 文件夹中创建一个 PHP 文件。文件名必须是您想要的控制器名称,后面跟 Controller。例如:homeController.php
- php create:controller controller_name
每个控制器都将包含以下代码。
<?php namespace http\Controllers; use App\Controller\Controller; use App\App\Request; class homeController extends Controller{ public function home(){ return scene("index","homepage/index") ->title("Hello World") ->show(); } }
- scene("template","page content") - 调用页面模板。'index' 指的是位于 view/template/index.tpl 的模板文件
- ->title() - 设置页面标题。
- ->css() - 在页面中包含样式表。CSS 文件存储在 public/css。
- ->js() - 在页面中包含脚本。脚本文件存储在 public/js。
- ->show() - 编译上述设置并显示页面。
路由
在 CHKN 框架中,导航到页面意味着导航到控制器。创建页面后,还必须创建一个控制器来包含该页面的所有请求或处理过程。
通过链接进行导航
大多数情况下,链接用于在页面间导航。在CHKN中你可以执行的操作。在创建链接位置时,必须遵循严格的格式。[chkn:path]controllerName/methodName
<a href= "[chkn:path]controllerName/methodName">Link Name < /a>
模板工具
向模板传递值
控制器处理的数据可以通过scene()函数的variable()链方法传递到你的模板中。
//your controller <?php namespace http\Controllers; use App\Controller\Controller; use App\App\Request; class homeController extends Controller{ public function home(){ return scene("index","homepage/index") ->title("Hello World")->bind([ "variable_name"=>"value" ]) ->show(); } }
<body> <p> $variable_name < /p> </body>
在模板中传递数组
控制器处理的数组可以通过使用$this->array_var()方法传递到模板中。
//your controller $array = [ 0=> ["name"=> "Ben","age"=> "25"], 1=> ["name"=> "Anna","age"=> "24"] ]; namespace http\Controllers; use App\Controller\Controller; use App\App\Request; class homeController extends Controller{ public function home(){ return scene("index","homepage/index") ->title("Hello World") ->bind([ "variable_name"=>$array ]) ->show(); } }
使用foreach填充分配的数组
控制器中的分配数组变量可以使用CHKN框架模板工具进行填充。开发者可以使用如下所示的foreach。
注意:您可以通过将字段名括在{[ ]}中来引用数组中的特定字段。
//on your template or page <body> #foreach( $array_name ){ {{ < p> Name: {[name]} < /p> < p> Age: {[age]} < /p> }} #endforeach </body>
条件语句
您还可以设置一个条件语句,该语句基于分配的变量。
//your controller <?php namespace http\Controllers; use App\Controller\Controller; use App\App\Request; class homeController extends Controller{ public function home(){ return scene("index","homepage/index") ->title("Hello World") ->bind([ "type"=>"active" ]) ->show(); } }
//on your template or page
//include double quote(“”) on the variable
# if( “$type” == “active” ){
{{
<p> Value if True </p>
}}
} else{
{{
<p> Value if False </p>
}}
#}
循环语句
您可以使用CHKN框架的模板工具轻松创建循环语句,如FOR LOOP。请注意,必须用方括号[]括起来使用比较运算符。
//on your template or page #for($x=0;$x[<]$data;$x++ ){ {{ <p> Hello World {[x]} </p> }} #endfor
表单和CSRF令牌
在表单中包含csrf字段将为每个表单请求启用CSRF令牌。这将加强针对CSRF或跨站请求伪造的安全性。
<form method="post" action="controller/method"> [form:csrf] <label>Name</label><br> <input type="text" name="name"><br> <label>Address</label><br> <input type="text" name="address"><br> <label>Age</label><br> <input type="number" name="age"><br> <button>Submit</button> </form>
获取请求
public function fetchData(Request $r){ $name = $r->name; $address = $r->address; $age = $r->age; }
查询构建器
在CHKN框架中,使用查询构建器处理数据库操作,如创建、读取、更新和删除。在你的控制器类中添加类DB。
use App\Database\DB;
选择查询
在CHKN查询构建器中,选择操作通过DB::select()执行;
选择所有
public function select(Request $r){ $data = DB::select("table")->fetch(); }
通过表字段选择
public function select(Request $r){ $data = DB::select("table") ->where("table_field","=","value") ->fetch(); }
使用JOIN选择
public function select(Request $r){ $data = DB::select("table") ->join("other_table","table.field","=","other_table.field") ->where("table.field","=","value") ->fetch(); }
使用限制选择
public function select(Request $r){ $data = DB::select("table") ->limit(1) ->fetch(); }
按顺序选择
public function select(Request $r){ DB::select("table") ->orderBy("table_field","ASC") ->fetch(); }
插入查询
在CHKN查询构建器中,插入操作通过DB::insert()执行;
INSERT
public function insert(Request $r){ $data = DB::insert("table") ->field("field_name","value") ->field("field_name","value") ->field("field_name","value") ->execute(); }
删除查询
在CHKN查询构建器中,删除操作通过DB::delete()执行;
DELETE
public function delete(Request $r){ $data = DB::delete("table") ->where("field_name","=","value") ->execute(); }
更新查询
在CHKN查询构建器中,更新操作通过DB::update()执行;
UPDATE
public function update(Request $r){ $data = DB::update("table") ->field("field_name","value") ->field("field_name","value") ->field("field_name","value") ->where("field_name","=","value") ->execute(); }
查询
在CHKN查询构建器中,您可以使用DB::query()创建自己的查询;
QUERY
public function query(Request $r){ $data = DB::query("SELECT * FROM table WHERE field={field}") ->bind("field","value of field") ->execute(); }
会话
session_start()函数已经包含在框架的核心中。所有处理会话的函数都包含在Session类中。
保存会话
为了保存会话,请使用put()方法。
// Include the class Session use App\App\Session; // In a method Session::put("session_name","session_value");
删除会话
为了删除会话,请使用clear()方法。
// Include the class Session use App\App\Session; // In a method Session::clear("session_name");
读取存储的会话
为了读取存储的会话,请使用get()方法。
// Include the class Session use App\App\Session; // In a method Session::get("session_name");
检查会话是否存在
为了检查会话的存在,请使用check()方法。
// Include the class Session use App\App\Session; // In a method Session::check("session_name");
辅助函数
辅助函数是添加到PHP框架核心中的函数,以帮助您加快并统一开发中的重复性任务。
加密和解密
在控制器中加密和解密字符串
- 加密
// In a method encrypt("string to encrypt"); // base64 seal("string to encrypt"); // Selected column in an array (base64) array_seal($array,$key);
- 解密
// In a method decrypt("encrypted string"); // base64 rseal("encrypted string");
输出并停止
使用CHKN框架的输出并停止进行PHP调试。
// Dump data in the application dd($var); // Dump date time in the application ddt($message);
上传文件
在上传应用程序中的文件
upload($file_location,$image,$image_name);
下载文件
在上传应用程序中的文件
download($filename,$file_location)
页面重定向
从一个页面重定向到另一个页面
locate("location");
JSON响应
在HTTP请求上抛出JSON响应
echo response(["message"=>"success"],200);
模块
在CHKN框架中,您可以通过模块全局定义对象。应用程序的模块位于http/Module文件夹中,并可以在其中创建。CHKN模块就像一个普通的控制器一样工作,但您可以访问位于http/Controllers中的任何现有控制器。
<?php // Module namespace http\Module; use App\Controller\Controller; use App\Database\DB; class Module extends Controller{ public static function sample(){ return "Hello World" } } //Controller <?php namespace http\Controllers; use App\Controller\Controller; use App\App\Request; use http\Module\Module; // Include the Module Class use http\Module\Module; class sampleController extends Controller{ public function home(Request $r){ // It will display Hello World in sample/home echo Module::sample(); } }
认证控制器
在应用程序中生成一个认证页面。
php chkn auth:create
认证类
使用认证类访问认证会话。
Auth::check(array,redirect)
在类中选定的方法中使用Auth::check()函数触发认证检查
<?php // Module namespace http\Controller; use App\Controller\Controller; use App\Controller\Auth; class homeController extends Controller{ public static function home(){ Auth::check(["role"=>"admin"],"auth"); } }
使用多个角色检查方法访问
<?php // Module namespace http\Controller; use App\Controller\Controller; use App\Controller\Auth; class homeController extends Controller{ public static function home(){ Auth::check(["role"=>"admin,staff,cashier"],"auth"); } }