bombkiml / phpbeech
PHP Beech 框架(LTS)
Requires
- php: >=7.1.1
- bombkiml/beech-cli: ^2.0
- components/font-awesome: dev-master
- twbs/bootstrap: ^5.1.0
This package is auto-updated.
Last update: 2024-09-07 15:53:39 UTC
README
# DIY
# 环境要求
PHP >= 7.1.11
# 安装 Beech
Beech 使用 composer 来管理其依赖。因此,在使用 Beech 之前,请确保您的机器上已安装了 Composer。
$ composer create-project bombkiml/phpbeech hello-world
# 本地开发服务器
如果您已在本地上安装了 PHP,并希望使用 PHP 的内置开发服务器运行应用程序,您可以使用 serve 命令。此命令将在 https://:8000 启动开发服务器
$ php beech serve
# 定义控制器
以下是一个基本控制器类的示例。**请注意**,控制器继承自 base controller 类。控制器存储在 modules/controllers/ 目录中。一个简单的控制器 modules/controllers/fruits/fruitsController.php 可能如下所示
<?php class FruitsController extends Controller { /** * @Rule: consturctor class it's call __construct of parent class * * Call parent class * */ public function __construct() { parent::__construct(); } }
# 将数据传递到视图中
您可以使用 $this->view->yourVariable 并将数据分配给该变量,以便将其传递到 views。简单的数据传递可能如下所示
<?php class FruitsController extends Controller { /** * @Rule: consturctor class it's call __construct of parent class * * Call parent class * */ public function __construct() { parent::__construct(); } /** * Simple passing the data to `views/fruits/fruits.view.php` * * @var title * @var hello * @var data * * @return Response view */ public function index() { // Passing the data to view $this->view->title = "fruits page"; $this->view->sayHello = "Hello fruits"; $this->view->data = []; // Return response view return $this->view->render("fruits/fruits.view"); } }
# 创建视图
以下是一个简单的视图,其中包含要提供的 HTML,视图存储在 views/ 目录中。一个简单的视图 views/fruits/fruits.view.php 可能如下所示
<html> <head> <title>Title Name</title> </head> <body> <h1>Hello world</h1> </body> </html>
# 访问从控制器传递的数据
您可以使用 $this 来访问传递到视图的数据。简单的数据访问可能如下所示
<html> <head> <!-- Accessing the data passed of @var title --> <title><?php echo $this->title; ?></title> </head> <body> <!-- Accessing the data passed of @var sayHello --> <h1><?php echo $this->sayHello; ?></h1> <!-- Accessing the data passed of @var data --> <?php print_r($this->data); ?> </body> </html>
# 定义模型
以下是一个基本创建 model 类的示例。**请注意**,模型继承自 base model 类。模型存储在 modules/models/ 目录中。一个简单的模型 modules/models/Fruits.php 可能如下所示
<?php class Fruits extends Model { /** * @Rule: consturctor class it's call __construct of parent class * * Call parent class * */ public function __construct() { parent::__construct(); } /** * Simple method using MySQL get data * */ public function getFruits() { // Preparing sql statements $stmt = $this->db->prepare("SELECT * FROM fruits"); // Execute statements $stmt->execute(); // Return response rows return $stmt->fetch_all(); } }
# 数据库
Beech 数据库(支持 MySQL)通过 $this->db 使用,它的查询构建器提供了一个方便、流畅的界面来创建和运行数据库查询。它可用于执行应用程序中的大多数数据库操作。
# 获取结果
您可以使用 php $this->db 门面的 prepare 方法开始查询。该 prepare 方法返回一个对象查询构建器实例,用于给定表,允许您通过 execute 方法使用 SQL 语句进行查询,然后最终使用 fetch 方法获取结果。因此,您可以通过以下方法轻松获取结果
- 一:指定语句,首先您必须使用
prepare()指定您的 SQL 语句以获取某些内容,然后准备函数将返回新对象以调用后续操作,以下为获取数据的基本语句
$stmt = $this->db->prepare("SELECT * FROM fruits");
- 二:执行语句,指定语句后,您必须使用上面所示的
$stmt对象执行您的 SQL 语句
$stmt->execute();
- 最终:响应数据,使用
$stmt对象返回结果数据。因此,有一个可用于使用的响应
$stmt->fetch_all(); // result: array $stmt->fetch_assoc(); // result: array $stmt->fetch_array(); // result: array $stmt->fetch_object(); // result: object $stmt->num_rows(); // result: int
# 数据库事务
您可以使用由 $this->model 门面提供的交易方法在数据库事务中运行一系列操作。如果在事务闭包内抛出异常,事务将自动回滚。如果闭包执行成功,事务将自动提交。使用交易方法时,您无需担心手动回滚或提交。
// Init autocommit off $this->db->transaction(); // update, delete some value $this->db->update("fruits", array("name" => "Cherry"), array("id" => 1)); $this->db->delete("fruits", array("id" => 1)); // commit transaction if ($this->db->commit()) { echo "Commit completed!"; } else { // Rollback transaction $this->db->rollback(); }
控制器调用数据库
-
当您在“相同文件名”规则下创建
model时,model将自动连接。因此,如果您的控制器名称是 "Fruits",您必须创建与 "Fruits" 相同的模型名称。 -
您可以使用
$this->model来调用模型中的所有方法。简单的调用方法可能看起来像这样
<?php class FruitsController extends Controller { public function __construct() { parent::__construct(); } /** * Simple calling the model `Fruits` * */ public function index() { // Calling the method in model $this->view->fruits = $this->model->getFruits(); // <---- Call method in Fruits model // Return response view return $this->view->render("fruits/fruits.view"); } }
# 插入
查询构建器还提供了一个用于将记录插入数据库表的 insert 方法。插入方法接受一个包含列名和值的数组。
$this->db->insert("fruits", array("id" => "1", "name" => "Banana"));
# 更新
查询构建器还可以使用 update 方法更新现有记录。update 方法接受一个包含要更新的列和新值的数组的列与值对。您可以使用 WHERE 子句约束更新查询。
$this->db->update("fruits", array("name" => "Cherry"), array("id" => 1));
# 删除
查询构建器还可以通过删除方法从表中删除记录。您可以使用 WHERE 子句约束删除查询。
$this->db->delete("fruits", array("id" => 1));
# 使用 beech-cli 命令(推荐)
# 开发
想要贡献或加入我们完成伟大工作!您可以通过以下方式联系我:
- GitHub: bombkiml/phpbeech - issues
- E-mail: nattapat.jquery@gmail.com
- Facebook: https://#/bombkiml
# 许可证
PHP Beech 框架是开源软件,根据 MIT 许可证 发布。