php有没有类似于java那样的static变量(类变量)

java中有static变量,这种变量一旦初始化(开辟内存空间)就不会无缘无故地消失,这个特性很有用(比如实体缓存、计数器等应用).而php中虽然也有static变量,但... java中有static变量,这种变量一旦初始化(开辟内存空间)就不会无缘无故地消失,这个特性很有用(比如实体缓存、计数器等应用).

而php中虽然也有static变量,但是这种变量实际只是局部变量,谈不上全局静态变量,而php的全局变量实际就是php所说的静态变量,也就是说php中用static保留字修饰的变量被使用过就消失了(它原先占用的内存空间被收回了,无法保留),这样地话就不能用java里面的那种方式开发实体缓存.

本人php菜鸟,接触php才一天,特此求教类似于java类变量的那样的不会被隐式释放的变量(或者功能)如何实现?

谢谢!
我所指的实体缓存是指纯粹的内存里面的数据缓存,不是那种缓存文件之内的.

好像还是不行(截止到jlake兄的发言):
code:
<?php
class Base{
public static $arg = 0;
}

for($i=0;$i<10;$i++){
echo Base::$arg."<br>";
Base::$arg++;
}
?>

这样的代码每次都是打印0~9,说明每次访问的状态都没有被记录.
而我所要追求的效果是第一次访问打印0~9,第二次是10~19,第三次是20~29 ... 依此类推
也就是说每次访问后对于$arg的状态都被保留了,然后下一次访问的$arg变量是基于上一次访问的存留

不知道我表达清楚没有,谢谢!
展开
 我来答
everalan
2010-03-03 · TA获得超过1820个赞
知道大有可为答主
回答量:799
采纳率:0%
帮助的人:1458万
展开全部
这个静态变量,只在一个进程里有效.
打开另一页、刷新等变量是不能公用的,一旦这个进程结束,变量也就消失了
这一点和你说的“实体缓存”是完全不一样的。
为了实现你要的功能,只能用文件缓存或者数据库实现了。

BY THE WAY,PHP和JAVA是不一样的,虽然他们有很多共同点。

php5里有,4里没有
使用方式和java一样
其实5里面向对象很多都是从java借鉴过来的
class c1{
static $v1;
}
百度网友a435633
2010-03-03 · TA获得超过1235个赞
知道大有可为答主
回答量:1018
采纳率:0%
帮助的人:0
展开全部
php5 中的静态成员可以像这样定义

Class A {
const CODE = 1;
public static $a = 'I am a';
private static $b = 'I am b';

public static function test() {
echo self::$a ."\n";
echo self::$b ."\n";
}
}

echo A::CODE ."\n";
echo A::$a ."\n";
A::test();

//注意不能用 echo A::$b; 私有成员是不能访问的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xd04053045
2010-03-02 · TA获得超过122个赞
知道小有建树答主
回答量:411
采纳率:0%
帮助的人:261万
展开全部
有的,你可以查询下php手册的static的关键字看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xudianyang
2010-03-02 · TA获得超过410个赞
知道小有建树答主
回答量:87
采纳率:0%
帮助的人:126万
展开全部
有,PHP5中是有的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式