注意静态变量的区别,可以在方法体内做静态变量的设定
<?php
function test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
test();
}
$count--;
}
?>
php这个变量的定义也是很够够的
<?php
class foo {
var $bar = 'I am bar.';
var $arr = array('I am A.', 'I am B.', 'I am C.');
var $r = 'I am r.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar . "\n";
echo $foo->$baz[1] . "\n";
$start = 'b';
$end = 'ar';
echo $foo->{$start . $end} . "\n";
$arr = 'arr';
echo $foo->$arr[1] . "\n";
echo $foo->{$arr}[1] . "\n";
?>
::
范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。
self,parent 和 static
这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。
Trait
是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。
参考 https://www.php.net/manual/zh/language.oop5.traits.php
php的反射操作
https://www.php.net/manual/zh/language.oop5.iterations.php
属性不能被定义为 final,只有类和方法才能被定义为 final。
当使用比较运算符()比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。
而如果使用全等运算符(=),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)
未解决问题:
- global $var 详细研究
- 生成器语法 https://www.php.net/manual/zh/language.generators.syntax.php