2)小案例步骤2,添加工厂类

和上面的思路一样,只不过稍加改进的是加了工厂类,来实例化数据库对象

框图展示:

       

                  

代码展示:

      只是在zixun.controller.class.php                               发生了代码改动:

 1 <?php
 2 //header(‘Content-type:text/html;charset=utf8‘);
 3     /**
 4      * Created by PhpStorm.
 5      * User: Interact
 6      * Date: 2017/8/19
 7      * Time: 18:37
 8      */
 9     class zixun{
10     public static function  show(){
11 //        require ‘zixun.model.class.php‘;
12 //        $zixunModel=new zixunModel();
13         require ‘./Factory.class.php‘;
14         $zixunModel=Factory::M(‘zixunModel‘);
15         $records=$zixunModel->getAll();
16 //       var_dump($records);
17         require ‘html/show.html‘;
18
19     }
20     }
21 zixun::show();

然后我的工厂类:

 1 <?php
 2     /**
 3      * Created by PhpStorm.
 4      * User: Interact
 5      * Date: 2017/8/19
 6      * Time: 21:13
 7      */
 8     /*
 9      * 项目中的工厂类
10      */
11     class Factory{
12         /*
13    * 生成模型的单例对象
14    * @param $model_name string
15    * @return object
16    */
17         public static  function M($model_name){
18           static $model_list=array();
19             //存储已经实例化好的模型对象得列表,下标是模型名,值是模型对象
20             //判断当前模型是否实例化
21             if(!isset($model_list[$model_name])){
22                 //没有实例化过
23             require   $model_name . ‘.class.php‘;
24              $model_list[$model_name]=new $model_name();//实例化对象
25             }
26            return $model_list[$model_name];
27
28         }
29     }

文件件目录关系:

        

        

时间: 2024-11-03 21:26:24

2)小案例步骤2,添加工厂类的相关文章

1)小案例步骤一

首先: MysqlDB类: 作用: 里面存的是mysql的操作函数,都是封装好的. 疑问点: 需要辨析的两个变量,就是$link是一个选好了数据库的MysqlDB对象,那个$recoure是一个只是连接了数据库的对象 Model类: 作用: 其实也是操作数据库的,只不过它是基础的功能,就是取得MysqlDB类的实例化对象_dao    ,并且在实例化Model时就产生了_dao对象,因为在_construct 疑问点: 所有的model类都是继承这个Model类,所以都可以使用_dao类, $t

《jav入门第一季》之Character类小案例

/* * Character 类在对象中包装一个基本类型 char 的值 * 此外,该类提供了几种方法,以确定字符的类别小写字母,数字,等等,并将字符从大写转换成小写,反之亦然 * */ 下面通过一个小案例,来看一下Character类的功功能: 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数. 之前写过完成这个功能的代码,在那里不是按照Character类来实现的.建议先看那篇博客,因为那里有点面向过程的意思.理解了那边,有助于体会Character的功能.见博客http://

【乱写代码坑人系列】小插曲(一)将类的所有属性添加为SqlCommand的参数

小插曲(一)将类的所有属性添加为SqlCommand的参数 在使用SqlCommand 执行存储过程时,如果存储过程需要参数,就必须将每个参数都输进去,虽然说可以使用AddWithValue 方法,但参数多时仍旧有些麻烦. 在需要将类的所有属性作为参数时,可以通过反射获取这个类所有的属性和值,并直接添加到参数中. 不过需要注意的是,必须保证类的属性名和参数名相同(不区分大小写),顺序无所谓. 1 private void SetSqlParameters<T>(SqlCommand cmd,

小酌重构系列[17]&mdash;&mdash;提取工厂类

概述 在程序中创建对象,并设置对象的属性,是我们长干的事儿.当创建对象需要大量的重复代码时,代码看起来就不那么优雅了.从类的职责角度出发,业务类既要实现一定的逻辑,还要负责对象的创建,业务类干的事儿也忒多了点.对象创建也是"一件事",我们可以将"这件事"从业务代码中提取出来,让专门的类去做"这件事",这个专门的类一般是"工厂类",这样使得业务类和工厂类各司其职,代码整洁性得以提高.这就是本文要讲的主题--提取工厂类. 工厂举例

estore商城案例(二)------登录&amp;添加商品&amp;商品列表(下)

撸完了登录模块,接着撸商品添加,和商品列表模块: 先亮出数据库: 1 DROP TABLE IF EXISTS products; 2 CREATE TABLE products ( 3 id varchar(100) NOT NULL, 4 name varchar(100) DEFAULT NULL, 5 price double DEFAULT NULL, 6 category varchar(100) DEFAULT NULL, 7 pnum int(11) DEFAULT NULL,

Hibernate映射多对多双向关联关系(小案例)

多对多双向关联关系(Project(工程)/Emp(员工)为案例): 步骤如下: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 private Integer pid; //名称 private String pname; //定义集合类型的Emp属性 private Set<Emp> emps=new HashSet<Emp>(); public Integer getPid() { return pid; }

css小案例:导航栏特效

css小案例:导航栏特效,实现如下图所示效果: 首先可以将html代码写出: 1 <nav class="cl-effect-1"> 2 <a href="#">Umbrella</a> 3 <a href="#">Ineffable</a> 4 <a href="#">Lilt</a> 5 <a href="#"&g

android闹钟小案例之知识点总结

上一篇文章对近期做的小闹钟做了功能阐述,现在来总结下整个开发过程中所用到的一些知识点: 1.TimePicker的监听 TimePicker控件是整个应用的核心,其它的操作都得基于对该控件的正确操控.对该控件的操作重要就是为其设置监听器,在监听事件中获取用户设置的时间. private Calendar calendar=Calendar.getInstance();//创建calendar对象 private class OnTimeChangedListenerImpl implements

ie8 下margin-top失效的小案例

一个小案例,是关于IE8下的margin-top的失效问题,巨日代码如下: 正常的chrome浏览器下的显示如下: margin-top=10px,正常显示 但是在ie8下,最终样式如下: margin-top已经不翼而飞. 这类问题的具体原因,不太清楚,等待后续的学习. 具体的改善措施,就是:给父级元素wrap添加display:inline-block; 就解决了.