PHP的SPL标准库的用法介绍

PHP的SPL标准库的用法介绍,第1张

本文介绍下,php编程中SPL中的用法,SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 50 起内置的组件和接口,有需要的朋友参考下。

PHP SPL的用法

SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 50 起内置的组件和接口,并且从 PHP53 已逐渐的成熟。SPL 其实在所有的 PHP5 开发环境中被内置,同时无需任何设置。

似乎众多的 PHP 开发人员基本没有使用它,甚至闻所未闻。究其原因,可以追述到它那阳春白雪般的说明文档,使你忽略了「它的存在」。SPL 这块宝石犹如铁达尼的「海洋之心」般,被沉入海底。而现在它应该被我们捞起,并将它穿戴在应有的位置 ,而这也是这篇文章所要表述的观点。

SPL 提供了什么?

SPL 对 PHP 引擎进行了扩展,例如 ArrayAccess、Countable 和 SeekableIterator 等接口,它们用于以数组形式 *** 作对象。同时,你还可以使用 RecursiveIterator、ArrayObejcts 等其他迭代器进行数据的迭代 *** 作。

它还内置几个的对象例如 Exceptions、SplObserver、Spltorage 以及 splautoloadregister、splclasses、iteratorapply 等的帮助函数(helper functions),用于重载对应的功能。

这些工具聚合在一起就好比是把多功能的瑞士军刀,善用它们可以从质上提升 PHP 的代码效率。那么,如何发挥它的威力?

重载 autoloader

如果你是位「教科书式的程序员」,那么你保证了解如何使用 __autoload 去代替 includes/requires *** 作惰性载入对应的类,对不?

但久之,你会发现你已经陷入了困境,首先是你要保证你的类文件必须在指定的文件路径中,例如在 Zend 框架中你必须使用「_」来分割类、方法名称(你如何解决这一问题?)。

另外的问题:

当项目变得越来越复杂, __autoload 内的逻辑也会变得相应的`复杂。到最后,甚至你会加入异常判断,以及将所有的载入类的逻辑如数写到其中。

大家都知道「鸡蛋不能放到一个篮子中」,利用 SPL 可以分离 __autoload 的载入逻辑。只需要写个你自己的 autoload 函数,然后利用 SPL 提供的函数重载它。

例如,上述 Zend 框架的问题,你可以重载 Zend loader 对应的方法,如果它没有找到对应的类,那么就使用先前定义的函数。

复制代码 代码示例:

<php

class MyLoader {

public static function doAutoload($class) {

// 本模块对应的 autoload *** 作

}

}

spl_autoload_register( array('MyLoader', 'doAutoload') );

>

spl autoload register 还能以数组的形式加入多个载入逻辑。同时,你还可以利用spl autoload unregister 移除已经不再需要的载入逻辑,这功能总会用到的。

迭代器

迭代是常见设计模式之一,普遍应用于一组数据中的统一的遍历 *** 作。可以毫不夸张的说,SPL 提供了所有你需要的对应数据类型的迭代器。

有个非常好的案例就是遍历目录。常规的做法就是使用 scandir ,然后跳过「「 和 「」,以及其它未满足条件的文件。例如你需要遍历个某个目录抽取其中的文件,就需要判断是否是 jpg、gif 结尾。

使用 SPL 的迭代器执行上述递归寻找指定目录中的文件的例子:

复制代码 代码示例:

<php

class RecursiveFileFilterIterator extends FilterIterator {

// 满足条件的扩展名

protected $ext = array('jpg','gif');

/

提供 $path 并生成对应的目录迭代器

/

public function __construct($path) {

parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)));

}

/

检查文件扩展名是否满足条件

// >

5个常用的Python标准库:

1、os:提供了不少与 *** 作系统相关联的函数库

os包是Python与 *** 作系统的接口。我们可以用os包来实现 *** 作系统的许多功能,比如管理系统进程,改变当前路径,改变文件权限等。但要注意,os包是建立在 *** 作系统的平台上的,许多功能在Windows系统上是无法实现的。另外,在使用os包中,要注意其中的有些功能已经被其他的包取代。

我们通过文件系统来管理磁盘上储存的文件。查找、删除、复制文件以及列出文件列表等都是常见的文件 *** 作。这些功能通常可以在 *** 作系统中看到,但现在可以通过Python标准库中的glob包、shutil包、ospath包以及os包的一些函数等,在Python内部实现。

2、sys:通常用于命令行参数的库

sys包被用于管理Python自身的运行环境。Python是一个解释器,也是一个运行在 *** 作系统上的程序。我们可以用sys包来控制这一程序运行的许多参数,比如说Python运行所能占据的内存和CPU,Python所要扫描的路径等。另一个重要功能是和Python自己的命令行互动,从命令行读取命令和参数。

3、random:用于生成随机数的库

Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。

4、math:提供了数学常数和数学函数

标准库中,Python定义了一些新的数字类型,以弥补之前的数字类型可能的不足。标准库还包含了random包,用于处理随机数相关的功能。math包补充了一些重要的数学常数和数学函数,比如pi、三角函数等等。

5、datetime:日期和时间的 *** 作库

日期和时间的管理并不复杂,但容易犯错。Python的标准库中对日期和时间的管理颇为完善,你不仅可以进行日期时间的查询和变换,还可以对日期时间进行运算。通过这些标准库,还可以根据需要控制日期时间输出的文本格式。

除此之外,Python还有很多第三方库,了解更多可移步:oldboyedu

你做rpg游戏的话应该用的就不是控制台了吧,

如果不是控制台的话,应该和具体使用的开发库有关

例如,Windows API的窗口的消息处理在你按下键时会有消息送到处理函数。

DirectX 的DirectInput8则是你可以在循环里检查是否按下了某个键,

只有按了某个键才退出循环继续执行接下来的程序,不然就一直循环检查。

虽然用的是c++,但是你要明白c++是一个程序设计语言。而应用这个语言的平台

也提供了一些拓展,这些扩展导致你需要了解你应用的是什么才能作出决定,

c++只是提供了一些语法以及标准库等的支持,并不是样样都囊括了。

getchar()是c语言中的一个输入函数,

可以用它来赋一个字符的值

例如:    char a;

a=getchar();

当你在键盘上输入一个字符(如输入g)后按回车,那么字符变量a的值就是'g'了。

与scanf的区别:

1、getchar()函数只能输入一个字符型的值,而scanf()函数除了字符型,还可以输入多种数据类型的值,包括整型、浮点型等。

2、scanf()函数输入字符型需要%c说明符,而getchar()函数不需要说明符。

扩展资料:

getchar()函数的注意事项:

1、当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。

当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。

如果用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。

2、getchar有一个int型的返回值,当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。

参考资料:

百度百科-getchar()

百度百科-scanf()

以上就是关于PHP的SPL标准库的用法介绍全部的内容,包括:PHP的SPL标准库的用法介绍、二级Python----Python的内置函数及标准库(DAY 8)、Python 常用的标准库以及第三方库有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10107350.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存