欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009

程序员文章站 2022-03-20 23:13:40
...

先是抽象类的继承:

实例

<?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();

?>

运行实例 »

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

继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009

写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) . ' 条记录';
?>

运行实例 »

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

相关截屏:

继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009

继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009

继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009

查找并有一个拓展减法:

继承抽象类、 模仿案例,写一个接口实现CURD操作, 并扩展方法-1009

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

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