功能:根据传入的参数执行不同的操作 .通过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页面输出雪梨汁

?> 

  

 

posted on 2017-10-13 17:16  顾君临  阅读(86)  评论(0)    收藏  举报