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


    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 ImoocFactory::CreateDatabase();  //初始化对象
    14 $db=ImoocRegister::_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
    ";
     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
    ";
     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 AppHomeController;
    31 
    32 
    33 class index {
    34 
    35     public function index(){
    36         echo "Hello,World!";
    37     }
    38 
    39 } 
  • 相关阅读:
    吴裕雄--天生自然 PYTHON数据分析:糖尿病视网膜病变数据分析(续三)
    吴裕雄--天生自然 PYTHON数据分析:糖尿病视网膜病变数据分析(续二)
    吴裕雄--天生自然 PYTHON数据分析:糖尿病视网膜病变数据分析(续一)
    吴裕雄--天生自然 PYTHON数据分析:糖尿病视网膜病变数据分析
    吴裕雄--天生自然 R数据分析:2014年美国人时间使用调查(ATUS)饮食与健康模块文件分析
    吴裕雄--天生自然 PYTHON数据分析:所有美国股票和etf的历史日价格和成交量分析
    吴裕雄--天生自然 中医研究学习:入门
    吴裕雄--天生自然 python数据分析:健康指标聚集分析(健康分析)
    回首2018 | 分析型数据库AnalyticDB: 不忘初心 砥砺前行
    如何玩转跨库Join?跨数据库实例查询应用实践
  • 原文地址:https://www.cnblogs.com/luojianqun/p/4115466.html
Copyright © 2020-2023  润新知