百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> php中对static关键字的了解
分享文章到:

php中对static关键字的了解

发布时间:09/01 来源:未知 浏览: 关键词:

php中static关键字的懂得

static静态变量的懂得

静态变量 类型说明符是static。

静态变量属于静态储备方式,其储备空间为内存中的静态数据区(在 静态储备区内分配储备单元),该区域中的数据在整个程序的运转期间不断占用这些储备空间(在程序整个运转期间都不开释),也可以认为是其内存地址不变,直 到整个程序运转完毕(相反,而auto主动变量,即动态部分变量,属于动态储备类别,占动态储备空间,函数调取完毕后即开释)。静态变量虽在程序的整个施行历程中始终存在,但是在它作用域之外不克不及使用。

别的,属于静态储备方式的量不必然就是静态变量。 例如:外部变量虽属于静态储备方式,但不必然是静态变量,必需由 static加以定义后才能成为静态外部变量,或称静态全局变量。

所有的全局变量都是静态变量,而部分变量只要定义时加上类型润饰符static,才为部分静态变量。

静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的一样申请。

静态变量并不是说其就不克不及改动值,不克不及改动值的量叫常量。 其具有的值是可变的 ,并且它会保持最新的值。说其静态,是由于它不会随着函数的调取和退出而发生转变。即上次调取函数的时候,假如我们给静态变量给予某个值的话,下次函数调取时,这个值保持不变。

函数内静态变量

static usage

1,请看下面这个例子:

function doStuff(&$cache) {
    static $cache = null;
    if ($cache === null) {
        echo $cache = '%heavy database stuff or something%';
    }
}
$cache = 'not null';
doStuff($cache);
// Output
%heavy database stuff or something%

并且,在doStuff()函数中,静态变量$cache并不是不成改动的,$cache从null变成了%heavy database stuff or something%;从上面的例子可以看出,static关键字影响了援用传递,即便我们使用了&来试图改动变量$cache的值和地址,依然不影响doStuff()函数中的if推断;

类中的静态办法和属性

● 我们把类当做生成对象的模板,把对象作为活动组件,实例化一个类,得到一个对象,然后拜访这个对象的办法和属性。

例如 $foo = new Foo(); $foo就是类Foo实例化后的对象。

● 静态办法是以类作为作用域的函数,我们可以不经实例化,直接拜访静态办法.

例如:

class Foo()
{
    public static function a(){}
}
// 拜访a();
Foo::a();

● 在当前类(非子类)中拜访静态办法或属性使用self::method(),note: self可以调取父类的静态办法和属性;● 静态办法不克不及拜访这个类中的一般属性和办法,由于那些属性和办法属于一个对象,而静态办法和属性又称为类变量的办法。

延迟静态绑定

先看个例子

header("Content-type: text/html; charset=utf-8");
class A
{
    public static function aa()
    {
        echo "非延迟静态绑定<br>";
    }
     
    public static function bb()
    {
        echo self::aa();  // Output 非延迟静态绑定
        echo static::aa(); // Output 延迟静态绑定
    }
}
class B extends A
{
    public static function aa()
    {
        echo "延迟静态绑定";
    }
     
    public static function cc()
    {
        echo self::bb();
    }
}
B::bb();
// Output
非延迟静态绑定
延迟静态绑定

php5.3之后,我们可以使用static来猎取子类的aa()办法,它指的的被调取的类。使用self关键字,指是当前类(A),因此猎取的也就是类A的aa()办法的返回值;

总结:

static关键字的延迟绑定有许多用处,一样在项目中可边做边总结。

更多PHP相关知识,请拜访PHP中文网!

以上就是php中对static关键字的懂得的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板