bombkiml/phpbeech

PHP Beech 框架(LTS)

安装次数: 50

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 0

开放性问题: 0

类型:项目

2.0.5 2021-08-19 09:09 UTC

This package is auto-updated.

Last update: 2024-09-07 15:53:39 UTC


README

beech-api release PyPI license

# DIY

N|Solid

# 环境要求

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 命令(推荐)

PHP Beech 命令行界面(CLI)文档

# 开发

想要贡献或加入我们完成伟大工作!您可以通过以下方式联系我:

# 许可证

PHP Beech 框架是开源软件,根据 MIT 许可证 发布。