<?php

abstract class Shop{

public static function create(){

//new static(); static类似于self,但它指的是被调用的类而不是包含类。他的意思是将生成一个新的Shop2对象,而不是试图实例化一个shop对象

return new self();  

}

}

class Shop1 extends Shop{

public static function create(){

return  'shop1';

}

}

class Shop2 extends Shop{

public static function create(){

return  'shop2';

}

}

print_r(Shop2::create());

?>