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(要输出的内容)
相关推荐
-Thinker4 分钟前
【无标题】
java·开发语言·算法·图搜索
王五周八7 分钟前
Tesseract OCR的Java使用(附安装包,非常详细)
java·开发语言·ocr
一直奔跑在路上8 分钟前
深入浅出RDMA:原理、应用与实战指南
开发语言·php
j7~17 分钟前
【C++】STL--string类--拆析解剖string类的实现以及string类的底层详解(2)
开发语言·c++·浅拷贝·深拷贝·string类的实现·string拷贝构造·string赋值重载
程序员二叉26 分钟前
【JUC】AQS底层深度拆解|独占/共享模式|队列原理全详解
java·开发语言·面试·juc
踏着七彩祥云的小丑28 分钟前
Go 学习第6天:结构体 + 切片 + range遍历
开发语言·学习·golang·go
读书札记202231 分钟前
Qt中windeployqt.exe工具的使用:解决使用CMake创建的项目点击exe文件后系统提示0xc000007b的问题
开发语言·qt
xiaoshuaishuai843 分钟前
C# 定制化Markdown编辑器
开发语言·c#·编辑器
DogDaoDao43 分钟前
C++核心技术深度剖析:从底层原理到工程实践
开发语言·c++·面试·程序员·指针·虚函数
磊 子1 小时前
C++移动语义和智能指针
java·开发语言·c++