批改状态:合格
老师批语:积小胜为大胜, 通过一个个小成功, 最终成功
<?phpabstract class User{// 类中成员属性和方法尽量用protected和private声明// 成员属性protected $name = '小殇';// 方法protected function write(){return "姓名:{$this->name}";}// 声明一个抽象方法(在子类中必须实现,不然会报错)abstract protected function write2();}// 子类:实现,使用抽象类中的属性和方法class Rob extends User{public function write1(){return parent::write();}// 实现抽象类中的抽象方法public function write2(){return "你可以叫我{$this->name}";}}$rob = new Rob;echo $rob->write1(), '<hr>';echo $rob->write2();

抽象方法在实现类中必须实现

<?phpinterface iUser{// 接口常量const LOCATION = '江西';// 抽象方法public function write();}// 接口的实现类(关键字implements)class User implements iUser{protected $name = '小殇';// 实现接口中的抽象方法public function write(){return "姓名:{$this->name},所在地:" . iUser::LOCATION;}}$user = new User;echo $user->write();

<?php// 接口1interface iUser1{const NAME = '小殇';}// 接口2interface iUser2{const LOCATION = '江西';}// 接口3(继承接口2)interface iUser3 extends iUser2{public function write();}// 接口实现类(实现接口1和接口3)class User implements iUser3, iUser1{public function write(){return "姓名:" . self::NAME . ",所在地:" . self::LOCATION;}}$user = new User;echo $user->write();

<?php// 接口// 引入PDO参数的配置文件require __DIR__ . '/../0720/config.php';interface iDbBase{// 新增public function insert($db, $date = []);// 查询public function select($db, $optoins);// 更新public function update($db, $options = []);// 删除public function delete($db, $where);}// 用抽象类实现接口abstract class aDb implements iDbBase{// 实现类实现接口方法,操作数据库有一些公共操作可以写在中间的抽象类中实现它// 比如实现数据表各个操作都需要连接数据库可以在抽象类中实现protected static $db = null;public static function connect(){if (is_null(self::$db)) {self::$db = new PDO(DB_DSN, DB_USER, DB_PSD);}return self::$db;}}// 最后的工作类(实现类)class DB extends aDb{// 实现接口中的方法// 新增操作public function insert($db, $date = []){$stmt = $db->prepare("INSERT `apple` SET `username`=?,`password`=?,`sex`=?");if ($stmt->execute([$date[0], $date[1], $date[2]])) {printf("新增成功 %s 条数据,新增的主键id= %d<hr>", $stmt->rowCount(), $db->LastInsertId());}}// 更新操作public function update($db, $opctions = []){$stmt = $db->prepare("UPDATE `apple` SET `username`=?,`password`=?,`sex`=? WHERE `id`=?");if ($stmt->execute([$opctions[0], $opctions[1], $opctions[2], $opctions[3]])) {printf("更新成功 %s 条数据<hr>", $stmt->rowCount());}}// 查询操作public function select($db, $opctions){$stmt = $db->prepare("SELECT `id`,`username`,`sex` FROM `apple` WHERE `id`>?");$stmt->execute([$opctions]);foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $user) {vprintf("序号:%d,姓名:%s,性别:%s<br>", $user);}}// 删除操作public function delete($db, $where){$stmt = $db->prepare("DELETE FROM `apple` WHERE `id`=?");if ($stmt->execute([$where])) {printf("删除成功 %s 条数据<hr>", $stmt->rowCount());}}}// 调用$a = new DB;// 插入操作$a->insert(DB::connect(), ['小美人', sha1(888), '女']);// 更新操作$a->update(DB::connect(), ['小星', sha1(999), '男', 28]);// 删除操作$a->delete(DB::connect(), 20);// 查询操作$a->select(DB::connect(), 20);

实现类中的方法也可写作静态方法通过类名调用
<?phptrait tDemo{// 1.常规成员protected $name = '小殇';public function getName(){return "姓名:{$this->name}";}// 2.静态成员protected static $motto = '好好学习,天天向上';public function getMotto(){return "人生格言:" . self::$motto;}// 3.抽象成员public static $like;abstract public function getLike();}// trait要在实现类中使用class User{// 引用trait(如果trait内有抽象方法,那么在实现类中必须实现)use tDemo;public function getLike(){return self::$like;}}$user = new User;// 抽象成员赋值User::$like = '打游戏';echo '姓名:' . $user->getName() . '爱好:' . $user->getLike() . '人生格言:' . $user->getMotto();

1.对于抽象类和接口有了一定的认识
2.接口实现数据库操作时碰到挺多问题的,不过最后解决时心里挺有成就感的
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号