资讯专栏INFORMATION COLUMN

从零开始打造自己的PHP框架——第5章

svtter / 1888人阅读

摘要:小结至此,整个框架已经基本完成。接下来,我们会开发一个迷你项目,在开发的过程中,测试并改进我们的框架。源码分享书签从零开始打造自己的框架官方文档中文文档

目标

使用medoo插件来连接和操作数据库。

原文链接:http://www.voidking.com/2017/...

medoo基础 安装medoo

1、在composer中添加依赖:

"catfan/medoo": "*"

2、更新依赖
composer update

使用medoo

1、config目录添加medoo_config.php为:

 "mysql",
    "database_name" => "vkphp",
    "server" => "localhost",
    "username" => "root",
    "password" => "",
    "charset" => "utf8",
    "port" => 3306,// 可选参数
    "prefix" => "vk_",// 可选,定义表的前缀
);

2、core目录添加medoo.php为:


3、app/ctrl/indexCtrl.php中添加函数:

public function medoo(){
    $medoo = new coremedoo();
    dump($medoo);
}

访问 http://vkphp.dev/index/medoo ,即可看到medoo的相关信息。

增删查改 查找
$ret = $medoo->select("user","*",["username"=>"voidking"]);
dump($ret);
插入
$data = array(
    "username"=>"voidking1",
    "password"=>"voidking1"
);
$ret = $medoo->insert("user",$data);
dump($ret);

因为medoo的版本问题(1.4.5),此时并没有打印出这条记录的id,而是PDOStatement object。此时,要想获取记录id,有两个方案:

方案一:从medoo中获取

dump($medoo->id());

方案二:找到vender/catfan/medoo/src/Medoo.php的第1173行,修改为

$this->exec("INSERT INTO " . $this->tableQuote($table) . " (" . implode(", ", $fields) . ") VALUES " . implode(", ", $stack), $map);
return $this->pdo->lastInsertId();
删除
$ret = $medoo->delete("user",["username"=>"voidking2"]);
dump($ret->rowCount()); // 受影响的行数
修改
$ret = $medoo->update("user",["username"=>"voidking2"],["username"=>"voidking1"]);
dump($ret->rowCount());
medoo进阶 回顾

yii框架,对于每个表,我们都要创建一个model类,继承ActiveRecord类。比如:


在使用的时候,新建一个model对象,调用其中的方法即可:

$project = new Project();

thinkphp框架,对于每个表,我们不用创建model类。在使用的时候,直接新建一个默认model对象,传入表名,调用其中的方法即可:

$project = M("project");

当然,thinkphp也可以自定义model类,继承Model类。比如:


使用D方法新建自定义model对象,找不到定义类的情况下会调用M方法:

$project = D("project");

yii和thinkphp的两种实现方案,异曲同工,同样都包含了默认model类和自定义model类。
yii中,默认model类为ActiveRecord,如果要自定义model类,继承它即可。
thinkphp中,默认model类为Model,如果要自定义model类,继承它即可。

model.php

鉴于yii的实现方式,我们也来新建一个model基类,其他的model类都继承它。

1、core目录下,新建model.php,内容如下:

table_name = strtolower(end($name_arr));
        parent::__construct();
        //dump($this->table_name);
    }

    public function list_all(){
        $ret = $this->select($this->table_name,"*");
        return $ret;
    }

    public function find_by_id($id){
        $ret = $this->select($this->table_name,"*",["id"=>$id]);
        return $ret;
    }

    public function find_by_condition($condition){
        $ret = $this->select($this->table_name,"*",$condition);
        return $ret;
    }

    public function add($data){
        $ret = $this->insert($this->table_name,$data);
        return $this->id();
    }

    public function del($condition){
        $ret = $this->delete($this->table_name,$condition);
        return $ret->rowCount(); // 受影响的行数
    }

    public function edit($data,$condition){
        $ret = $this->update($this->table_name,$data,$condition);
        return $ret->rowCount();
    }

}

2、在app/model目录中新建user.php,内容如下:


3、在app/ctrl/indexCtrl.php中添加函数:

$user = new appmodeluser();
dump($user->list_all());
dump($user->find_by_id(1));
dump($user->find_by_condition(["username"=>"voidking"]));
dump($user->add(["username"=>"voidking1","password"=>"voidking1"]));
dump($user->edit(["username"=>"voidking2"],["username"=>"voidking1"]));
dump($user->del(["username"=>"voidking2"]));

访问 http://vkphp.dev/index/model ,可以看到操作结果:

操作完成后,也许会感觉数据库表比较乱。这时可以清空表,并且重新从1开始自增id。
truncate vk_user;

小结

至此,整个框架已经基本完成。接下来,我们会开发一个迷你项目,在开发的过程中,测试并改进我们的框架。

源码分享

https://github.com/voidking/v...

书签

从零开始打造自己的PHP框架

Medoo官方文档

Medoo中文文档

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26191.html

相关文章

  • 从零开始打造自己PHP框架——6

    摘要:前言第到章,我们完成了一个属于自己的框架,麻雀虽小五脏俱全。接下来,我们使用框架开发一个迷你项目书签收藏。内包含框架的核心文件。源码分享书签从零开始打造自己的框架与之详解 前言 第0到5章,我们完成了一个属于自己的php框架,麻雀虽小五脏俱全。接下来,我们使用vkphp框架开发一个迷你项目——书签收藏。在开发过程中,也许会遇到很多问题,这时候我们就可以对框架进行调整,使之更加完善。 系...

    shusen 评论0 收藏0
  • 从零开始打造自己PHP框架——0

    摘要:市场上已经有了这么多好的框架,为什么还要开发自己的框架答假装大神。为了在装神的道路上走的更远,小编决定开发一个自己的框架,命名为。源码分享书签从零开始打造自己的框架 前言 使用过thinkphp和yii,涉猎过shopnc。市场上已经有了这么多好的框架,为什么还要开发自己的框架?答:假装大神。为了在装神的道路上走的更远,小编决定开发一个自己的php框架,命名为vkphp。 原文地址:h...

    妤锋シ 评论0 收藏0
  • 从零开始打造自己PHP框架——4

    摘要:本篇,我们就在自己的项目中使用来进行依赖管理。输入,即可安装依赖到目录中,并且自动生成和。安装依赖,提示从提示可以看出,读取的是中的依赖,而不是最新的。访问,正常工作。源码分享书签从零开始打造自己的框架中文网中文文档 Composer Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管...

    madthumb 评论0 收藏0
  • 从零开始打造自己PHP框架――2

    摘要:命名空间的作用解决重名问题。不同的命名空间中,可以存在相同类名和函数名。完全限定名称,或包含了全局前缀操作符的名称,例如,或。源码分享书签从零开始打造自己的框架使用命名空间基础使用命名空间后备全局函数常量基础安装进阶安装 目标 本篇,我们来实现加载控制器、数据查询和页面渲染。 原文地址:http://www.voidking.com/2017/... 加载控制器 控制器 在app目录下...

    daydream 评论0 收藏0
  • 从零开始打造自己PHP框架——3

    摘要:内包含框架的核心文件。在目录中,新建,内容如下判断文件是否存在判断配置是否存在没有配置项找不到配置文件找不到配置文件配置类在目录中,新建配置文件和。使用修改目录中的和。源码分享书签从零开始打造自己的框架 目标 本篇,我们的目标有三个: 调整项目结构 加载配置类 添加日志类 原文地址:http://www.voidking.com/2017/... 调整项目结构 vkphp ├─ap...

    fengxiuping 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<