Blogger Information
Blog 77
fans 0
comment 0
visits 55248
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
抽象类、定义接口扩展curd方法_1009
Jet的博客
Original
759 people have browsed it

1 写一个抽象类并继承它, 内容自定

01.jpg

实例

<?php
//抽象类
abstract class Car
{
    //抽象属性
    protected $brand;

    public function __construct($brand = 'Rolls-Royce')
    {
        $this->brand    = $brand;
    }
    public function getBrand()
    {
        return $this->brand;
    }
    // 抽象方法
    abstract public function setBrand($value);
}

class Stu extends Car
{
    //构造方法不会继承
    public function __construct($brand)
    {
        parent::__construct($brand);
    }
    //抽象累中定义的抽象方法必须在子类中实现
    public function setBrand($value)
    {
        $this->brand = $value;
    }
}

$obj = new Stu('Rolls-Royce');
echo '汽车***之一:' . $obj->getBrand() . '<br />';
$obj = new Stu('Porsche');
echo '汽车***之一:' . $obj->getBrand() . '<br />';


?>

运行实例 »

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





2 模仿课堂案例,写一个接口实现CURD操作, 并扩展一到二个方法

查询方法截图:

03.jpg

修改数据方法截图:

04.jpg

删除方法截图:

05.jpg

实例

<?php
//接口开发实战
// 1、定义接口

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

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

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

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

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

    //数据表
    protected $table;

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

    //增加数据
    public function create($data)
    {
        //字段列表
        $fields = ' (name, age, sex,position, mobile, hiredate) ';
        //值列表
        $values = ' (:name, :age, :sex, :position, :mobile, :hiredate) ';
        //创建SQL语句
        $sql    = 'INSERT INTO '.$this->table.$fields. ' VALUES ' . $values;
        //pdo执行
        $stmt   = $this->pdo->prepare($sql);
        $stmt->execute($data);

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

    //读取数据
    public function read($fields='*',$where='',$limit='0,5')
    {
        //设置条件
        $where  = empty($where) ? '' : ' WHERE ' . $where;
        //设置显示数量
        $limit  = ' LIMIT ' . $limit;
        //创建sql查询语句
        $sql    = 'SELECT ' . $fields . ' FROM ' . $this->table . $where . $limit;
        //pdo执行
        $stmt   = $this->pdo->prepare($sql);
        $stmt->execute();
        //返回结果
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

    //修改数据
    public function update($data,$where2)
    {
        //设置查询字段
        $Arr    = array_keys($data);
        $set    = '';
        foreach($Arr as $value){
            $set .= $value . ' =:' . $value . ', ';
        }
        $set    = rtrim($set, ', ');
                //创建SQL语句
        $sql    = 'UPDATE ' . $this->table . ' SET ' . $set . ' WHERE ' . $where2;
        //die($sql);
        //PDO执行
        $stmt   = $this->pdo->prepare($sql);
        $stmt->execute($data);
        //返回结果
        return $stmt->rowCount();
    }

    //删除数据
    public function delete($where3)
    {
        //构建sql语句
        $sql    = 'DELETE FROM ' . $this->table . ' WHERE ' . $where3;
        //pdo执行
        $stmt   = $this->pdo->prepare($sql);
        $stmt->execute();
        //返回结果
        return $stmt->rowCount();
    }
}

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

//新增数据
// $data = [
//     'name'      => '大神',
//     'age'       => 99,
//     'sex'       => 1,
//     'position'  => '救世主',
//     'mobile'    => '400111111',
//     'hiredate'  => time()
// ];
// $res = $db->create($data);
// echo '成功新增了:' . $res['count'] . '条记录,新增的记录的主键ID是:' . $res['id'];

//查询数据
$fields = ' name as 姓名,age as 年龄 ';
$where  = ' age>30 ';
$limit  = '0,20';

//遍历查询
foreach ($db->read($fields,$where,$limit) as $item){
     print_r($item); echo '<br />';
}

//修改数据
$data =[
    'age'       => 40,
    'position'  => '神经大侠'
];

$where2  = 'staff_id = 18';
echo '成功更新了:' . $db->update($data,$where2) . ' 条记录';

echo '<hr>';

//删除
$where3 = 'staff_id = 20';
echo '成功删除了:' . $db->delete($where3) . ' 条记录';


?>

运行实例 »

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



小结:

1、抽象类:不能实例化,定义的抽象方法必须在子类中实现

抽象定义方法:

abstract class Name

{

    abstract public function setSub(   );

 }

class sub extends Name

{

    // ...

}

2、接口:接口是类的模板、类是对象的模板、对象是类的实例,接口大boss。

interface name { //... }

class sub implements name { //... }

3、抽象类、接口,语法理解简单,但是实操写方法等都需要强大的逻辑理解能力,多写多实操。




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
Author's latest blog post