PHP 设计模式 单例模式 工厂模式 注册模式

1.工厂模式,工厂方法或者类生成对象,而不是在代码中直接new

2.单例模式,使某个类的对象仅允许创建一个

3.注册模式,全局共享和交换对象

项目文件目录

PHP 设计模式 单例模式 工厂模式 注册模式

入口文件 index.php

 1 <?php

 2 /**

 3  * Created by PhpStorm.

 4  * Author: Administrator

 5  * Date: 14-11-22

 6  * Time: 下午3:42

 7  */

 8 

 9 define('BASEDIR',__DIR__);

10 include BASEDIR.'/Imooc/Loader.php';

11 spl_autoload_register('\\Imooc\\Loader::autoload');

12 

13 Imooc\Factory::CreateDatabase();  //初始化对象

14 $db=Imooc\Register::_get('db');

15 $db->field()->where()->order()->group()->limit()->select();

自动加载类 Loader.php

 1 <?php

 2 /**

 3  * 自动加载类

 4  * Created by PhpStorm.

 5  * Author: Administrator

 6  * Date: 14-11-22

 7  * Time: 下午4:12

 8  */

 9 

10 namespace Imooc;

11 

12 

13 class Loader {

14 

15     public static function autoload($class){

16         require_once BASEDIR.'/'.str_replace('\\','/',$class).'.php';

17     }

18     

19 } 

工厂类 Factory.php

 1 <?php

 2 /**

 3  * 工厂类

 4  *

 5  * Created by PhpStorm.

 6  * Author: Administrator

 7  * Date: 14-11-22

 8  * Time: 下午3:53

 9  */

10 

11 namespace Imooc;

12 

13 

14 class Factory {

15 

16     public static function CreateDatabase(){

17         $db=Dbtabase::getInstance();

18         Register::_set('db',$db);  //注册到对象树

19         return $db;

20     }

21 

22 } 

注册树类 Register.php

 1 <?php

 2 /**

 3  * 注册树类

 4  *

 5  * Created by PhpStorm.

 6  * Author: Administrator

 7  * Date: 14-11-22

 8  * Time: 下午5:04

 9  */

10 

11 namespace Imooc;

12 

13 

14 class Register {

15 

16     protected static $Objects;

17 

18     /**

19      * 注册到对象树

20      *

21      * @param $alias 对象映射

22      * @param $object 对象

23      */

24     public static function _set($alias,$object){

25         self::$Objects[$alias]=$object;

26     }

27 

28     /**

29      * 获取对象树对象

30      *

31      * @param $alias 对象映射

32      * @return mixed

33      */

34     public static function _get($alias){

35         return self::$Objects[$alias];

36     }

37 

38     /**

39      * 注销对象树对象

40      *

41      * @param $alias 对象映射

42      */

43     public static function _unset($alias){

44         unset(self::$Objects[$alias]);

45     }

46 

47 } 

数据库操作类 Dbtabase.php

  1 <?php

  2 /**

  3  * 数据库操作类

  4  *

  5  * Created by PhpStorm.

  6  * Author: Administrator

  7  * Date: 14-11-22

  8  * Time: 下午4:05

  9  */

 10 

 11 namespace Imooc;

 12 

 13 

 14 class Dbtabase {

 15 

 16     private static $_instance;

 17 

 18     protected $option=array();

 19 

 20     /**

 21      * 构造方法

 22      */

 23     private function __construct(){

 24 

 25     }

 26 

 27     /**

 28      * 单例模式创建对象

 29      *

 30      * @return Dbtabase

 31      */

 32     public static function getInstance(){

 33         if(!(self::$_instance instanceof self)){

 34             self::$_instance = new self;

 35         }

 36         return self::$_instance;

 37     }

 38 

 39     public function __set($key,$value){

 40         $this->option[$key]=$value;

 41     }

 42 

 43     public function __get($key){

 44         return $this->option[$key];

 45     }

 46 

 47     /**

 48      * 调用不存在方法名时回调函数

 49      *

 50      * @param $func 方法名

 51      * @param $param 参数

 52      * @return string

 53      */

 54     public function __call($func,$param){

 55         return "magic function\n";

 56     }

 57 

 58     /**

 59      * 调用不存在静态方法名时回调函数

 60      *

 61      * @param $func 方法名

 62      * @param $param 参数

 63      * @return string

 64      */

 65     public static function __callStatic($func,$param){

 66         return "magic static function\n";

 67     }

 68 

 69     /**

 70      * 打印对象时回调函数

 71      *

 72      * @return string

 73      */

 74     public function __toString(){

 75         return __CLASS__;

 76     }

 77 

 78     /**

 79      * 将对象当函数使用时回调函数

 80      *

 81      * @param $param 参数

 82      */

 83     public function __invoke($param){

 84         return "invoke";

 85     }

 86 

 87     /**

 88      * 析构方法

 89      */

 90     function __destruct(){

 91 

 92     }

 93 

 94     public function field(){

 95         return $this;

 96     }

 97 

 98     public function where(){

 99         return $this;

100     }

101 

102     public function order(){

103         return $this;

104     }

105 

106     public function group(){

107         return $this;

108     }

109 

110     public function limit(){

111         return $this;

112     }

113 

114     public function select(){

115         return $this;

116     }

117 

118 } 

前台项目控制器类 index.php

 1 <?php

 2 /**

 3  * Created by PhpStorm.

 4  * Author: Administrator

 5  * Date: 14-11-22

 6  * Time: 下午5:57

 7  *

 8                    _ooOoo_

 9                   o8888888o

10                   88" . "88

11                   (| -_- |)

12                   O\  =  /O

13                ____/`---'\____

14              .'  \\|     |//  `.

15             /  \\|||  :  |||//  \

16            /  _||||| -:- |||||-  \

17            |   | \\\  -  /// |   |

18            | \_|  ''\---/''  |   |

19            \  .-\__  `-`  ___/-. /

20          ___`. .'  /--.--\  `. . __

21       ."" '<  `.___\_<|>_/___.'  >'"".

22      | | :  `- \`.;`\ _ /`;.`/ - ` : | |

23      \  \ `-.   \_ __\ /__ _/   .-` /  /

24 ======`-.____`-.___\_____/___.-`____.-'======

25                    `=---='

26 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

27          佛祖保佑       永无BUG

28 */

29 

30 namespace App\Home\Controller;

31 

32 

33 class index {

34 

35     public function index(){

36         echo "Hello,World!";

37     }

38 

39 } 

 

你可能感兴趣的:(设计模式)