关于“php_类静态变量赋值”的问题,小编就整理了【5】个相关介绍“php_类静态变量赋值”的解答:
php变量赋值加单引号还是双引号?在赋予一个string值的时候,可以用单引号或者双引号。
1.单引号和双引号的区别:
单引号:不会翻译变量。
双引号:会翻译变量,会将变量替换为之前赋予变量的值。
为什么类属性不能直接赋值?static是静态变量,在实例化对象之前,就已经给该类变量划分了内存区域。如果别的类拥有赋值的权限,就可以赋值。
php函数的参数赋值方式?2、引用赋值,例如$a=&$b,即$a和$b在都指向了内存中的同一个存储变量值得地址;
3、引用计数传值,在php和js中的对象都是默认的传值方式都是引用计数传值,例子如下:
<?php
class Dog{
public $name="小花";
public $leg=4;
}
$a=new Dog;//此时,$a指向了内存中的一个地址(假设0XFFAD[1]),该地址又指向最终对象的值
$b=$a;//此时,$b和$a都指向了内存中的另一个地址(0XFFAD[2]),该地址又指向最终对象的值
var_dump($b->leg);//结果是int 4
$b=999;
var_dump($b);//结果是int 999;
var_dump($a);//此时的结果不是int 999,而是object(Dog)[1]
public 'name' => string '灏忚姳' (length=6) public 'leg' => int 4
如何初始化一个类中的静态成员变量?如果不考虑父类的话,简单来说是先进行静态初始化,后进行非静态初始化。
静态初始化包括静态成员变量的初始化和静态块,实际上编译时都会集中到static块中。
而非静态初始化包括非静态成员变量初始化和非静态块以及构造方法,编译后都会集中到构造方法中。
如果没有相互调用那么很简单,先进行静态初始化,如果静态初始化过程中又调用后者呢?
可以写一个代码试验一下:
输出:
可以看到确实是先进行静态初始化,可是中间夹杂着对于构造方法的调用。
虽然编译器没有报错,但是这种调用其实是有风险的。
因为静态成员变量(假设有的话)并未初始化的过程中就调用类的构造函数,假设有依赖的情况下,实际上过程是不可控的。
看下面这个例子:
能想象到这种输出吗?
所以如果非要在静态初始化过程中,调用本类的构造函数。
一定要注意初始化顺序问题,精确到语句。
php声明和调用变量的符号是什么?php声明和调用变量的符号主要是var_dump(property_exists($c, 'd')); // bool(true)。
如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量。
同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中(PHP 4.0.4 以及以后版本)。
自 PHP 5 起,new 自动返回引用,因此在此使用 =& 已经过时了并且会产生 E_STRICT 级别的消息。
运行代码是让$b来引用$a的内容,然后改变$a的内容,$b的内容也会随之变化。具体的标识符包括$a,$b, $c。
到此,以上就是小编对于“php_类静态变量赋值”的问题就介绍到这了,希望介绍关于“php_类静态变量赋值”的【5】点解答对大家有用。