PHP之特性

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

定界符

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

php 复制代码
$x=123
echo <<<TT
123123$x 123
TT;

对象

只有public,protected,private权限控制

类中的parent类似Java的super

php 复制代码
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进行延迟绑定可以调用的对象决定到底使用哪个值

php 复制代码
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
php 复制代码
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();

中断输出

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

php 复制代码
half(要输出的内容)
相关推荐
Y第五个季节8 分钟前
docker-部署Nginx以及Tomcat
java·开发语言
小道士写程序29 分钟前
Qt 5.12 上读取 .xlsx 文件(Windows 平台)
开发语言·windows·qt
ou.cs42 分钟前
c# :this() 和 :base()区别
开发语言·c#
孤寂大仙v43 分钟前
【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑
tcp/ip·计算机网络·php
Mikhail_G1 小时前
Python应用函数调用(二)
大数据·运维·开发语言·python·数据分析
木木黄木木2 小时前
Python制作史莱姆桌面宠物!可爱的
开发语言·python·宠物
exploration-earth2 小时前
本地优先的状态管理与工具选型策略
开发语言·前端·javascript
苦学编程的谢3 小时前
Java网络编程API 1
java·开发语言·网络
寒山李白3 小时前
Java 依赖注入、控制反转与面向切面:面试深度解析
java·开发语言·面试·依赖注入·控制反转·面向切面
梓仁沐白3 小时前
【Kotlin】数字&字符串&数组&集合
android·开发语言·kotlin