【SPL标准库专题(10)】Datastructures:SplObjectStorage

2019-05-25
阅读 2 分钟
1.5k
PHP SPL SplObjectStorage是用来存储一组对象的,特别是当你需要唯一标识对象的时候。PHP SPL SplObjectStorage类实现了Countable,Iterator,Serializable,ArrayAccess四个接口。可实现统计、迭代、序列化、数组式访问等功能。

【SPL标准库专题(9)】Datastructures:SplFixedArray

2019-05-24
阅读 2 分钟
1.5k
SplFixedArray主要是处理数组相关的主要功能,与普通php array不同的是,它是固定长度的,且以数字为键名的数组,优势就是比普通的数组处理更快。

【SPL标准库专题(8)】Datastructures:SplHeap & SplMaxHeap & SplMinHeap

2019-05-23
阅读 2 分钟
1.9k
堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二叉堆还常用于排序(堆排序)。

【SPL标准库专题(7)】Datastructures:SplPriorityQueue

2019-05-22
阅读 2 分钟
1.3k
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头取出。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先取出。优先队列具有最高级先出 (largest-in,first-out)的行为特征。总结下来就是普通队列有先进先出原则,优先级队列有优先级高先出原则,这个优先级可以设置;

【SPL标准库专题(6)】Datastructures:SplStack & SplQueue

2019-05-21
阅读 2 分钟
1.5k
这两个类都是继承自SplDoublyLinkedList,分别派生自SplDoublyLinkedList的堆栈模式和队列模式;所以放在一起来介绍;

【SPL标准库专题(5)】Datastructures:SplDoublyLinkedList

2019-05-20
阅读 3 分钟
1.3k
简述 双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址。 类摘要 {代码...} 实现了Iterator接口,可以快速实现迭代; 实现了 ArrayAccess 接口, 可以如数组般访问链表数据; {代码...} 其他的方法手册看看名称都能理解,就不说明了:[链接]

【SPL标准库专题(4)】Exceptions

2019-05-19
阅读 3 分钟
1.9k
了解SPL异常之前,我们先了解一下嵌套异常。嵌套异常顾名思义就是异常里面再嵌套异常,一个异常抛出,在catch到以后再抛出异常,这时可以通过Exception基类的getPrevious方法可以获得嵌套异常;

【SPL标准库专题(3)】Classes

2019-05-18
阅读 6 分钟
1.5k
我把SPL分为五个部分:Iterator,Classes,Exceptions,Datastructures,Function;而其中classes是就是做一些类的介绍(Iterator与Datastructures相关的类在各自文章内),在介绍这些类之前,先介绍几个接口:

【SPL标准库专题(2)】Iterator

2019-05-17
阅读 13 分钟
1.8k
SPL规定,所有部署了Iterator界面的class,都可以用在foreach Loop中。Iterator界面中包含5个必须部署的方法:

【SPL标准库专题(1)】SPL简介

2019-05-16
阅读 3 分钟
2k
根据官方定义,它是"a collection of interfaces and classes that are meant to solve standard problems" SPL是用于解决典型问题(standard problems)的一组接口与类的集合。 但是,目前在使用中,SPL更多地被看作是一种使object(物体)模仿array(数组)行为的interfaces和classes。SPL的核心概念就是Iterator。

【modernPHP专题(14)】内置的http服务器

2019-05-15
阅读 2 分钟
1.1k
PHP 5.4起就在CLI SAPI中内置了web服务器,但只是提供开发测试使用,不推荐使用中生产环境中。因为这个服务器接受处理请求时顺序执行的,不能并发处理。

【modernPHP专题(13)】ZendOpcache字节码缓存

2019-05-14
阅读 2 分钟
2k
字节码缓存不是PHP的新特性,有很多独立的扩展可以实现,比如APC、eAccelerator和Xache等,但是截至目前这些扩展都没有集成到PHP内核,从PHP 5.5.0开始,PHP内置了字节码缓存功能,名为Zend Opcache。

【modernPHP专题(12)】魔术方法小结

2019-05-13
阅读 4 分钟
1.2k
说明 魔术方法就是在特定场景下不需要调用而自动执行的方法。因为有魔术方法,所以我们的类可以写得很灵活~ {代码...} {代码...}

【modernPHP专题(11)】断言ASSERT

2019-05-12
阅读 2 分钟
1.3k
编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。程序员断言在程序中的某个特定点该的表达式值为真。如果该表达式为假,就中断操作。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用...

【modernPHP专题(10)】理解output buffer

2019-05-11
阅读 3 分钟
1.7k
操作系统中使用磁盘高速缓存技术来提高磁盘的I/O速度,对高速缓存复制的访问要比原始数据访问更为高效。例如,正在运行的进程的指令既存储在磁盘上,也存储在物理内存上,也被复制到CPU的二级和一级高速缓存中。

【modernPHP专题(8)】匿名函数和闭包

