
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变量是基于上一次访问的存留
不知道我表达清楚没有,谢谢! 展开
而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变量是基于上一次访问的存留
不知道我表达清楚没有,谢谢! 展开
4个回答
展开全部
这个静态变量,只在一个进程里有效.
打开另一页、刷新等变量是不能公用的,一旦这个进程结束,变量也就消失了
这一点和你说的“实体缓存”是完全不一样的。
为了实现你要的功能,只能用文件缓存或者数据库实现了。
BY THE WAY,PHP和JAVA是不一样的,虽然他们有很多共同点。
php5里有,4里没有
使用方式和java一样
其实5里面向对象很多都是从java借鉴过来的
class c1{
static $v1;
}
打开另一页、刷新等变量是不能公用的,一旦这个进程结束,变量也就消失了
这一点和你说的“实体缓存”是完全不一样的。
为了实现你要的功能,只能用文件缓存或者数据库实现了。
BY THE WAY,PHP和JAVA是不一样的,虽然他们有很多共同点。
php5里有,4里没有
使用方式和java一样
其实5里面向对象很多都是从java借鉴过来的
class c1{
static $v1;
}
展开全部
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; 私有成员是不能访问的
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; 私有成员是不能访问的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有的,你可以查询下php手册的static的关键字看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有,PHP5中是有的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询