PHP之特性

发布于:2025-03-06 ⋅ 阅读:(12) ⋅ 点赞:(0)

在你有别的编程语言的基础下,你想学习PHP,可能要了解的PHP特有的东西。

定界符

使用<<<TT(可以是任意字符,但是不可以在别的地方使用过)和TT,会解析html格式和变量,如果在<<<后面加上单引号就会不解析

$x=123
echo <<<TT
123123$x 123
TT;

对象

只有public,protected,private权限控制
类中的parent类似Java的super

lass AA
{
    public $name;
    private $age;
    public static $sex = "woman";//静态属性 需要类名调用
    const tall = "170cm";//常量 不允许修改

    /**
     * @param $name
     */
    public function __construct($name)
    {
        $this->name = $name;
        $this->age = self::$sex;//静态属性不能用$this调用 需要用self::
        echo "创建对象" . PHP_EOL;
    }

    static function tt()
    {
        echo "静态方法" . PHP_EOL;
        //在静态方法中调用非静态的方法
        echo (new self)->name;
    }

    public function __destruct()
    {
        // TODO: Implement __destruct() method.
        echo "销毁对象" . PHP_EOL;
    }

}

$AA = new AA("zhangsan");
$AA->name = "lisi";
AA::$sex = "man";//静态属性用类名调用
AA::tt();
echo $AA->name . AA::$sex . PHP_EOL;
延迟绑定 static

用static进行延迟绑定可以调用的对象决定到底使用哪个值

class A
{
    protected static $name = "123";

    public function eat()
    {
        echo self::$name . PHP_EOL;//指定为当前类中的属性
        echo static::$name . PHP_EOL;//根据调用的对象来决定调用哪个类中的属性
    }
}

class B extends A
{
    protected static $name = "456";
}

//(new A())->eat();
(new B())->eat();

接口

接口里的权限只能是public

抽象类 abstract

抽象方法权限可以使用public,protected,可以包含非抽象方法的实现和抽象方法的声明,可以有构造方法

trait 代码复用

解决单一继承,可以使用多个trait,用逗号隔开。里面不能有类常量,不能被实例化。
可以使用抽象方法
可以使用静态属性和静态方法
可以使用parent和其他trait
多个trait使用不可以有相同的key不同value
trait A
{
    public function T()
    {
        echo "A" . PHP_EOL;
    }
}

trait B
{
    public function T()
    {
        echo "B" . PHP_EOL;
    }
}

class C
{
    use A, B {
        A::T insteadof B;//使用A中的T方法替换B中的T方法
        B::T as T1;//使用B中的T方法并起别名T1
        B::T as private T2;//as改别名时也可以改权限
    }

    public function d()
    {
        echo $this->T2();
    }
}

$c = new C();
$c->T();
$c->T1();
$c->d();

中断输出

中断进程,并输出当前要输出的值

half(要输出的内容)

网站公告

今日签到

点亮在社区的每一天
去签到