|
1.工厂模式,工厂方法或者类生成对象,而不是在代码中直接new
2.单例模式,使某个类的对象仅允许创建一个
3.注册模式,全局共享和交换对象
项目文件目录
入口文件 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 }
|
|