当前位置:首页 > PHP教程 > 正文内容

php中static关键字的明白【php教程】,static,php

搜教程4年前 (2019-12-01)PHP教程173
函数内的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%

从上面的例子能够看出,static关键字影响了援用通报,纵然我们运用了&来试图转变变量$cache的值和地点,依然不影响doStuff()函数中的if推断;

而且,在doStuff()函数中,静态变量$cache并非不可转变的,$cache从null变成了%heavy database stuff or something%;

类中的静态要领和属性

● 我们把类当做生成对象的模板,把对象作为运动组件,实例化一个类,获得一个对象,然后接见这个对象的要领和属性。

比方 $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
非耽误静态绑定
耽误静态绑定

运用self关键字,指是当前类(A),因而猎取的也就是类A的aa()要领的返回值;

php5.3以后,我们能够运用static来猎取子类的aa()要领,它指的的被挪用的类。

总结:

static关键字的耽误绑定有许多用处,平常在项目中可边做边总结。

以上就是php中static关键字的明白的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/15711.html

标签: staticphp
分享给朋友:

“php中static关键字的明白【php教程】,static,php” 的相关文章

PHP中htmlentities()和htmlspecialchars()函数的区分【php教程】,htmlentities(),htmlspecialchars(),PHP

PHP中htmlentities()和htmlspecialchars()函数的区分【php教程】,htmlentities(),htmlspecialchars(),PHP

在PHP中htmlentities()和htmlspecialchars()函数都能够将字符转换为HTML字符编码,那末它们之间有什么不同之处?下面本篇文章就来简朴比较一下htmlentities()和htmlspecialchars()函数,让人人相识它们的区分是什么,愿望对人人有所协助。...

php勤学吗?php培训须要多长时间【php教程】,php,php培训

php勤学吗? PHP是一个异常轻易上手和盛行的服务器言语,虽然上手快,然则想要通晓却不轻易,假如要想做到通晓,就要经由大批的实践操纵才够到达肯定的水准了。 php培训须要多长时刻? 平常情况下PHP培训课程都在四到五个月的时刻,关于计算机专业相干专业的大学生而言有肯定的编程基础,在进修的...

PHP怎样猎取文件的mime范例?(代码示例)【php教程】,PHP,mime类型,mime_content_type()

PHP怎样猎取文件的mime范例?(代码示例)【php教程】,PHP,mime类型,mime_content_type()

在PHP中能够运用内置函数mime_content_type()函数来猎取文件的mime范例,下面本篇文章就来带人人相识一下mime_content_type()函数,看看mime_content_type()函数是怎样猎取文件的mime范例的。 me_content_type()函数...

PHP explode()函数用法详解【php教程】,PHP,explode()

PHP explode()函数用法详解【php教程】,PHP,explode()

本篇文章主要给人人引见PHP中explode()函数的用法详解,愿望对须要的朋侪有所协助! explode()是PHP中的内置函数,用于将字符串拆分为差别的字符串。explode()函数基于字符串分开符来拆分字符串,也就是说,它将字符串拆分为出自分开符的位置。此函数返回一个数组,个中包括经...

socket套接字详解(TCP与UDP)【php教程】,TCP,UDP,socket

socket套接字详解(TCP与UDP)【php教程】,TCP,UDP,socket

进修LInux,收集编程套接字是基础,也是新手进修的难点,经由历程本篇文章,读者能够经由历程图解、作者的代码完成思绪周全明白IP地点、端口号、TCP、UDP观点、socket API用法、模仿客户端/服务器通讯等。 Mark:浏览blog + 代码完成耗时18分钟 文章重点...

怎样运用PHP来完成罗列?【php教程】,php7,php

本篇文章给人人带来的内容是关于如何运用PHP来完成罗列?有一定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 罗列 在数学和计算机科学理论中,一个集的 罗列是列出某些有穷序列集的一切成员的顺序,或许是一种特定范例对象的计数。这两种范例常常(但不老是)堆叠。 罗列是一个被定...