Blogger Information
Blog 27
fans 1
comment 0
visits 22455
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
抽象类与接口实战-2019年10月9日
思杰的博客
Original
658 people have browsed it
  1. 写一个抽象类并继承它, 内容自定

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


课堂笔记:

类的自动加载技术,就是通过php中的一个方法spl_autoload_register()

实例

spl_autoload_register(function ($className){
    $path = str_replace('\\',DIRECTORY_SEPARATOR,$className);
    $path =  __DIR__.'/'.$path.'.php';
    if(file_exists($path)) include $path;
});

echo \inc\Test1::get();
echo '<br>';
echo \inc\Test2::get();
echo '<br>';
echo \inc\Test3::get();
echo '<br>';
echo \inc\Test4::get();
echo '<br>';

运行实例 »

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

11.png


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

        抽象类和方法就是在前面加上关键字abstract,抽象方法就是不用具体实现的方法,只有一个类中有一个抽象方法,那么该类就需要改成抽象类。抽象方法在子类中必须要实现。父类的构造方法在子类中不会被继承,所以要重新写

实例

<?php
abstract class Person2{
    protected $name;
    public function __construct($name = 'peter zhu')
    {
        $this->name = $name;
    }

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

    abstract public function setName($value);
}

class Person3 extends Person2{

    public function __construct($name)
    {
        parent::__construct($name);
    }

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

$person = new Person3('猪哥');
echo 'php中文网的创始人是'.$person->getName();
echo '<br>';
$person->setName('朱老师');
echo 'php中文网的讲师是'.$person->getName();

运行实例 »

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

22.png


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

类是对象的模版,接口就是类的模版,接口是用来定义里面的方法和标准,让类去具体实现他。用implements去实现他。

实例

<?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{
    //数据库连接对象
    protected $pdo = null;

    //数据表
    protected $table;

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

    //增加数据
    public function create($data){
        $fields = ' (name,age,sex,position,mobile,hiredate) ';

        $values = ' (:name,:age,:sex,:position,:mobile,:hiredate)';

        $sql = 'insert into '.$this->table.$fields.' values '.$values;
//        die($sql);
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);
        return [
            'count'=>$stmt->rowCount(),
        'id'=>$this->pdo->lastInsertId()
        ];
    }

    //读取数据
    public function read($fields='*',$where='',$limit='6'){

        //设置条件
        $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;
        echo $sql;
        $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=huangsijie';
$user ='root';
$password = 'root';
$db = new Db($dsn,$user,$password);

foreach ($db->read()as $item ){
    print_r($item);
    echo '<br>';
}

//新增数据
//$data = [
//    'name'=>'郭大侠',
//    'age'=>29,
//    'sex'=>1,
//    'position'=>'金刀驸马',
//    'mobile'=>'1888888888',
//    'hiredate'=>123123
//];
//
//$res = $db->create($data);
//echo '成功的新增了'.$res['count'].'条记录,新增的主键ID是'.$res['id'];
//echo '<br>';
//echo '<br>';

//更新数据
//
//$data=[
//    'age'=>40,
//    'position'=>'抗金英雄'
//];
//$where = 'staff_id = 6';
//echo '成功更新了'.$db->update($data,$where).'条记录';

//删除数据
$where = 'staff_id = 6';
echo '成功删除了'.$db->delete($where).'条记录';

运行实例 »

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

主要是更新数据那里,需要使用array_keys($data)这个函数去获取数组的键值,还有就是条件右边的逗号用rtrim函数去掉。

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