博主信息
博文 71
粉丝 1
评论 1
访问量 102146
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
用静态成员定义数据库操作类
小威的博客
原创
910人浏览过
  • 使用静态成员,定义数据库操作类


 * 类中的静态成员:静态属性与静态方法

 * 作用域: 静态成员属于类所有,必须用类进行调用,不能使用对象调用

 * 该类的静态成员,被该类的所有实例对象所共享

 * 静态成员的引用: 在类中使用 self::, 在类外部使用 类名::

 * 类成员静态化,是面向对象编程的一种趋势,有很多的模拟手段,请格外重视

 * 类成中静态化使用关键字:static来实现

 * 静态技术的另一个使用场景是: 静态延迟绑定技术,后面我们会详细学习


实例

<?php

//使用静态成员,定义数据库操作类

class Db
{
    public static $dbType = 'MySQL';
    protected static $db = null;

            
    public function __construct($user,$password,$database,$host='localhost',$port=3306)
    {
        self::$db = mysqli_connect($host, $user, $password, $database, $port);
        if (mysqli_connect_errno(self::$db)) {
            exit('连接失败:'.mysqli_connect_error(self::$db));
        }
    }
    
    //获取所有满足条件的记录:这是一个静态方法,该方法中只允许使用静态属性,不允许使用$this
    //想想这是为什么?对,静态成员属于所有对象,与具体的对象无关,所以不能使用$this伪变量
    public static function select($table,$fields='*',$where='',$order='')
    {
        $sql = "SELECT {$fields} FROM {$table} {$where} {$order};";
        $res = mysqli_query(self::$db, $sql);
        $rows = [];
        while ($row = mysqli_fetch_assoc($res)) {
            $rows[] = $row;
        }
        return $rows;
    }
    
    //数据库连接查询器
    public static function getDb()
    {
        //如果初始化成功则返回mysqli连接对象,否则返回null
        return self::$db ?: null;
    }
}

运行实例 »

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

  • 连接测试

实例

<?php

require './class/Db.php';

$db = new Db('root','root','php');

//在类外部访问类静态方法select,可以直接使用类的实例引用
$table = 'staff';
//echo '<pre>'.print_r($db->select($table),true).'</pre>';
//给出条件与排序规则
$fields = 'name, age';
$where = 'WHERE age<25 ';
$order = 'ORDER BY age DESC';
//带上条件进行查询
//echo '<pre>'.print_r($db->select('staff',$fields,$where,$order),true).'</pre>';

//但强烈推荐在类的外部,使用类名来引用类中的静态成员
echo '<pre>'.print_r(Db::select($table,$fields,$where,$order),true).'</pre>';

//在类外部访问类中的静态属性,因为要访问的是受保护的,所以通过查询器来访问
var_dump(Db::getDb()) ;

//类中的公共静态属性,可以直接用类进行访问,不过,静态属性名必须要加$
echo '数据库的类型是: '.Db::$dbType;

运行实例 »

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

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

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

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