大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO)。
十多年的祥云网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整祥云建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“祥云网站设计”,“祥云网站推广”以来,每个客户项目都认真落实执行。
PHP
SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现。
SplQueue类摘要如下:
SplQueue简单使用如下:
复制代码
代码如下:
$queue
=
new
SplQueue();
/**
*
可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
*
(1)SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_KEEP
(默认值,迭代后数据保存)
*
(2)SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_DELETE
(迭代后数据删除)
*/
$queue-setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_DELETE);
//SplQueue::enqueue()其实就是
SplDoublyLinkedList::push()
$queue-enqueue('a');
$queue-enqueue('b');
$queue-enqueue('c');
//SplQueue::dequeue()其实就是
SplDoublyLinkedList::shift()
print_r($queue-dequeue());
foreach($queue
as
$item)
{
echo
$item
.
PHP_EOL;
}
print_r($queue);
而优先队列SplPriorityQueue是基于堆(后文介绍)实现的。
SplPriorityQueue的类摘要如下:
SplPriorityQueue简单使用:
$pq
=
new
SplPriorityQueue();
$pq-insert('a',
10);
$pq-insert('b',
1);
$pq-insert('c',
8);
echo
$pq-count()
.PHP_EOL;
//3
echo
$pq-current()
.
PHP_EOL;
//a
/**
*
设置元素出队模式
*
SplPriorityQueue::EXTR_DATA
仅提取值
*
SplPriorityQueue::EXTR_PRIORITY
仅提取优先级
*
SplPriorityQueue::EXTR_BOTH
提取数组包含值和优先级
*/
$pq-setExtractFlags(SplPriorityQueue::EXTR_DATA);
while($pq-valid())
{
print_r($pq-current());
//a
c
b
$pq-next();
}
SPL是php标准库(Standard PHP Library)的简写。他是从php5.0版本开始内置的组件和接口。提供了重载,迭代器,数据结构等的实现。
变化过快的现代商业环境.笔者发现,如今支持面向过程的开发者大多知识不够全,不够广,还不足以用OO来解决商业开发。
当然这不是绝对,但一位有着C++,JAVA,Smalltalk、EIFFEL等开发语言背景的程序员,他会无一不支持OO开发模式,相反网络知识框架基础较少,各种协议一知半解,只会PHP的开发人员他们会觉得面向过程最适合他们。
全面剖析:
下一步中大型PHP商业应用的主流的开发将会是以OO,OA软件开发模式主领潮流,从PHP5到PHP6,google Trends足以证明这一点,过去传统的面向过程的开发模式将会被弃之,如果你是一位真正合格程序员,你会发现OO所带来的好处是深远的。
不仅是软件工程所带来的收益,而且此种思维理念对个人思维方式定有大的变革,你会发现你做事情开始OO方式,OO无处不在。
当然笔者不想去论述用面向过程写PHP代码所带来的好处(如简单的应用),那种单人时代的开发方式如儿童时代已不适合需求复杂。
SPL为PHP标准库。内容主要包括数据结构类,迭代器,异常类,SPL函数,还有一些接口。
数据结构类主要包括栈,队,堆,数组等基本数据结构,php已经帮你封装好了,如果你要做数据处理可以直接拿来用,很方便。
迭代器是php在的新特征,在oop中使用很灵活,比如可以用来遍历对象数组。
异常类主要是把一些常见异常封装起来了,做成了接口,通俗将就是有个模版格式,你照着他的要求扩展即可。
SPL函数里面有个很重要的东西,spl_autoload_register(),在oop中用来实现自动加载。
其它的接口,比如SplObserver,用php这个内置的接口实现观察者模式很方便。
主要就这些了,如果你想深入了解,可以查看官方手册。