php中除了常规类和方法的使用,访问控制之外,还有静态关键字static,静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态变量并没有消失,它依然存在于内存中,下次在定义时还是以前的值,常用于递归或子函数中保留之前的值,可以用来定义变量和方法,作用就不具体说了,说一下使用方式,下面简单的代码: 1 <?php 2function add($i){3static$sum = 0;4if($i<=100){5$sum=$sum+$i;6 add($i+1);7 }8...
Declaring class members or methods as static makes them accessible without needing an instantiation of the class. A member declared as static can not be accessed with an instantiated class object (though a static method can). 声明静态的类变量和方法可以不需要实例化类对象的情况下对他们进行调用。静态类不能被类对象调用。(类的静态方法可以)。//注意看第一个例子,在一个非静态的方法中调用了静态的变量。唯一...
PHP类的静态(static)方法和静态(static)变量使用介绍,学习php的朋友可以看下 在php中,访问类的方法/变量有两种方法: 1.
创建对象$object = new
Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。 2.
直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A.
如果是变量,需要该变量可访问。 B. 如果是方法,除了该方法可访问外,还需要满足:...
在一个类中,常见的是new self()操作,代表返回自身类的实例。当父类中存在方法,然后每个子类继承于父类,调用这个方法会返回自身的实例化对象,<?php
class A
{function create(){returnnew self();}
}class B extends A
{}B->create(); //返回A的实例化 那么当子类调用create时,返回的是A类的实例现在有个需求就是,调用父类中返回实例化的方法时,返回当前子类的实例化,那么就可以用new static()来操作了<?php
class A
{fun...
看PHP手册的时候发现了下面这样一段代码: 复制代码 代码如下:<?php function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test(); } $count--; } ?> 执行结果如下: 这是一个递归的函数,声明的静态变量count记录次数,输出1~10。 我在看的时候有个疑惑,递归调用的时候 static $count = 0; 语句会重复执行,这为什么不会导致count变量被重复赋值呢?带着这个疑问和同事研究了一下,测试用代码如下:...
关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了。静态属性、方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性)。实例:header("content-type:text/html;charset=utf-8");
class Human{static public $name = "小妹";public $height = 180;static public function tell(){echo self::$name;//静态方法调用静态属性,使用sel...
php中static静态变量的使用方法详解 php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。 看看下面的实例: 复制代码 代码如下:<?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; } ?> 本
函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一...
function updateFirstEndFromBatchtasks(...){ static $cache=array(); $val=$$cache[$key]; if(is_null($val)){ $val=.....//获取$val的值 $cache[$key]=$val; } } static变量实现缓存的优缺点:
优点:
速度快,效率高,实现简单。由于是PHP内部变量,是所有缓存中执行效率最高的。
缺点:
灵活性差,只在本次连接中有效,执行区域小,只在同一个函数中有效,无法跨函数运作(可以使用全局变量...
PHP中使用static变量做缓存(小技巧)?? 我最近为客户做一个导入功能,功能中有一个需求,客户中有一个媒体字段,导入后要根据导入客户的媒体,查出媒体的一些数据更新到这个客户的字段中。
?? 当我做完后,测试导入功能没有问题,便交付了,过不多久,客户反映速度有点慢,在查原因,发现和查出媒体的一些数据有关,虽然sql语句执行时间很短,但是由于导入数据量很大,每一次都要执行,导致了时间延长了。
?? 分析了原因后,我们想...
我接触PHP 都是接触5.6版本的以前的版本没接触 求高手帮忙,我的PHP 用5.3版本就不报错,已改成5.6版本就开始报错说静态类不能使用, static public function(){ ....}**Strict Standards: Non-static method cls_image::gd_version() should not be called statically in F:\WWW\weixin\includes\lib_base.php on line 276Strict Standards: Non-static method cls_image::gd_version() should not be called statically in F:\W...
与类有关的魔术常量:
__CLASS__,:获取其所在的类的类名。
__METHOD__:获取其所在的方法的方法名。class A{function f1(){echo __CLASS__; //输出“A”echo __METHOD__; //输出“f1”//注意:get_class()也可以得到类名,但其必须有个“对象”}}数据(变量)序列化/反序列化
什么叫序列化:
就是将一个变量的数据“转换为”字符串——但并不是类型转换。
其目的(意图)是将该字符串“存储起来”(比如存为文本文件)
然后在...
利用static实现表格的颜色隔行显示我们用PHP从数据库查询数据,并将结果输出到浏览器上,如果结果有很多行,表格的bgcolor如果全是单色的,浏览者会感觉不太舒服。那麽怎样做使表格各行的颜色不同呢? 请看下面: <? function getcolor() { static $colorvalue;//定义一个静态变量 if($colorvalue=="#ffffff") $colorvalue="#000000"; else $colorvalue="#ffffff"; return($colorvalue); } print("<table border=1>n");//下面输出1...
14.final 关键字的应用 这个关键字只能用来定义类和定义方法,不能使用final 这个关键字来定义成员属性,因 为final 是常量的意思,我们在PHP 里定义常量使用的是define()函数,所以不能使用final 来 定义成员属性。 使用final 关键标记的类不能被继承; 代码片段 final class Person{ … … } class Student extends Person{ } 会出现下面错误: Fatal error: Class Student may not inherit from final class (Person) 使用final ...
为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。 静态属性也可以由对象通过->操作符来访问。 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。 就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也...
看看下面的实例: 代码如下:<?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; } ?> 本函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态(static)的: 如下: 代码如下:<?php function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?> 本函数每调...