PHP-关于PHP中static变量的疑问?

PHP-关于PHP中static变量的疑问?

清晨说ぺ晚安 发布于 2016-11-27 字数 251 浏览 1166 回复 4

我在看很多的开发框架中,有一些框架中很多类方法、类变成员都加上了static,我想知道这样有什么好处和坏处,因为我感觉写太多了static不好。

补充一下:我知道static的用处,我想问的是用了很多的static对框架的好处与坏处,不是static关键字的用处是什么

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

清晨说ぺ晚安 2017-08-25 4 楼

如果项目支持全局的class 自动加载, 那么你在调用一个静态方法的时候, 就可以自动导入文件. 如果你写成函数, 则需要预先加载这个文件.

可以不实例化就使用该方法,写起来方便,且实例化通常会初始化一些类的属性,这是需要消耗资源的.
方法归按类归纳, 更集中
可以实现某些模式, 如单例

浮生未歇 2017-06-20 3 楼

举一个很长见例子:单例模式

<?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永远只有一个实例

清晨说ぺ晚安 2017-03-11 2 楼

也是权衡利弊,有好有坏,除非是很大项目上才会斤斤计较(当然我不是我们编码就不斤斤计较,哈,程序员的良好作风 :D ).

1 权衡下,类似空间换时间,时间换空间的那种公式,是存在内存里直接访问得到的利益比每次初始化的利益大点。
2 每个东西都有存在的特性,类似不同植物存在就有不同的用处,之前我看到的类似这样的代码,使用static,觉得很精巧,分享下:

function TestFunc($inKey)
 {
     static $someConfig ; 
     if(!isset($someConfig[$inKey]))
      $someConfig[$inKey] = doSomeInit();
     return  $someConfig;
 }
瑾兮 2016-12-02 1 楼

static成员变量在代码中只有一份, 多半是为了节省空间或者特殊作用
static成员函数其实可以写成全局的, 一般是功能函数,为了封装或者不产生对象就可以使用