扫码关注官方订阅号
php静态方法和非静态方法分别什么时候使用?
非静态方法经常用,但什么时候该使用非静态方法呢?
人生最曼妙的风景,竟是内心的淡定与从容!
类的静态方法最大的特点就是类不经过实例化就可以直接调用,注意静态方法不能访问类的非静态成员变量和方法.这种感觉是什么,其实就是类似我们在结构化编程中直接调用函数.比如下面两种写法是等价的:
//普通函数 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...
静态方法的优点是什么?
1、生命周期和程序一样 2、不需要初始化
比如你写了一个耦合很低的函数Tool,这个时候你可以封装一个建议的静态方法sendMail。那么你调用就很方便了:
Tool::sendMail()
Google 百度
这种问题没必要在这里问
我觉得全部使用magic方法写成静态调用的样子你就不纠结了。。。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
类的静态方法最大的特点就是类不经过实例化就可以直接调用,注意静态方法不能访问类的非静态成员变量和方法.
这种感觉是什么,其实就是类似我们在结构化编程中直接调用函数.
比如下面两种写法是等价的:
很好理解,能够拿起来就用的,就用静态实现,比如工具类。
你想用锤子,不可能先拿个锤子的模具制造出锤子之后再用吧,就是这么个意思。
http://www.php100.com/html/we...
静态方法的优点是什么?
比如你写了一个耦合很低的函数Tool,这个时候你可以封装一个建议的静态方法sendMail。
那么你调用就很方便了:
Google 百度
这种问题没必要在这里问
我觉得全部使用magic方法写成静态调用的样子你就不纠结了。。。