针对PHP的设计模式进行总结记录。

顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了。

 笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2

 

一、关于命名空间
命名空间
1.命名空间介绍
2.命名空间使用

实例:
test1.php文件代码:

<?php
namespace Test1;
function test(){
echo __FILE__;
} ?>

  

test2.php文件代码:

<?php
namespace Test2;
function test(){
echo __FILE__;
}
?>

test.php文件代码:

<?php
// 如果没有 namespace命名空间 就会出现冲突
require 'test1.php';
require 'test2.php'; // 这样输出
Test1\test();
Test2\test();
?>

  

二、类的自动载入
test.php文件代码:

<?php
// 这样输出
Test1::test();
Test2::test(); //下面这个函数允许有多个文件加载 ②新方法 这种比第一种先进
spl_autoload_register('autoload1');
spl_autoload_register('autoload2');
spl_autoload_register('autoload3'); function autoload1($class){
require __DIR__.'/'.$class.'php';
}
function autoload2($class){
require __DIR__.'/'.$class.'php';
}
function autoload3($class){
require __DIR__.'/'.$class.'php';
}
…………
/*
//①原来的旧方法 下面这个函数后面被抛弃了,因为多次引入相同文件会冲突
function __autoload($class){
require __DIR__.'/'.$class.'php';
}
*/
?>

  

  三、开发一个PSR-0的基础框架
  PSR-0规范
    1.命名空间必须与绝对路径一致
    2.类名首字母必须大写
    3.除入口文件外,其他".php"必须只有一个类

  开发符合PSR-0规范的基础框架
    1.全部使用命名空间
    2.所有PHP文件必须自动载入,不能有include/require
    3.单一入口

 四、SPL标准库简介
  1.几种数据结构介绍:

实例:

<?php

/*	栈结构 后进先出
$stack = new SplStack();
$stack->push("data1<br>");
$stack->push("data2<br>"); echo $stack->pop();
echo $stack->pop();
*/
/*
队列 先进先出
$queue = new SplQueue();
$queue->enqueue("data1<br>");
$queue->enqueue("data2<br>");
echo $queue->dequeue();
echo $queue->dequeue();
*/ /* 堆
$heap = new SplMinHeap();
$heap->insert("data1<br>");
$heap->insert("data2<br>"); echo $heap->extract();
echo $heap->extract();
*/ // 打印固定尺寸数组
$array = new SplFixedArray(10);
$array[0] = 123;
$array[9] = 1234; var_dump($array); ?>

  

2.PHP链式操作的实现
  $db->where()->limit()->order();

实例:
前页:

<?php
$db = new IMooc\Database();
$db->where("id=1");
$db->where("name=2");
$db->order("id desc");
$db->limit(10); echo $db->where("id=1")->order("id desc")->limit(10); ?>

  

Database代码:

<?php
namespace IMooc; class Database{
function where($where){
return $this;
}
function order($order){
return $this;
}
function limit($limit){
return $this;
} } ?>

  

 笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2

