Blogger Information
Blog 23
fans 0
comment 0
visits 19941
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009
风吹的博客
Original
640 people have browsed it

先是抽象类的继承:

实例

<?php
abstract class k
{
	//抽象属性
	public $c;
	//初始化
	public function __construct($c=30){
		$this->c=$c;
	}
	//方法
	public function kk(){
	return $this->c;
    }
    //签名
abstract public function setC($value);
}

class k2 extends k
{
	public function __construct($c){
		parent::__construct($c);
	}
	public function setC($value)
	{
		$this->c=$c;
	}
} 
 $k2 = new k2(666666);
 echo '值:'.$k2->kk();

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

抽象.png

写CURD案例:并拓展了一个加法:


实例

<?php
namespace _1009;

interface iCurd
{
    // 增加数据
    public function create($data);

    // 读取数据
    public function read();

    // 更新数据
    public function update($data, $where);

    // 删除数据
    public function delete($where);
}

// 创建Db类, 实现iCurd接口,完成基本的数据库操作
class Db implements iCurd
{
    //拓展
    public static $a;
    public static $m;
    // 数据库的连接对象
    protected $pdo = null;

    // 数据表
    protected $table;

    //拓展的方法
    public static function k($m,$a)
    {
        return "{$m}+{$a}=".($m+$a);
    }

    // 构造方法: 实例化时连接数据库,并设置默认的数据表名称
    public function __construct($dsn, $user, $password, $table='ying')
    {
        $this->pdo = new \PDO($dsn, $user, $password);
        $this->table = $table;
    }

    // 增加数据
    public function create($data)
    {
        // 字段列表
        $fields = ' (name, image, detail) ';
        // 值列表
        $values = ' (:name, :image, :detail) ';

        // 创建SQL
        $sql = 'INSERT INTO '.$this->table.$fields. ' VALUES ' . $values;

        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);

        return [
            'count' => $stmt->rowCount(),
            'id' => $this->pdo->lastInsertId()
        ];
    }

    // 读取数据
    public function read($fields='*', $where='', $limit='0, 11')
    {
        //设置条件
        $where = empty($where) ? '' : ' WHERE ' . $where;

        // 设置显示数量
        $limit = ' LIMIT ' . $limit;

        $sql = 'SELECT ' . $fields . ' FROM ' . $this->table. $where . $limit;
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();

        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

    // 更新数据
    public function update($data, $where)
    {
        $keyArr = array_keys($data);
        $set = '';
        foreach ($keyArr as $value) {
            $set .= $value . ' = :' . $value. ', ';
        }

        $set = rtrim($set, ', ');

        $sql = 'UPDATE ' . $this->table. ' SET ' . $set . ' WHERE ' . $where;

        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);

        return $stmt->rowCount();
    }

    // 删除数据
    public function delete($where)
    {
        $sql = 'DELETE FROM ' .$this->table . ' WHERE ' .$where;
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();

        return $stmt->rowCount();
    }
}

// 客户端的代码
$dsn = 'mysql:host=127.0.0.1;dbname=chubu';
$user = 'root';
$password = 'root';
$db = new Db($dsn, $user, $password);

//遍历
foreach ($db->read() as $item) {
    print_r($item); echo '<br>';
}
echo '<hr>';
echo Db::k(10,66);

//新增
$data = [
  'name' => '天气之子',
 'image'=>'77.jpg',
  'detail'=>'牺牲一人就可以改变天气的故事'
];

$res = $db->create($data);
echo '成功的新增了: '. $res['count'].' 条记录,新增的记录的主键ID是: ' . $res['id'];

echo '<hr>';

 //更新
$data = [
    'image' => '6666.jpg',
   'detail'=>'很好看'
];

$where = 'mov_id = 12';
echo '成功的更新了: ' . $db->update($data, $where) . ' 条记录';

 //删除
$where = 'mov_id = 12';
echo '成功的删除了: ' . $db->delete($where) . ' 条记录';
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

相关截屏:

新增.png新增1.png

更新.png更新1.png

删除.png删除1.png

查找并有一个拓展减法:

查并有拓展方法.png

对于抽象的理解:和之前学习的方法相比就是没有写完的方法,没有具体实现,没有值

对于用接口写CURD,和前一天用链式调用数据库查询放在一起理解就很好理解,独自写还差火候。


Correction status:qualified

Teacher's comments:作业才写到这里, 看来得加速了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments