PHP-关于PHP中static变量的疑问?
我在看很多的开发框架中,有一些框架中很多类方法、类变成员都加上了static,我想知道这样有什么好处和坏处,因为我感觉写太多了static不好。
补充一下:我知道static的用处,我想问的是用了很多的static对框架的好处与坏处,不是static关键字的用处是什么
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果项目支持全局的class 自动加载, 那么你在调用一个静态方法的时候, 就可以自动导入文件. 如果你写成函数, 则需要预先加载这个文件.
可以不实例化就使用该方法,写起来方便,且实例化通常会初始化一些类的属性,这是需要消耗资源的.
方法归按类归纳, 更集中
可以实现某些模式, 如单例
举一个很长见例子:单例模式
<?php
class SingleInstanceClass {
private static $_instance;
private function __construct()
{
}
public function instance()
{
if (self::$_instance == NULL)
self::$_instance = new SingleInstanceClass();
return self::$_instance;
}
}
构造函数是私有的,也就是说这个类不能再外部被实例化
而只有通过静态方法instance()才能获取到这个类的实例。
而在instance()中通过判$_instance是否为空来确定是否实例化SingleInstanceClass类,同时也保障了SingleInstanceClass永远只有一个实例
也是权衡利弊,有好有坏,除非是很大项目上才会斤斤计较(当然我不是我们编码就不斤斤计较,哈,程序员的良好作风 :D ).
1 权衡下,类似空间换时间,时间换空间的那种公式,是存在内存里直接访问得到的利益比每次初始化的利益大点。
2 每个东西都有存在的特性,类似不同植物存在就有不同的用处,之前我看到的类似这样的代码,使用static,觉得很精巧,分享下:
static成员变量在代码中只有一份, 多半是为了节省空间或者特殊作用
static成员函数其实可以写成全局的, 一般是功能函数,为了封装或者不产生对象就可以使用