giliweb / phusky

基本的PHP模型框架

dev-master 2016-09-08 15:35 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:45 UTC


README

本指南尚未完成

目录

安装说明

运行

composer require giliweb/phusky

打开 composer.json 并添加

"scripts": {
    "phusky_setup": "giliweb\\phusky\\Install::init"
}

运行

composer phusky_setup -- -path=classes_folder -dbhost=db_host -dbname=db_name -dbuser=db_user -dbpassword=db_password

Phusky将在你指定的-path参数指定的文件夹内创建一组PHP类

如何在项目中使用Phusky

创建新对象并将其插入DB

以下所有示例均基于"example_db.sql"中可用的数据

好吧,假设我们想在数据库中插入一个新的Car对象。模型的名称是"Testarossa",并且我们已经知道品牌的ID是3

<?php
$car = new Car([
    "name" => "Testarossa",
    "brands_id" => 3
]);
$car->create();

但如果品牌尚未存在于"brands"表中怎么办?只需这样做

<?php
$car = new Car([
    "name" => "Testarossa",
    "brand" => [
        "name" => "Ferrari"
    ]
]);
$car->create();

Phusky将为我们的数据库创建并插入名为"Ferrari"的品牌,并将新的汽车对象关联到新创建的品牌。

同样,我们可以将一些依赖项绑定到汽车对象上

<?php
$car = new Car([
    "name" => "Testarossa",
    "brand" => [
        "name" => "Ferrari"
    ],
    "colors" => [
        [
            "id" => 3
        ],
        [
            "name" => "Red"
        ]
    ]
]);
$car->create();

如您所见,我们将绑定2种颜色到汽车对象上。第一种已经存在并且存在于数据库中,我们知道它的ID是3。第二种尚未存在于数据库中,因此我们将创建它。$car的输出将是

Car Object
(
    [name] => Testarossa
    [brand] => Brand Object
        (
            [name] => Ferrari
            [id] => 26
        )

    [colors] => Array
        (
            [0] => Color Object
                (
                    [id] => 3
                    [name] => Blue
                )

            [1] => Color Object
                (
                    [id] => 13
                    [name] => Red
                )

        )

    [brands_id] => 26
    [id] => 55
)

从DB读取一些数据并以对象的形式返回

使用Phusky,您可以获取一条记录或一组记录。这些数据将自动转换为在PHP类中定义的正确对象类型。要获取单条记录

<?php
$car = Car::getById(3);

要获取多条记录

<?php
$cars = Car::read();

要搜索某物,您必须在read方法中传递一个闭包,如MeekroDB文档中所述,即

<?php
$cars = Car::read(function(){
    $where = new \WhereClause('and');
    $where->add("brands_id=%d", 3);
    return $where;
});

输出将类似于以下内容

Array
(
    [0] => Car Object
        (
            [id] => 42
            [name] => Testarossa
            [brands_id] => 3
        )

    [1] => Car Object
        (
            [id] => 43
            [name] => Enzo
            [brands_id] => 3
        )

    [2] => Car Object
        (
            [id] => 44
            [name] => LaFerrari
            [brands_id] => 3
        )
)

假设我们想知道哪些颜色绑定到那些汽车上,我们可以这样做

<?php
    $car->colors;
    // OR
    $cars->colors;

输出将包括每个汽车对象的颜色信息。为了获得干净的输出,建议使用output方法

<?php
    $car->output();
    // OR
    $cars->output();

更新操作

至于插入过程,Phusky将动态创建/更新我们将要更新数据库中的主对象的任何依赖项。主要区别在于我们还可以删除它们!如果我们调用

<?php
$car = Car::getById(3); // load car instance
$car->colors = []; // empty the colors array
$car->update(); // write on DB

Phusky将删除$car对象上的所有颜色

<?php
$car = Car::getById(3);
$car->colors; // load the colors for this car
unset($car->colors[0]); // manually delete this specific color
$car->update(); // write on DB

在这种情况下,Phusky将仅删除第一个颜色。

删除

<?php
$car = Car::getById(3);
$car->delete();

待办事项

  1. 处理删除以最终删除依赖项
  2. ...