Blogger Information
Blog 28
fans 0
comment 0
visits 19653
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1009 抽象类,接口应用 20191009 2000-2200
没有人的夏天的博客
Original
643 people have browsed it

1,抽象类应用

2,接口应用


1,抽象类应用

//抽象类 是指 类内部 定义的方法没有具体内容 只有方法名称 和 方法所需要的参数
//抽象类 定义符  abstract   在类定义符 class 和方法定义符 public funaction 前使用,进行声明抽象定义
//抽象类 用于规范 方法名称和参数的数量, 对子类继承该方法进行名称和参数限制
//抽象类 通过在不同的子类中调用重写方法 达到最终使用效果
//抽象类 内的方法都为抽象方法时, 即为接口,接口 用inetrface 定义, 替换 abstract class  方法不用额外声明抽象方法
//抽象类的子类,继承所有抽象方法,并必须重写所有抽象方法,
//抽象类方法的可见属性,puclic  protected 也同时被子类继承, 子类的声明 不能小于父类的声明

实例

<?php
namespace _100901;
//定义一个抽象类在 class前加 abstract
abstract class Postion
{
    //抽象类方法定义时不写{},定义前写 abstract,名称后直接用 ;分号结束
    abstract public function PostionList($name,$name1);
}

//定义一个从属抽象类的子类
class TPostion extends Postion
{
    //子类中的方法必须与父类中的抽象方法参数一致
    public function PostionList($name,$name1)
    {
       return $name.$name1.' 是[php讲师,Mysql讲师,高级讲师]';
    }
}
//new一个子类
$list = new TPostion();
//输出子类中的方法,子类方法中的叁数对比父类中的方法参数 可以多但不可以少,多出的参数不识别
echo $list->PostionList('jack','wang','cn');

// 输出结果 : jackwang 是[php讲师,Mysql讲师,高级讲师]

运行实例 »

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


——————————————————————————————

2,接口应用

// 通过接口 实现 数据读取 操作

// 定义接口,接口内 只有 接口常量和接口方法

// 接口常量 必须赋值,用const 定义,接口方法为抽象方法只有名称和参数限制

实例  定义一个含有常量和一个含有方法的接口

<?php
namespace _100902;
interface idb
{
    const DNS = 'mysql:host=127.0.0.1;dbname=app.io';
    const USER= 'root';
    const PASSWORD = 'root123456';
}
interface idbinfo
{
    public function table($tablename);
    public function field($fieldname);
    public function where($wherename);
    public function limit($limitname);
    public function orderby($orderbyname);


    public function select();
    // public function insert($name,$data);
    // public function update($name);
    // public function delete($name);
}

运行实例 »

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


// 定义数据操作方法,从属 接口 idbinfo
// 提供数据源,和 数据操作  

实例

class Dbinfo implements idbinfo
{
    //定义构造方法,接收 接口中的数据参数,连接数据库
    public function __construct($name)
    {
        $this->pdo = $name;
    }
    //设置表名方法
    public function table($tablename)
    {
        // 给table属性赋值
        $this->table = $tablename;
        // 返回对象
        return $this;
    }
    //设置字段名方法
    public function field($fieldname)
    {
        // 给fielde属性赋值,没有传值为所有字段,有传值进行赋值
        $this->field = empty($fieldname) ? '*' : $fieldname;
        // 返回对象
        return $this;
    }
    //设置条件方法
    public function where($wherename)
    {
        // 给where属性赋值,没有传值为空,有传值进行赋值
        $this->where = $wherename == '' ? '' : ' WHERE ' . $wherename;
        // 返回对象
        return $this;
    }
    //设置数量方法
    public function limit($limitname)
    {
        // 给limit属性赋值,没有传值为空,有传值进行赋值
        $this->limit = $limitname == '' ? '' : ' LIMIT ' . $limitname;
        // 返回对象
        return $this;
    }
    //设置排序方法
    public function orderby($orderbyname)
    {
        // 给orderby属性赋值,没有传值为空,有传值进行赋值
        $this->orderby = $orderbyname == '' ? '' : ' ORDER BY ' . $orderbyname;
        // 返回对象
        return $this;
    }

    //设置mysql语句拼接
    public function select()
    {
        $sql = 'SELECT '
        . $this->field 
        . ' FROM ' 
        . $this->table 
        . $this->where
        . $this->orderby
        . $this->limit;     
        $stmt = $this->pdo->prepare($sql);
        echo '<hr>';
        $stmt->execute();
        // 向外返回结果
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }
}


运行实例 »

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



// 控制数据  ,数据连接DB 类, 数据返回 Dbop 类  从属 idb接口

实例

class DB implements idb
{
    // 静态属性初始化
    protected static $pdo = '';

    // 连接数据库函数
    public static function linkdb()
    {
        // 类中的静态属性赋值 为 pod 对象,连接接口中的常量值
        return self::$pdo = new \PDO(idb::DNS, idb::USER, idb::PASSWORD);
    }

    public static function __callStatic($name, $arguments)
    {
        // 把pdo信息传到dbinfo类中,开启一个连接对象
        $dboper = new Dbinfo(self::linkdb());
        // 调用查询对象$query中的对应的方法
        return call_user_func_array([$dboper, $name], $arguments);
    }
}


// 控制返回 从属 db 父类
class Dbop extends Db
{
    //静态方法接收参数, 链式调用 DB类中的数据库开启
    public static function find($tablename,$fieldname,$wherename,$limitname,$orderbyname) 
    {
        return DB::table($tablename)
        ->field($fieldname)
        ->where($wherename)
        ->limit($limitname)
        ->orderby($orderbyname)
        ->select();
    }
}

运行实例 »

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


输出结果:  查找 movies表中  cate_id=1 的前2条数据,mov_id,name,cate_id三个字段,按mov_id 正序排列

实例

print_r(Dbop::find('movies','mov_id,name,cate_id','cate_id=1',2,'mov_id ASC'));

运行实例 »

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


Array ( [0] => Array ( [mov_id] => 1 [name] => 倚天屠龙记 [cate_id] => 1 ) [1] => Array ( [mov_id] => 2 [name] => 都挺好 [cate_id] => 1 ) )



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