2019-05-10
阅读 9 分钟
977
匿名函数 {代码...} 闭包 PHP在默认情况下,匿名函数内不能调用所在代码块的上下文变量,而需要通过使用use关键字。 {代码...} 闭包的好处 1. 减少循环 {代码...} 2. 减少函数的参数 {代码...} 3. 解除递归函数 {代码...} 4. 关于延迟绑定 {代码...} 几个配合回调或闭包的函数 bool array_walk ( array &$array , ca...

【modernPHP专题(9)】匿名类

2019-05-09
阅读 4 分钟
1.6k
类结构 {代码...} 什么是匿名类? 先理解以下三个例子 例1. 闭包函数都是继承Closure类 {代码...} 例2. 将一个匿名函数绑定到一个类中。返回Closure类 {代码...} 3. 第二参数为null,代表静态调用static {代码...} 匿名类有什么用? 给类动态添加新方法 {代码...} 模板渲染输出 Template.php {代码...} Article.php {代...

【modernPHP专题(7)】生成器语法

2019-05-08
阅读 3 分钟
1.5k
PHP5.5实现了生成器,每当产生一个数组元素则用yield关键词返回,并且执行函数暂停,当执行函数next方法时,则会从上一次被yield的位置开始继续执行,如下例子,只会产生中间变量$i,并只在每次循环的赋值;

【modernPHP专题(6)】类的延迟绑定(后期绑定)

2019-05-07
阅读 3 分钟
1.1k
以static::来调用,是在运行的那个时刻才执行绑定操作; 父类中有个方法是延迟绑定的,在子类::调用这个方法的时候它又回到调用的子类开始向上找; example1: {代码...} example2: {代码...} new static()与new self() self - 就是这个类,是代码段里面的这个类。new self就是实例化本类; static - PHP 5.3加进来的只得...

【modernPHP专题(5)】类多继承的替代方案Traits

2019-05-06
阅读 4 分钟
1.2k
traits是PHP5.4新进入的特性,其目的就是解决PHP的类不能多继承的问题。Traits不是类!不能被实例化。可以理解为一组能被不同的类都能调用到的方法集合。只需要在类中使用关键词use引入即可,可引入多个Traits,用','隔开。

【modernPHP专题(4)】抽象类与接口

2019-05-04
阅读 6 分钟
1.1k
php5支持抽象类和抽象方法。类前加 abstract, 此类就成为抽象类,无法被实例化,此类天生就是用来被继承的,给子类提供了一个类的模板;类方法前加 abstract,是抽象方法,抽象方法不能有方法体;

【modernPHP专题(3)】依赖注入与服务容器

2019-05-03
阅读 5 分钟
1.4k
依赖倒置是一种软件设计思想,在传统软件中,上层代码依赖于下层代码,当下层代码有所改动时,上层代码也要相应进行改动,因此维护成本较高。而依赖倒置原则的思想是,上层不应该依赖下层,应依赖接口。意为上层代码定义接口,下层代码实现该接口,从而使得下层依赖于上层接口,降低耦合度,提高系统弹性

【modernPHP专题(2)】反射机制Reflection

2019-05-02
阅读 8 分钟
1.4k
用得比较多的就只有两个ReflectionClass与ReflectionObject,两个的用法都一样,只是前者针对类,后者针对对象,后者是继承前者的类;然后其中又有一些属性或方法能返回对应的Reflection对象(ReflectionProperty以及ReflectionMethod)

【modernPHP专题(1)】php7常用特性整理

2019-05-01
阅读 6 分钟
1.8k
PHP7性能 7最大的亮点,应该就是性能提高了两倍,某些测试环境下甚至提高到三到五倍,具体可以了解以下链接: PHP7 VS HHVM (WordPress) HHVM vs PHP 7 – The Competition Gets Closer! PHP 7.0 Is Showing Very Promising Performance Over PHP 5, Closing Gap With HHVM PHP7革新与性能优化 常用特性整理 标量类型声明...

【mysql的编程专题③】内置函数

2016-07-30
阅读 11 分钟
2.3k
常用abs(x) 返回x的绝对值floor(x) 返回小于x的最大整数值mod(x,y) 返回x/y的模(余数)rand() 返回0到1内的随机值,可以通过提供一个参数(种子)使rand()随机数生成器生成一个指定的值。truncate(x,y) 返回数字x截短为y位小数的结果round(x,y) 返回参数x的四舍五入的有y位小数的值

【mysql的编程专题②】触发器

2016-07-29
阅读 3 分钟
1.9k
类似tp里面的数据模型回调接口,在数据表增删改的前或后触发执行其他的预订的sql;一个触发器要具备4要素:1.监视地点 -- 要执行触发器的表2.监视事件 -- 由什么DML事件来牵引3.触发时间 -- 是在DML事件发生的前或后4.触发事件 -- 要触发执行的预订sql,也是DML

【mysql的编程专题①】流程控制与其他语法

2016-07-28
阅读 5 分钟
1.9k
流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中;如果用在select上就会随着query出来的row来隐式迭代;

【mysql的设计与优化专题(6)】mysql索引攻略

2016-07-27
阅读 7 分钟
2.8k
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找,而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果,具体的实现方式后续本博客会出一个算法专...

【mysql的设计与优化专题(5)】慢查询详解

2016-07-25
阅读 9 分钟
3.4k
show [session|global] status like .... 如果你不写 [session|global] 默认是session 会话,只取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该 global)

【mysql的设计与优化专题(4)】表的垂直拆分和水平拆分

2016-07-25
阅读 1 分钟
2.3k
垂直拆分 垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表通常我们按以下原则进行垂直拆分: 把不常用的字段单独放在一张表; 把text,blob等大字段拆分出来放在附表中; 经常组合查询的列放在一张表中; 垂直拆分更多时候就应该在数据表设计之初就执行的步骤,然后查询的时候用jion关键起来即可; 水平拆分 水...