当前位置:首页 > CN2资讯 > 正文内容

php静态php 伪静态

2天前CN2资讯


php静态

一、总结

一句话总结:

静态变量就是常驻内存,静态方法就是可以直接通过类名调用

 

 

二、php静态

 

php 提供了一个 static 关键字,这个关键字用来标识静态方法或者静态变量。简单一点来说,静态变量就是php脚本一开始运行的时候,马上就存储到内存里面的变量,在这个php脚本执行期间,这个变量一直存在,其中一个地方修改了,下面所有的地方调用的时候,都是修改过后的值。

而class里面的静态变量和静态方法也是一样的,在我们创建一个class以后。里面的静态方法不需要new一个以后再引用,而是以classname加::双冒号这种形式直接使用,下面我们看一个小例子:

class man {

    public static $height; //静态变量

    public $weight;

    public static $num=0;//静态变量


    public  function setHeight($height){

        self::$height = $height;

    }

    public static function getData(){ //静态方法

        echo "height is :".self::$height;

        echo "<br>";

    }

}

man::getData();

这里我们使用man::getData()的方式直接调用man里面的getData方法,运行发现会输出height is,因为我们还没有设置高度。所以没有输出数字。我们还可以发现,静态变量的调用方法是这个样子的:self::$height;使用self加双冒号,然后我们发现变量名前面又有了$美元符号。这是和非静态变量不同的地方,因为静态变量页面创建的时候就存在了,不会被new,所以使用this也是不对的。

为了验证一下静态变量的全局性,我们先看一个小例子:

class man {

    public static $height;

    public $weight;

    public static $num=0;


    public  function setHeight($height){

        self::$height = $height;

    }

    public static function getData(){

        echo "height is :".self::$height;

        echo "<br>";

    }

}

$one = new man();

$one->setHeight(180);

man::getData();

这里我们新创建了一个man对象$one,然后设置了身高。修改了man的静态变量。这样我们直接使用静态方法getData的时候,就会正常的输出身高了。这里需要特别注意的是,静态方法里面不能使用非静态方法的变量,这是因为静态方法是全局的,页面执行的时候就有了,而非静态的方法和变量,需要new的时候才会存在,所以如果静态方法调用非静态的方法或者变量,就会报错,反之非静态方法调用静态资源则可以正常运行,比如我们上面的setHeight方法。

上面那个小例子,还不是很好的表达出来静态变量的全局性,我们再看一下另外一种写法,聪明的小伙伴也许会发现,还有一个$num的变量没有使用,没错,这次就要用他了。

class man {

    public static $height;

    public $weight;

    public static $num=0;

    public function __construct(){

        self::$num += 1;

    }

    public  function setHeight($height){

        self::$height = $height;

    }

    public static function getData(){

        echo "num is :".self::$num;

        echo "<br>";

    }

}

man::getData();

$one = new man();

$two = new man();

$three = new man();

$four = new man();

man::getData();

我们增加了一个构造函数,每次执行的时候,都会把$num自增1.我们运行后,发现结果如下:

num is :0

num is :4

我们每次new一个对象的时候,都会调用一下构造方法,修改一下静态变量$num的值,然后我们发现我们初始化的0,并不是每次new的时候,都是从0开始,而是一直都在改变,这就验证了静态变量的全局性,而这种方法一般都是用来统计某个class在脚本之中被new了多少次,只需要我们在脚本末尾输出一下这个静态变量就可以了。


 

 


 


 

    你可能想看:

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

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/26380.html

    标签: php静态PHP
    分享给朋友:

    “php静态php 伪静态” 的相关文章

    中国电信cn2线路图解视频下载安装手机

    在数字化时代,手机已经成为我们生活中不可或缺的一部分,而视频作为信息传递和娱乐的主要形式,更是占据了我们日常使用的重要地位。无论是观看高清电影、学习教程,还是欣赏短视频,流畅的视频体验都至关重要。而中国电信cn2线路,作为国内领先的通信网络之一,为用户提供了更快、更稳定的网络连接,完美满足了视频下载...

    提升美国家庭网络安全与光纤宽带普及的最佳策略

    在当今这个数字化时代,家庭网络的建设与发展显得愈发重要。美国家庭对于网络的依赖程度日渐加深,这不仅仅体现在上网购物、观看视频、游戏娱乐等日常活动中,也体现在工作和学习的方方面面。作为一个普通家庭,我们的生活节奏已经被网络所塑造,无论是为了保持与亲友的联系,还是获取最新的信息,都离不开一个稳定而高效的...

    RackNerd评测:高性价比VPS服务体验与优缺点分析

    谈到VPS主机服务,RackNerd无疑是近年来备受关注的一个名字。成立于2019年的RackNerd,以其高性价比和出色的客户服务,迅速在行业内站稳了脚跟。无论你是个人网站的博主,还是小型企业的运营者,RackNerd都能为你提供一个合适的解决方案。 RackNerd的主要数据中心遍布北美和欧洲,...

    台湾 VPS 服务器:低延迟高安全的理想选择

    台湾VPS服务器概述 我们常常听到“VPS服务器”这个词,但是仔细了解后,你会发现台湾的VPS服务器在众多选择中脱颖而出。这种服务器是“虚拟专用服务器”的缩写,它能让用户在一台物理服务器上分配自己的虚拟空间。这种技术让企业和个人用户可以以较低的成本拥有独立的服务器环境,从而更好地管理他们的网络资源。...

    Ubuntu 多人远程办公的安装与配置指南

    安装和配置远程桌面软件 在远程办公和团队协作日益成为常态的今天,合理配置远程桌面软件显得尤为重要。在Ubuntu的环境下,安装和配置xrdp和vncviewer等工具,可以让多个用户方便地进行远程访问,提高工作效率。下面,我将一步步带你进行相关的软件安装和配置。 1. 安装xrdp 首先,我们要安装...

    GoDaddy虚拟主机全面指南:轻松搭建您理想的网站

    GoDaddy虚拟主机概述 提到GoDaddy,很多人首先会想到它作为域名注册商的地位。但是,GoDaddy不仅限于此,提供虚拟主机服务的实力也不容小觑。对于想要在网上建立个人博客、企业站点或者电子商务平台的朋友来说,GoDaddy的虚拟主机服务是一个值得考虑的选项。它的多样性和可靠性,吸引了不少新...