php静态方法和非静态方法分别什么时候使用?
黄舟
黄舟 2017-04-11 10:43:47
[PHP讨论组]

php静态方法和非静态方法分别什么时候使用?

非静态方法经常用,但什么时候该使用非静态方法呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(6)
高洛峰

类的静态方法最大的特点就是类不经过实例化就可以直接调用,注意静态方法不能访问类的非静态成员变量和方法.
这种感觉是什么,其实就是类似我们在结构化编程中直接调用函数.
比如下面两种写法是等价的:

//普通函数
function db() {
    static $db; //静态变量避免重复连接
    if ($db) {
        return $db;
    } else {
        $db = new mysqli('127.0.0.1','root','ec5a23efb5cae6d4292b','mysql',3306);
        return $db;
    }
}
//因为静态变量,两次调用函数只会产生一次new mysqli.
var_export(db()->query('show tables')->fetch_all());
var_export(db()->query('show tables')->fetch_all());

//静态方法
class db {
    private static $db;
    public static function get_db() {
        if(self::$db) {
            return self::$db;
        } else {
            self::$db = new mysqli('127.0.0.1','root','pass','mysql',3306);
            return self::$db;
        }
    }
}
var_export(db::get_db()->query('show tables')->fetch_all());
var_export(db::get_db()->query('show tables')->fetch_all());
高洛峰

很好理解,能够拿起来就用的,就用静态实现,比如工具类。

你想用锤子,不可能先拿个锤子的模具制造出锤子之后再用吧,就是这么个意思。

阿神

http://www.php100.com/html/we...

ringa_lee

静态方法的优点是什么?

1、生命周期和程序一样
2、不需要初始化

比如你写了一个耦合很低的函数Tool,这个时候你可以封装一个建议的静态方法sendMail。
那么你调用就很方便了:

Tool::sendMail()
高洛峰

Google 百度

这种问题没必要在这里问

天蓬老师

我觉得全部使用magic方法写成静态调用的样子你就不纠结了。。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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