1. 写一个抽象类并继承它, 内容自定
实例
<?php namespace _1009; class Person1 { protected $name; public function __construct($name = '莫先生') { $this->name = $name; } public function getName() { return $this->name; } public function setName($value) { $this->name = $value; } } $person = new Person1(); echo '我的名字:' , $person->getName(), '<br>'; $person->setName('朱老师'); echo '我的姓名:' , $person->getName(), '<br>'; abstract class Person2 { // 抽象属性 protected $name; public function __construct($name = '莫先生') { $this->name = $name; } public function getName() { return $this->name; } // 签名 abstract public function setName($value); } // 抽象类不能实例化,不能new,只能继承 在子类中实现 class Stu extends Person2 { // 构造方法不会继承 public function __construct($name) { parent::__construct($name); } public function setName($value) { $this->name = $value; } } echo '<hr>'; $stu = new Stu('毛先生'); echo '我就是创始人: ' . $stu->getName(). '<br>'; $stu->setName('朱先生'); echo '你就是救世主:' . $stu->getName(). '<br>'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
2. 模仿课堂案例,写一个接口实现CURD操作, 并扩展一到二个方法
实例
<?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语句 $sql = 'INSERT INTO '.$this->table.$fields.' VALUES '.$values; // 预处理执行新增操作 $stmt = $this->pdo->prepare($sql); $stmt->execute($data); // 返回新增数量,新增记录的ID组成的数组 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 = '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 = ''; // 遍历键名表示的字段列表,拼装预处理需要的sql语句,注意占符符的表示 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=php'; $user = 'root'; $password = 'root'; $db = new Db($dsn, $user, $password); // 遍历 foreach ($db->read() as $item){ print_r($item);echo '<br>'; } echo '<hr>'; // 新增数据 //$data = [ // 'name'=>'郭靖', // 'age'=>30, // 'sex'=>1, // 'position'=>'金刀驸马', // 'mobile'=>'13666668888', // 'hiredate'=>time() //]; //$res = $db->create($data); //echo '成功新增'.$res['count'].'条记录,最新记录的主键ID是: '.$res['id']; echo '<hr>'; //// 更新 //$data = [ // 'age' => 35, // 'position' => '抗金英雄' //]; // //$where = 'staff_id = 13'; //echo '成功更新了:' . $db->update($data, $where). ' 条记录'; //echo '<hr>'; $where = 'staff_id = 13'; echo '成功删除了:' .$db->delete($where). '条记录'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例