功能:根据传入的参数执行不同的操作 .通过spl_autoload_register和__call结合实现
实例:有一个文件夹factory,里面有两个是:index.php、auto.php和文件夹water,water文件夹里面有三个文件。分别是:Pear.php文件、Waterlemon.php文件和base.php文件,通过工厂模式能够在index界面得到想要的结果
代码如下:
index.php
<?php
include_once 'auto.php';
class myclass{
public function __call($name,$param){
if($name=='water' && $param['0']=='西瓜'){
$obj=new \water\Waterlemon;//完全限定文件路径 西瓜汁
$obj->show();
}elseif($name=='water' && $param['0']=='雪梨'){
$obj=new \water\Pear;//完全限定文件路径 雪梨汁
$obj->show();
}
}
}
$obj=new myclass;
$obj->water('雪梨');
base.php代码
namespace water;
abstract class base{
abstract function show();
}
Pear.php代码
namespace water;
class Pear extends base{
public function show(){
echo "雪梨汁";
}
}
Waterlemon.php代码
namespace water;
class Waterlemon extends base{
public function show(){
echo "西瓜汁";
}
}
auto.php页面
namespace bc;
class auto{
public function __construct{
spl_auto_register('bc\auto::auto');
}
static function auto($classname){
$path=$classname.".php";
if(is_file($path)){
include_once($path);
}
}
}
结果:index页面输出雪梨汁
?>
浙公网安备 33010602011771号