PHP 算法02之插入排序

2018-07-17
阅读 1 分钟
1.1k
描述 举例4个数: 7,4,3,8 从左往右两两比较,即 7和4比较,发现7大于4,那么交换,数列变成 4,7,3,8 。 然后我们再看第2位和第三位,发现7大于3,那么交换,数列变成 4,3,7,8 。 然后再去看前两位,左边还是大于右边,那么继续交换将变成 3,4,7,8 。 最后看第三位和第四位,发现左边小于右边,无需交换,最终是 3,4,7,...

PHP 算法01之选择排序

2018-07-17
阅读 1 分钟
1.2k
描述 选择最小的元素由左到右依次交换顺序即完成元素由小到大的排序。选择排序重点在于选择最小元素。以下是较为详细的描述: 首先,把所有的数据循环一遍找到最小的数,然后和第一个数交换位置。 然后从第二个数起,一直循环到最后一个,找到最小的数和第二个交换。 如此一直找到最后一个。 选择排序每次循环都能排好一...

PHP 设计模式之二——工厂模式

2017-08-17
阅读 2 分钟
2k
工厂模式的使用频率比较高。它的定义为:定义一个类,该类主要负责系统的去实例化一些其它的类。通俗点说就是,你告诉我你需要哪个类的实例即可,其它的你不用管,我帮你去实例化,你只管用即可。

PHP 设计模式之一——单例模式

2017-08-17
阅读 2 分钟
2.2k
对于一个程序来说,某些特殊的类在程序运行期间仅仅保证只被实例化一次很重要。打印服务是单例模式出镜率比较高的一个例子,对于打印机同一时刻只能打印一个文件,因此出现两个打印服务实例的时候,肯定有一个是处于闲置状态浪费资源,如果没有闲置,那么就会发生资源争夺情况,你肯定不会希望一页纸上交替打印了两个文...

Codeigniter 4.0-dev 版源码学习笔记之七—— View 视图

2017-05-16
阅读 4 分钟
2.8k
CI 的 View 没有像 Laravel 等一些流行框架一样设计的那么重,有自己的一套模版机制,CI 一直采用纯天然的 PHP 模板形式,纯天然的好处是不用再学习一套模板语言了,缺点是不能用到一些便利的设计模式,比如不能使用继承布局等等,当然你也可以加第三方的视图组件进来。

Codeigniter 4.0-dev 版源码学习笔记之六——控制器

2017-05-15
阅读 2 分钟
2.5k
其实一开始我是很纠结是否要写控制器的源码分析的,因为控制器的源码太少了,少到你不相信这是一个 MVC 里的一个重头。直觉里,大家都觉得控制器作为各个请求的“入口”,其后端应该有很多很多的代码支撑才可以的,然而事实相反,去掉注释后,一共才 60 行左右。

Codeigniter 4.0-dev 版源码学习笔记之五——相对于 3.x 的变化

2017-05-12
阅读 2 分钟
2.5k
CI 为了追上“大家”的脚步,这次跨了一大步,尽量使用了更多的流行设计理念,甚至连 PHP 的支持版本都是从 7 开始起步的。我在之前阅读源码的同时也发现了很多变化的地方,在此把已经发现的列举出来,不过肯定是不全的,因为我还没读完(逃跑~)。等再发现新的值得一聊的,并且能凑够一篇文章的内容的话,我会再继续写一...

Codeigniter 4.0-dev 版源码学习笔记之四——详细路由过程

2017-05-12
阅读 3 分钟
3.3k
我个人觉得在当前 MVC 流行的架构下,要想去了解一个框架,或者是一个基于此架构下的应用程序,最好的入手方式就是先看路由,虽然路由不是 MVC 里的任何一个,但是知道了路由的来龙去脉就知道了整个框架或者是应用的结构。从一个请求开始,具体分配到哪个 C 去执行的, C 里又调用了哪些东西,整个脉络也就清晰了。

Codeigniter 4.0-dev 版源码学习笔记之三——核心文件 Codeigniter.php

2017-05-08
阅读 3 分钟
2.7k
Codeigniter.php 是 CI 4 的核心所在,在这里接收并处理了 request 请求,安全检查,缓存处理, URL 解析以及路由匹配,执行过滤器,加载运行 Controller ,组装 repsonse 响应并发送等。

Codeigniter 4.0-dev 版源码学习笔记之二——入口以及初始化操作

2017-05-06
阅读 2 分钟
3.8k
index.php 是整个框架的入口文件,也就是说所有的请求都要从它这里开始。因为 index.php 源码非常简洁,那么我们直接放一张源码截图,按着截图说一下源码。

Codeigniter 4.0-dev 版源码学习笔记之一——前言以及 CI 4 预览

2017-05-05
阅读 2 分钟
4.7k
为什么选择开发过程中的 CI 4 作为源码解读版本:(1)首先我选 CI 是因为它之前的稳定版都是相对比较轻量小巧的,而且可以认为是简单的。(2)为什么没有选择目前稳定的 3.x 版是因为我个人认为这个版本因为历史包袱原因确实在理念方面有些老了,用它没问题,但是学习它就不值得了。(3)选一个开发还没有稳定版的原因...