博主信息
博文 21
粉丝 0
评论 0
访问量 30099
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
抽象类和接口的定义和使用-------2019.10.09
刂艹亻的博客
原创
917人浏览过

抽象类的定义和使用

php抽象类定义关键字 abstract

抽象方法是没有方法体的方法,没有方法体是指方法声明时没有花括号以及其中的内容,而是声明方法时直接在方法名后加上分号结束,声明抽象方法要使用abstract关键字修饰。声明抽象方法格式:abstract function();

抽象类中的方法不能自己去实现,需要靠子类中去实现
1. 抽象类不能实例化
2. 抽象类中定义的抽象方法必须在子类中实现

实例

<?php
//抽象类
namespace _1009;
//php抽象类定义关键字 abstract
abstract class Person1
{

    //抽象类中的属性
    protected $name;
//抽象方法是没有方法体的方法,没有方法体是指方法声明时没有花括号以及其中的内容,而是声明方法时直接在方法名后加上分号结束,声明抽象方法要使用abstract关键字修饰。声明抽象方法格式:abstract function();
// 签名, 抽象方法
    public function __construct($name = '雄')
    {
        $this->name = $name;
    }
    abstract public function getName();

    abstract public function setName($value);
}
//抽象类中的方法不能自己去实现,需要靠子类中去实现
//1. 抽象类不能实例化
//2. 抽象类中定义的抽象方法必须在子类中实现
class Stus extends Person1
{

    public function getName()
    {
        return $this->name;
    }
    public function setName($value)
    {
        $this->name = $value;
    }
}

$stu = new Stus('熊猫');
echo $stu->getName();
echo '<hr>';
$stu->setName('北极熊');
echo $stu->getName();

运行实例 »

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

接口的定义和使用

定义接口类 ,关键字 interface

实现接口 ,关键字 implements

实例

<?php
namespace _1009;

//定义接口类 ,关键字 interface
interface Book
{
    //设置书名
    public function bookName($bookName);
    //设置作者
    public function bookZuoZhe($bookZuoZhe);

}

//实现接口 ,关键字 implements
class Read implements Book
{
    public $bookName;
    public $bookZuoZhe;

    //实现接口里面的方法
    public function bookName($bookName)
    {
        $this->bookName = $bookName;
    }

    //实现接口里面的方法
    public function bookZuoZhe($bookZuoZhe)
    {
        $this->bookZuoZhe = $bookZuoZhe;
    }

    public function getXinxi()
    {
        return '《'.$this->bookName.'》'.'作者:'.$this->bookZuoZhe;
    }
}

//客户端代码调用
$obj = new Read();
$obj->bookName('三体');
$obj->bookZuoZhe('刘念慈');
echo $obj->getXinxi();

运行实例 »

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

使用接口--实例演示数据库的curd操作

实例

<?php
namespace _1009;

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

    //查询数据
    public function read();

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

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

}

//创建工作类,实现接口方法
class Db implements iCurd
{
    //数据库的连接对象
    protected $pdo = null;

    //表名
    protected $table;

    //构造方法连接数据库
    public function __construct($dsn, $user, $pwd, $table = 'staff')
    {
        //保存实例化后的pdo对象
        $this->pdo = new \PDO($dsn, $user, $pwd);
        //设置表名
        $this->table = $table;

    }

    //添加数据
    public function create($data)
    {
        // TODO: Implement create() method.
        // 字段列表
        $fields = ' (name, age, sex,position, mobile, hiredate) ';
        // 值列表
        $values = ' (:name, :age, :sex, :position, :mobile, :hiredate) ';
        //创建sql语句
        $sql = 'INSERT INTO '.$this->table . $fields.' VALUES '.$values;

        //预处理语句
        $stmt = $this->pdo->prepare($sql);

        //执行,绑定参数
        $stmt->execute($data);
        //返回结果
        return [
            //返回受影响行数
            'count' => $stmt->rowCount(),
            //返回主键ID
            '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;
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

    //更新数据
    public function update($data,$where)
    {
        // 字段列表
        $keys = array_keys($data);
        $set = '';
        foreach ($keys as $value) {
            $set .= $value . ' = :' . $value. ', ';
        }
        $set = rtrim($set, ', ');
        //创建sql语句
        $sql = 'UPDATE '.$this->table . ' SET '.$set.' WHERE '.$where;

        //预处理语句
        $stmt = $this->pdo->prepare($sql);

        //执行,绑定参数
        $stmt->execute($data);
        //返回结果
        return [
            //返回受影响行数
            'count' => $stmt->rowCount(),
            //返回主键ID
            'id' => $this->pdo->lastInsertId()
        ];
    }

    //删除数据
    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=chen';
$user = 'root';
$password = 'root';
$obj= new Db($dsn,$user,$password);
//$data = [
//    'name' => '万剑一',
//    'age' => 29,
//    'sex' => 1,
//    'position' => '祖传悲剧男',
//    'mobile' => '1389998899',
//    'hiredate' => time()
//];
//$res = $obj->create($data);
//echo '成功的新增了: '. $res['count'].' 条记录,新增的记录的主键ID是: ' . $res['id'];
//查询
foreach($obj->read() as $value){
    print_r($value); echo '<br>';
}
echo '<hr>';
//修改
//$data = [
//    'name' => '张小凡',
//    'position' => '悲剧男二号'
//];
//print_r($obj->update($data,'staff_id = 16'));

//删除
//echo $obj->delete('staff_id = 16');

运行实例 »

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


批改状态:合格

老师批语:总结的到位
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学