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

发布于 2016-11-27 15:18:25 字数 149 浏览 1262 评论 4

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(4

清晨说ぺ晚安 2017-08-25 16:34:19

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

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

浮生未歇 2017-06-20 10:30:39

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

<?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 02:47:04

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

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文