博客列表 >命名空间数据库操作类----2019年6月19日22:30分

命名空间数据库操作类----2019年6月19日22:30分

白守的博客
白守的博客原创
2019年06月30日 14:10:02620浏览

本篇文章使用了,以下知识点

1.命名空间

2.类继承

3.后期绑定

4.接口


遗留问题

1本篇文章有一个干扰了我很久的难点,这个问题现在都还没有解决

问题在38行,就是为什么self是访问db类里面的config,而不是link里面的重写的config类

我在下面调用的时候也是使用link的类

2.接口继承的不需要使用 $this 吗?

42行        

// 预处理sql语句,可以防止sql注入

$stmt = $pdo->prepare($sql);

$stmt = $this->$pdo->prepare($sql);

// 测试发现好像加不加$this都可以访问



实例

<?php

namespace db;
use PDO;



$sql ='SELECT * FROM `staff` LIMIT :num OFFSET :offset';


// 接口
interface iCurd
{
    // 查询数据
     public function cx();
}

// 接口继承
class Db implements iCurd
{
    // 使用connect来调用config
    public static function connect()
    {
        return static::config();
    }
    // 被connect调用的config数据库连接静态方法
    public static function config()
    {
        return new PDO('mysql:host=127.0.0.1;dbname=php','root','123456');

    }

    // 查询
    public function cx()
    {
        // 在查询方法里面我也使用了config方法,不知道为什么不添加这个查询方法用不了,我怀疑是没有连接数据库问题,但是我又想不出其他方法解决
        // 这里为什么是访问Db类里面的config方法,而不是访问link里面的config方法?
        $pdo =  self::config();
        // sql查询语句
        $sql = 'SELECT * FROM `staff` LIMIT 5';
        // 预处理sql语句,可以防止sql注入
        $stmt = $pdo->prepare($sql);
        // 执行sql语句
        $stmt->execute();
        // echo 'aegawg';   
        // 返回二维数组表示的查询结果集
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

}

// Db的继承子类
class link extends Db
{
    // 静态方法,重写config
    public static function config()
    {
        return new PDO('mysql:host=localhost;dbname=php','root','root');
    }
}



// var_dump($pdo);
$d = new link();
// echo $d();
// var_dump($d);

// 这个是直接使用了类里面的cx方法
foreach ($d->cx() as $it){
    echo "<li>名字:{$it['name']}--年龄:{$it['age']}----职位:{$it['position']}</li>";
}
echo '<hr>';

$pdo = link::connect();
// 使用$pdo里面的链接参数,然后在类外面设置sql语句
// 第二个遍历方法
$staffs = $pdo->query('SELECT * FROM `staff` LIMIT 5');
foreach ($staffs as $staff) {
    print_r($staff); echo '<br>';
}

运行实例 »

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议