1. 写一个抽象类并继承它, 内容自定
abstract: 定义抽象方法/抽象类
类中只要有一个抽象方法, 该类就应该声明为抽象类
抽象类只能被继承,不能实例化,并且抽象方法必须在子类实现
实现抽象方法的子类方法可见性不能低于抽象方法原定义
抽象方法是public, 子类方法只能是public
抽象方法是protected, 子类方法只能是protected/public
****
类中只要有一个成员设置为抽象,该类就必须设置抽象类
一个类一旦被设置为抽象类,就具备了二个特点:
不能实例化
类中抽象方法,在子类中必须实现(全部),就是子类必须有父类的抽象方法
注意:
属性设置为抽象无意义, 抽象仅针对方法,类
子类的成员可见性必须等于或高于所继承的抽象类成员可见性,例如抽象类是proteced,子类可以是protected/pulic
子类重写的抽象方法可见性,究竟用protected/pulic, 要看这个子类是最终被客户端访问,如果是就public,如果不是protected
级别:
public 级别最高: A
protected 级别中等: B
private 级别最低: C
2.模仿课堂案例,写一个接口实现CURD操作, 并扩展一到二个方法
实例
<?php namespace _1015; 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='task') { $this->pdo= new \PDO($dsn,$user,$pwd); $this->table=$table; } // 增加数据 public function create($data) { //字段列表 $fields = ' (name,age,sex,position,mobile,hiredate,display) '; //值列表 $values = ' (:name, :age, :sex, :position, :mobile, :hiredate,:display)'; //创建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='display=1',$limit='6,13') { //设置条件 $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=test'; $user = 'root'; $pwd = 'root'; $db= new DB($dsn ,$user , $pwd); // foreach ($db->read() as $item ) { // \print_r($item); echo '<br>'; // } echo '<hr>'; //增加数据 // $data = [ // 'name' =>'郭靖', // 'age' =>999, // 'sex' =>1, // 'position' =>'射雕英雄', // 'mobile' =>88888888888, // 'hiredate' =>\time(), // 'display' =>1 // ]; // $res = $db->create($data); // echo '<span style="color:#eb6100">成功增加了:' . $res['count'] .'条记录,'.'</span>'. '<span style="color:#0f7884">新增的主键ID是:'.$res['id'].'</span>'; // echo '<br><span style="color:#662a00">' ; // foreach ($db->read() as $item ) { // \print_r ($item); echo '<br>'; // } // echo '</span>'; // 更新数据 // $data = [ // 'age' =>9999, // 'position' =>'抗金英雄' // ]; // $where = 'task_id = 80'; // echo '<br>'; // echo '<span style="color:#eb6100">成功更新了:' . $db->update($data,$where) .'条记录,'.'</span>'; // echo '<br><span style="color:#662a00">' ; // foreach ($db->read() as $item ) { // \print_r ($item); echo '<br>'; // } // echo '</span>'; // 删除 // $where = 'task_id=11'; // echo '成功删除了:' . $db->delete($where) . ' 条记录'; $data = [ 'display' =>0 ]; $where = 'position = \'射雕英雄\''; echo '成功清空了:' . $db->update($data,$where). ' 条记录'; echo '<br>'; echo '<br><span style="color:red">' ; foreach ($db->read() as $item ) { \print_r ($item); echo '<br>'; } echo '</span>';
运行实例 »
点击 "运行实例" 按钮查看在线实例