大话PHP设计模式笔记的更多相关文章

  1. php设计模式笔记:单例模式

    php设计模式笔记:单例模式 意图: 保证一个类仅有一个实例,并且提供一个全局访问点 单例模式有三个特点: 1.一个类只有一个实例2.它必须自行创建这个实例3.必须自行向整个系统提供这个实例 主要实现 ...

  2. <大话设计模式>笔记

    读完了<大话设计模式>这本书,收获很多,对程序设计有了很多新的理解.将每章模式的大概要点做了些笔记以备查阅,一些设计模式书读完也对其了解得不是很透彻,需要以后在实践中来不断地加深理解吧.读 ...

  3. 韩天峰《大话PHP设计模式》听课笔记

    课程主要内容 1.PHP面向对象的高级特性 2.11种设计模式 3.PSR-0,Composer,Phar等最流行的技术 目标 掌握PHP各类设计模式,并具备设计纯面向对象框架和系统的能力   二.编 ...

  4. Asp.net设计模式笔记之二:应用程序分离与关注点分离

    本次笔记主要涉及的内容如下: 1.将智能UI(SmartUI)反模式重构成分层方式的示例代码 2.分层设计与传统的Asp.net WebForm模型(代码后植)相比具有的优势 3.逻辑分层概念以及分离 ...

  5. [设计模式] .NET设计模式笔记 - 了解设计模式

    今天在TerryLee的cnblog(http://terrylee.cnblogs.com)里看到了与设计模式相关的整套文章,初学设计模式看完每篇文章后做些笔记和摘抄. ●什么是设计模式,什么是架构 ...

  6. php设计模式笔记--总结篇

    一.引入  设计模式的一般定义不再说,只大概说一下我理解的设计模式,我理解的设计模式的主要目的是利用面向对象(类.接口等)特点,让代码更加易于扩展,易于重用,易于维护.这三个特点也就要求我们不要将太多 ...

  7. grasp设计模式笔记回顾

    根据讲师所讲做了一下笔记以便自己能方便学习: ------------------------------------------grasp设计模式: grasp(general responsibi ...

  8. Javascript设计模式笔记

    Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...

  9. 设计模式笔记(一):Singleton 设计模式

    今天开始学习设计模式,借此机会学习并整理学习笔记. 设计模式是一门不区分语言的课程,什么样的编程语言都可以用到设计模式.如果说java语法规则比作武功招式的话,那么设计模式就是心法. 设计模式共有23 ...

随机推荐

  1. idea 开启 tomcat 热部署 的 具体流程 和 使用方式

    1前言 一直以来,使用idea做web开发修改html.jsp.js文件后,必须手动重新部署tomcat,最少都有等个6 -10 秒, 甚至有时候还提示找不到某个编译文件报错,重新编译整个项目,那得等 ...

  2. let var const 区别

    let es6 语法 let是作用域是块级的,即{}内的范围 如果未声明变量就使用的话,报错ReferenceError,而var则会报错undefined(不存在变量提升) 只要块级作用域内存在le ...

  3. Centos7 文件权限理解(持续更新)

    后期排版,边学边记边敲 用户详情分析 管理员用户 root  0 虚拟用户 nobody  1-999 普通用户 test001  1000+ 输入ll命令查看当前目录文件详情 根据这张图片可知,目录 ...

  4. linux 三剑客(持续更新)排版后续再说,边学边记笔记

    切记:seq命令用于产生从某个数到另外一个数之间的所有整数.sed才是处理文本的命令 在遇到扩展符号时,需要添加特定参数,| () +[] 为扩展符号时,必须添加参数 egrep/grep -E  s ...

  5. day1 三位数各个位上的数字和

    int main(){ int x = 0; scanf("%d", &x); if (x > 999 || x < 0) { printf("输入错 ...

  6. Termux搭建hexo博客并部署到GitHub

    Termux搭建hexo博客并部署到GitHub 安装 termux-change-repo apt update apt install git && nodejs &&am ...

  7. 2021最新Termux安装Metasploit

    前言 因为某些脚本小子的用Termux搞破坏,所以Termux软件源移除了对Metasploit的支持,所以就不能直接用pkg和apt直接安装了. 但是不用担心,noob-hacker大大写了一个工具 ...

  8. 《剑指offer》面试题44. 数字序列中某一位的数字

    问题描述 数字以0123456789101112131415-的格式序列化到一个字符序列中.在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等. 请写一个函数,求任意第n位 ...

  9. golang中循环或递归求阶乘

    package main import "fmt" func factorialFor(num int) (ret int) { // 循环求阶乘 ret = 1 for i := ...

  10. golang中内存地址计算-根据内存地址获取下一个内存地址对应的值

    package main import ( "fmt" "unsafe" ) func main() { // 根据内存地址获取下一个字节内存地址对应的值 da ...