博主信息
博文 63
粉丝 1
评论 0
访问量 89594
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
写一个数据库操作类, 要求用到命名空间, 类继承, 后期绑定访问, 来实现数据表的简单访问
桃儿的博客
原创
1259人浏览过

写一个数据库操作类, 要求用到命名空间, 类继承, 后期绑定访问, 来实现数据表的简单访问

实例

<?php

namespace Test;
use PDO;

if (!interface_exists(__NAMESPACE__.'\iDbParam')) {
    interface iDbParam
    {
        const TYPE = 'mysql';
        const HOST = 'localhost';
        const USER_NAME = 'root';
        const PASSWORD = 'root';
        const DBNAME = 'php';
        public static function Connection ();
    }
}

class Connection implements namespace\iDbParam
{
    // 初始化连接参数
    private static $type = iDbParam::TYPE;
    private static $host = iDbParam::HOST;
    private static $userName = iDbParam::USER_NAME;
    private static $password = iDbParam::PASSWORD;
    private static $dbname = iDbParam::DBNAME;

    public static function Connection()
    {
        $dsn = self::$type.':host='.self::$host.';dbname='.self::$dbname;
        $user = self::$userName;
        $password = self::$password;
        $pdo = new PDO($dsn,$user,$password);
        return $pdo;
    }
}
//类的继承
class Db extends Connection
{
    //连接对象
    protected $pdo=null;
    //数据表
    protected $table='staff';
    //读取数据
    public function read($fields='*', $where='', $limit='0, 5')
    {
        // 设置查询条件
        $where = empty($where) ? '' : ' WHERE ' . $where;
        // 设置显示数量
        $limit = ' LIMIT ' . $limit;
        //以后连接数据库只需要这个静态方法即可,注意命名空间
        $link = Connection::Connection();

        // 预处理查询操作
        $sql = 'SELECT '.$fields.' FROM '.$this->table.$where.$limit;
        $stmt =  $link->prepare($sql);
        $stmt->execute();
//        $stmt->debugDumpParams();die;
        // 返回二维数组表示的查询结果集
        return $stmt->fetchAll(PDO::FETCH_ASSOC);

    }
    //获取信息
    public function getInfo()
    {
        foreach ($this->read('staff_id, name, position', 'age > 30','0,10') as $item) {
            print_r($item); echo '<br>';
        }
    }

}
// 实例化子类Db
$db=new Db();
$db->getInfo();
echo '<hr>';
echo Db::class,'<br>';
echo get_class($db),'<br>';
echo '<hr>';

namespace test2;
// 命名空间别名
//use code\inc\Class1 as Class1;
use code\inc\Class1;// 如果省略as,取\后面的名字
use code\inc\Class2;

//自动加载
//spl_autoload_register(function ($class){
//    include __DIR__ . '/code/inc/' .$class.'.php';
////    include __DIR__ . '/code/inc/Class1.php';
////    include __DIR__ . '/code/inc/Class2.php';
//});
include 'code/inc/Class1.php';
include 'code/inc/Class2.php';
$obj1=new Class1();
echo get_class($obj1).'<br>';

$obj2=new Class2();
echo get_class($obj2);
echo '<hr>';

运行实例 »

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


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学