在你有别的编程语言的基础下,你想学习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(要输出的内容)