php访问类的静态变量
A. php中static 静态变量和普通变量的区别
php中static 静态变量和普通变量的区别:
在变量的前面加上static 就构成了静态变量(static 变量)。
static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
B. PHP如何在一个类中引用另一个类中的变量.
可能你理解上有问题。不太明白你的意思,所以我分开解释。如果是在定义的时候就引用,下面两种。1.两个都是类,即类的静态变量(static修饰),一个类自然可以引用静态变量,因为静态变量是在程序进入main函数前就已经初始化完了。2.一个类A一个实例B(A类产生的对象),A当然无法在类的内部引用(即定义中),因为实例是在程序中动态分配的内存,类A必然先于实例B存在,所以A并不能知道B的存在。B可以引用类A的静态变量,理由同1。如果是在运行时才引用。你只要在类A里写一个函数,例如function(B b),这样你要调用的时候通过这个函数做接口就行了,至于b你要做什么,就是你的事了。
C. php中怎么调用方法中的静态变量
static
变量是php中的变量作用范围的一个重要特性
静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果
一个普通的变量,如
$message
在它所在的函数执行完之后就被释放了
即第二个function执行10次,每次执行完后,$message变量被释放,所以每次都是1
变量前加了static后,该变量在它所在的函数执行完后不会被释放
即第一个function每次被执行后,static
$message没有被释放,它将被继续累加
D. php的类静态变量并发调用时会不会出现访问冲突
静态方法就是隶属于一个类的函数,为什么希望让这个函数枯判隶属于类,一般有两种情况:1、函数的名字太常规,以慎肢至于可能与其它独立函数产生命名冲突,则你把它作为类的静态方法,可以变相起到封入命名空间的效果。比如你想为某个类定义一个特别版的setcookie();2、当一个函数希望访问某个类的私有成员变量时(private 或 protected),显然在通常情况下,它作为外部独立函数是访问不到的。把它定义为那个类的静态方法宽败世,就可以作为类的成员函数轻松访问那些私有成员变量了。另外对 6 楼做一个补充:静态成员方法也有访问级别,如果定义为了 private 或 protected,则外部是无法作为普通函数直接调用的。
E. PHP 中this为什么不能引用静态变量
static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“胡察类方法”。
2. 静态变者行量的调用方法:
只能使用slef::或者类名::访问,不能使用$this访问;反之,类的成员变量未声明为const及static时,只能使用$this访问,裤嫌茄不能用::访问。
F. 高分求解,PHP 怎么用变量访问静态属性
<?php
classTest
{
static$test='123456';
}
$str='test';
echoTest::$$str;
G. php父类如何调用子类的静态方法或变量
php父类中怎么调用子类的的静态属性了,Oh,my god,如果被面试官问道这种问题,你一定会说shit,fucky question。你会说我很少这么做,况且php对于静态的操作太随意了,php在父类调用子类的静态属性是一件麻烦的事情。我们知道子类中调用父类的静态属性,可以用self::的形式。但是父类调用子类如果用self::就只能调用到父类的静态属性。那么,怎么办了?php是不是无法做到了?答案当然是否定的,php中还可以使用在父类中用子类的类名来调用的方法。
不过,这当中仍然存在一个问题,就是如果我有多个类继承了同一个父类,而且父类的某个函数要用到各个子类的静态属性的话,就想当trouble了。这里有个php的朋友提供了一种思路,采用在子类中重载父类的方法使父类得到静态属性。父类中使用了get_class函数得到类名,get_class()是父类名,get_class($this)是子类名。好了得到这个再用eval函数做下执行语句就OK啦。例子:
//父类class A {
public function __con(){
//这里主要为让大家看清楚,所以打印出来类名,供大家学习
echo(get_class($this)).'/';
echo(get_class()).'/';
eval(\$ab = . get_class($this) . ::\$table;);echo $ab;}}//子类Bclass B extends A {
static $table = 'b table';
function __construct(){
$this-__con();}}//子类Cclass C extends A{
static $table = 'c table';
function cc(){
$this-__con();}}//调用
new B; //输出结果 B A b table
$c = new C;
上面就是php父类调用子类静态成员的方法,在子类重载父类的方法还是相当不错的 ,当时听朋友提起这个时,就异常激动。父类我们也叫做基类,或者底层类。一般都是最先设计,子类就是根据各个需要来设计,所以我们子类修改的可能性比较大,操作灵活性也比较大。
H. php中为什么静态变量不用实例化
你没学过C语带渣歼言和C++吗???? 静态变量只能声明一次,在你连接一个类时,所有的静态变量和静态函数都已经定义并启用了,而且不能再动态生成新变量和函数,所有实例化的对象公用一个静态变量和静态函数,静态类也是如此,静态类是不能实例化的,但能直接用。。。。
c++语言里static标记的函数和变量,都不能进行第二次申请内存,只有动态的有auto标记的才可以执行一次语句申请一次内存,即实例化(这个关键字是默认的通常梁手不写,没有就代表是auto),所有语言的静态和动态意思都是一样的,静态变量或函数都有特殊的静态标识符,通常都是static ,PHP也是一样,所有编译器和解释器一但看到这个标志,就不会第二次执行该蠢冲声明语句,所以也没法实例化,可以直接用,但用的都是同一个。。。
I. PHP请问在static的function中如何访问变量
静态方法只能访问其他的静态方法或属性,比如
classA{
privatestatic$url;
($url){
self::$url=$url;
}
(){
returnself::$url;
}
}
//或者在你的静态方法中获得实例,当然这样的悔镇话可能达不到你预期的效果,推荐你还是使用上面的方法。
classA{
private$url='demo';
publicstaticfunctiongetUrl(){
陪前磨芦斗$obj=newself();
return$obj->url;
}
}
J. 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++;
}
?>