「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」
课程背景
- 最近完成一个项目 对于代码分层有了一丢丢了解 但是架构设计合理性上存在问题
万物看本质基本功硬 底层知识扎实才能写出更优质的代码 才能走得更远- 作为努力奔跑的程序员 又一次的去温习 思考 设计模式等基础的php知识
- 因为掘金粑粑有奖励,所以把学习的笔记整理记录并分享了出来。
正文开始
SPL库提供了很多高级功能,这里介绍的是几个基本的方法的使用
栈
数据结构栈特点是 先进后出
$stack = new SplStack();
$stack->push("tom");
$stack->push("jerry");
$stack->push("aimy");
if(!$stack->isEmpty()){echo $stack->pop();echo $stack->count();echo '<br>';}
if(!$stack->isEmpty()){echo $stack->pop();echo $stack->count();echo '<br>';}
if(!$stack->isEmpty()){echo $stack->pop();echo $stack->count();echo '<br>';}
因为SplStack继承自SplDoublyLinkedList类,所以一些基本的判断为空,判断数量的函数默认都是可以使用的。SplStack方法中只会编写自己类特有的方法。
SplDoublyLinkedList
队列
数据结构队列的特点是先进先出
$query = new SplQueue();
$query->enqueue("data1");
$query->enqueue("data2");
echo $query->dequeue();
echo $query->dequeue();
队列可能是我们平时接触最多的一种数据结构了,类似于抢购。先抢购到的人肯定是先去支付领奖的。我们通用的做法都是通过Redis去实现,因为Redis能记录并保存数据。而传统的基于PHP-FPM模式的请求,当请求完成脚本完成也就结束了,数据并不会持久的去记录下来。所以在这种PHP-FPM模式中,自带的这个数据结构好像很少用的。
我的理解 这个数据结构只会在 php-cli模式中被使用,因为那时候php的进程是常驻内存的。数据也就能保存起来。具体这个队列在哪里会用到,具体的使用方法,目前我还是在摸索中。
堆
$heap = new SplMinHeap();
$heap->insert("data1");
$heap->insert("data2");
echo $heap->extract();
echo $heap->extract();
数组
$array = new SplFixedArray(10);
var_dump($array);