chkn/core

PHP MVC 框架

1.1.2 2022-06-24 09:36 UTC

This package is auto-updated.

Last update: 2024-09-25 13:57:04 UTC


README

PHP 框架,用于开发轻量级的服务器端应用。

安装

  1. 使用 composer 下载此包。
    • composer create-project chkn/core folder_name
  2. 安装应用密钥
    • php chkn key:generate
  3. 更改应用程序的根目录。它必须是您主文件夹的名称。
    • php chkn root folder_name
  4. 数据库配置
    • 更改数据库连接 = 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__
  5. 运行应用程序
    • 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");
    }
}