giliweb / phusky
基本的PHP模型框架
dev-master
2016-09-08 15:35 UTC
Requires
- php: >=7.0
- sergeytsalkov/meekrodb: v2.3
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();
待办事项
- 处理删除以最终删除依赖项
- ...