PHP 设计模式 笔记与总结(10)数据对象映射模式 2

【例2】数据对象映射模式结合【工厂模式】和【注册模式】的使用。

入口文件 index.php:

<?php
define(‘BASEDIR‘,__DIR__); //定义根目录常量
include BASEDIR.‘/Common/Loader.php‘;
spl_autoload_register(‘\\Common\\Loader::autoload‘);
echo ‘<meta http-equiv="content-type" content="text/html;charset=utf8">‘;

class Page{
    function index(){
        //使用工厂方法生成对象,而不是直接new
        $user = Common\Factory::getUser(1);
        $user->name = ‘Ozil‘;

        $this->test();
        echo ‘success‘;
    }

    function test(){
        //对对象属性的操作就完成了对数据库的操作
        $user = Common\Factory::getUser(1);
        $user->mobile = ‘13912345678‘;
        $user->regtime = date("Y-m-d H:i:s",time());
    }
}

$page = new Page();
$page->index();

index() 和 test() 中的 $user 对象为同一个对象。

工厂模式文件 Common\Factory.php

<?php
namespace Common;

class Factory{
    static function createDatabase(){
        $db = Database::getInstance();
        //得到数据库对象后,将该对象映射到全局树上
        Register::set(‘db1‘,$db);//db1为映射的别名
        return $db;
    }

    static function getUser($id){
        //注册器模式
        $key = ‘user_‘.$id;
        $user = Register::get($key);
        if(!$user){
            $user = new User($id);
            Register::set($key , $user);
        }
        return $user;
    }
}

访问入口文件,就能修改 test 数据库 user 表中 id 为1 的数据。

时间: 2024-08-04 05:13:51

PHP 设计模式 笔记与总结(10)数据对象映射模式 2的相关文章

PHP 设计模式 笔记与总结(9)数据对象映射模式

[数据对象映射模式] 是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作.例如在代码中 new 一个对象,使用数据对象映射模式就可以将对象的一些操作比如设置一些属性,就会自动保存到数据库,跟数据库中表的一条记录对应起来. [代码实现] 在代码中实现数据对象映射模式,我们将实现一个 ORM(对象关系映射 Object Relational Mapping) 类,将复杂的 SQL 语句映射成对象属性的操作.同时结合[工厂模式]和[注册模式]使用. [例1] 数据库 test ,us

数据对象映射模式(转)

php中的设计模式中有很多的各种模式了,在这里我们来为各位介绍一个不常用的数据映射模式吧,希望文章能够帮助到各位. 数据映射模式使您能更好的组织你的应用程序与数据库进行交互. 数据映射模式将对象的属性与存储它们的表字段间的结合密度降低.数据映射模式的本质就是一个类,它映射或是翻译类的属性或是方法到数据库的相应字段,反之亦然. 数据映射的作用(工作)就在于能对双方所呈现出的信息的理解,并能对信息的存取进行控制,如根据存储在数据表中的信息 重建新的域对象,或是用域对象的信息来更新或删除数据表中的相关

数据对象映射模式

定义:将对象和数据存储映射起来,对一个对象的操作会映射为数据存储的操作 综合应用实例:在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的SQL语句映射成对象属性的操作,结合使用数据对象映射模式,工程模式,注册模式 $page = new Page();$page->index(); class Page{ function index() { $user = \IMooc\Factory::getUser(1); $user->name= 'fango0'; $this->t

ZF框架数据对象映射模式的思考

最近学了ZF框架,对手册中DB这一节Zend_Db_Table_Row的介绍中说,使用了Zend_Db_Table::find()或::findRow()方法可以返回一个Zend_Db_Table_Row的对象,该对象自动映射到表中的这一行记录,字段和类属性完全关联在一起(字段名是下划线分隔的,属性名由首个单词小写的驼峰式命名,如自动“last_name”,则操作时属性名“lastName”),获取任何字段就直接像操作类属性一样,如: $row = $table->fetchRow('first

Python学习笔记_Chapter 6定制数据对象

1. 有用的BIF a. 判断字符串中是否包含子字符串 1 if s_a in s_b: b. pop() 描述:从指定的列表位置删除并返回一个数据项. 1 (sarah_name,sarah_dob)=l_rah.pop(0),l_rah.pop(0) 2 #pop(0)中0位置为list中第一个数据项 3 #第一次执行pop赋值给sarah_name c. strip() 输入的是字符串,返回的是列表 d.open 读文件时可以多种方式打开文件,取出的数据是不同的,可以是文本也可以是二进制.

PHP 设计模式 笔记与总结(8)策略模式

① 策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式. ② 实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告. 在 Common 目录下新建 UserStrategy.php,定义接口: <?php namespace Common; //定义策略接口 interface UserStrategy{ //显示广告 function showAd(); //展示类目 function showCa

java/android 设计模式学习笔记(5)---对象池模式

这次要介绍一下对象池模式(Object Pool Pattern),这个模式为常见 23 种设计模式之外的设计模式,介绍的初衷主要是在平时的 android 开发中经常会看到,比如 ThreadPool 和 MessagePool 等. 在 java 中,所有对象的内存由虚拟机管理,所以在某些情况下,需要频繁创建一些生命周期很短使用完之后就可以立即销毁,但是数量很大的对象集合,那么此时 GC 的次数必然会增加,这时候为了减小系统 GC 的压力,对象池模式就很适用了.对象池模式也是创建型模式之一,

JAVA笔记:Java数据库编程(四):处理大数据对象

大数据对象主要指的是CLOB和BLOB两种类型的字段,在CLOB中可以存储海量文字,例如存储一本小说.在BLOB中可以存储二进制文件,如电影,图片等,如果在程序中要处理大的数据对象,则必须使用PreparedStatement 完成,所有的内容要通过IO流的方式从大字段文本中保存和读取. 写入大数据对象的主要方法: 读取大数据对象的主要方法: 处理CLOB数据 CLOB表示大文本数据(Character Large Object),在MySQL中提供了LONGTEXT字段表示大文本数据,这个字段

Asp.net设计模式笔记之一:理解设计模式

GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral).下面来做详细的剖析. 创建型 创建型模式处理对象构造和引用.他们将对象实例的实例化责任从客户代码中抽象出来,从而让代码保持松散耦合,将创建复杂对象的责任放在一个地方,这遵循了单一责任原则和分离关注点原则. 下面是“创建型”分组中的模式: 1.Abstract Factory(抽象工厂)模式:提供一个接口来创建一组相关的对象. 2.Factory Met