1. self()创建2个类的实例(只绑定声明类方法create)
<?php
abstract class CreateInstance
{
}
class User1 extends CreateInstance
{
// 创建类的实例
public static function create() : self
{
return new self();
}
}
class User2 extends CreateInstance
{
// 创建类的实例
public static function create() : self
{
return new self();
}
}
// 生成User1实例
$user1 = User1::create();
var_dump($user);
echo "<hr>";
// 生成User2实例
$user2 = User2::create();
var_dump($user2);
2. static 后期静态绑定
<?php
// static后期静态绑定
abstract class CreateInstance
{
public static $name;
public static $age;
// 创建类的实例
public static function show()
{
return '姓名:'. static::$name . ',年龄:' .static::$age;
}
}
class User1 extends CreateInstance
{
public static $name='小芳';
public static $age='20';
}
class User2 extends CreateInstance
{
public static $name='小李';
public static $age='21';
}
// 生成User1实例
echo User1::show();
echo "<hr>";
// 生成User2实例
echo User2::show();
总结
- 使用 self:: 或者 CLASS 对当前类的静态引用,取决于定义当前方法所在的类,只能绑定当前类方法,不能与调用类绑定
- static:: 只能用于静态属性。
- static可以绑定调用类
- 将声明类与调用类分离,换关键词,用static,后期静态绑定,才能调用