大话PHP设计模式笔记
针对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设计模式笔记的更多相关文章
- php设计模式笔记:单例模式
php设计模式笔记:单例模式 意图: 保证一个类仅有一个实例,并且提供一个全局访问点 单例模式有三个特点: 1.一个类只有一个实例2.它必须自行创建这个实例3.必须自行向整个系统提供这个实例 主要实现 ...
- <大话设计模式>笔记
读完了<大话设计模式>这本书,收获很多,对程序设计有了很多新的理解.将每章模式的大概要点做了些笔记以备查阅,一些设计模式书读完也对其了解得不是很透彻,需要以后在实践中来不断地加深理解吧.读 ...
- 韩天峰《大话PHP设计模式》听课笔记
课程主要内容 1.PHP面向对象的高级特性 2.11种设计模式 3.PSR-0,Composer,Phar等最流行的技术 目标 掌握PHP各类设计模式,并具备设计纯面向对象框架和系统的能力 二.编 ...
- Asp.net设计模式笔记之二:应用程序分离与关注点分离
本次笔记主要涉及的内容如下: 1.将智能UI(SmartUI)反模式重构成分层方式的示例代码 2.分层设计与传统的Asp.net WebForm模型(代码后植)相比具有的优势 3.逻辑分层概念以及分离 ...
- [设计模式] .NET设计模式笔记 - 了解设计模式
今天在TerryLee的cnblog(http://terrylee.cnblogs.com)里看到了与设计模式相关的整套文章,初学设计模式看完每篇文章后做些笔记和摘抄. ●什么是设计模式,什么是架构 ...
- php设计模式笔记--总结篇
一.引入 设计模式的一般定义不再说,只大概说一下我理解的设计模式,我理解的设计模式的主要目的是利用面向对象(类.接口等)特点,让代码更加易于扩展,易于重用,易于维护.这三个特点也就要求我们不要将太多 ...
- grasp设计模式笔记回顾
根据讲师所讲做了一下笔记以便自己能方便学习: ------------------------------------------grasp设计模式: grasp(general responsibi ...
- Javascript设计模式笔记
Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...
- 设计模式笔记(一):Singleton 设计模式
今天开始学习设计模式,借此机会学习并整理学习笔记. 设计模式是一门不区分语言的课程,什么样的编程语言都可以用到设计模式.如果说java语法规则比作武功招式的话,那么设计模式就是心法. 设计模式共有23 ...
随机推荐
- 安装Apache-storm-0.9.1-incubating图解教程
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6596214331988247054/ 安装步骤 (1) 安装Zookeeper集群,可以参考前一篇文章,本文已安装 ...
- 关于包装类Integer,Long比较用==和equals的问题
所有整型包装类对象之间值的比较,全部使用 equals 方法比较. 说明:对于 Integer var = ? 在-128 至 127 之间的赋值,Integer 对象是在 IntegerCache. ...
- Java加减乘除计算器实现
加减乘除计算机的实现 public static void main(String[] args) { while(true) { System.out.println("依次输入要计算的2 ...
- C#检测外部exe程序弹窗错误,并重启
private void button2_Click(object sender, EventArgs e) { string mainTitle = System.Configuration.Con ...
- office 下载(免费使用
https://otp.landian.vip/zh-cn/download.html
- Golang 记录
Golang 笔记 1. hello Golang 新建项目,推荐GoLand工具 GOPATH目录:D:\go\awesomeProject 三个标准目录:bin,pkg,src MAIN目录:D: ...
- Mybatis 学习记录 续
项目结构如下: 1.数据库建表 表名:user 结构: 内容: 2.pom.xml文件更新如下: 注:其中build部分尤其需要重视 <?xml version="1.0" ...
- 【解决了一个小问题】golang go.mod中多了一个斜杠导致replace无效
replace github.com/sxxx/common_lib/src/ => ../../common_lib/src 修改成 replace github.com/sxxx/commo ...
- Servlet Listener(监听器)
监听器 Listener 是一个实现特定接口的 Java 程序,这个程序专门用于监听另一个 Java 对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即自动执行.监听器的相关概 ...
- vue 快速入门 系列 —— 侦测数据的变化 - [vue api 原理]
其他章节请看: vue 快速入门 系列 侦测数据的变化 - [vue api 原理] 前面(侦测数据的变化 - [基本实现])我们已经介绍了新增属性无法被侦测到,以及通过 delete 删除数据也不会 ...