报错信息: Fatal error: Cannot instantiate abstract class DomainObject in<?php
abstract class DomainObject {
public static function create() {
return new self();//这样会报错:
}
}
class User extends DomainObject {
}
class Document extends DomainObject {
}
print_r(Document::create());
<?php
abstract class DomainObject {
public static function create() {
return new static();
}
}
class User extends DomainObject {
}
class Document extends DomainObject {
}
print_r(Document::create());
运行结果:<?php
abstract class DomainObject {
private $group;
public function __construct(){
$this->group = static::getGroup();//需要是个静态方法
}
public static function create() {
return new static();
}
static function getGroup() {
return 'default';
}
}
class User extends DomainObject {
}
class Document extends DomainObject {
static function getGroup() {
return 'Document';
}
}
class SpreadSheet extends Document {
}
print_r(User::create());
print_r(SpreadSheet::create());
<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
self::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();//输出A