php的一些语法

命名空间:

一个类为App/Http/Controllers/Controller,则该类的命名空间为App/Http/Controllers,可以通过use关键字导入该类,也可以导入命名空间,但是该命名空间下的函数和常量是不能通过关键字导入的。命名空间解析规则:
1.对完全限定的函数、类和常量可以直接解析。如/a/b 解析为a/b
2.对非限定和非完全限定名称的函数、类和常量,会根据当前导入命名空间转换。如a/b/c被导入,new c/d/e(),会被解析为a/b/c/d/e()。
3.在命名空间内部,对非限定命名空间进行函数调用时,现在当前命名空间下解析,如果查找不到再在全局下面寻找。
4.在明明空间(如a/b)内部使用非限定和非完全限定名称的类进行调用时,只会在当前命名空间下解析。

反射:

后期静态绑定:

self:会根据所在位置的类决定实例化对象
static:会根据运行时调用的类来决定实例化对象

class A {
    public function call() {
        echo "A";
    }
    public function test(){
        self::call();
        static::call();
    }
}

class B extends A {
    public function call(){
        echo "B";
    }
}

$b = new B;
$b->test();
结果: A B

trait:

1.当前类的方法会覆盖trait中的方法,而trait中的方法会覆盖基类的方法
2.多个trait方法之间用逗号分隔。两个trait都插入一个同名的方法会产生一个致命的错误,可以使用insteadof操作符来明确指定使用哪一个方法,或者as将另一个修改别名的方法引入。

原文地址:https://www.cnblogs.com/mentalidade/p/7058528.html