PHP新特性中详细介绍的命名空间、字符和生成器

本文主要介绍PHP的新特性的名称空间、字符和生成器相关内容,并与大家分享,供大家参考。

1。命名空间

什么是名称空间

1)。命名空间是介绍在PHP 5.3中,类似于文件夹的功能。例如,在symfony框架的请求和响应都坐落在symfony的命名空间。



2)。名称空间应该始终位于PHP标签的底线。



3)命名空间of.php文件不同于操作系统的物理文件系统。这是一个虚拟概念。这是没有必要的对应于文件系统的目录结构。即便如此,PHP psr4自动加载标准件,绝大多数是与广泛使用的兼容,将处理到文件系统命名空间目录。



4)。名称空间只是PHP语言的标记,PHP解释器将类、接口、函数和常量名称作为前缀添加到PHP语言中。

为什么它需要名称空间

1)。命名空间允许程序像沙箱一样运行,并且可以与其他开发人员编写的代码一起使用。确保您自己的代码和项目可以与项目的第三方依赖性一起使用。

声明命名空间

1)。顶层名称空间通常用于设置顶级供应商名称。2)。供应商的命名空间必须有一个全局唯一性,和subnamespace并不重要,但它有助于组织工程的代码。

导入别名

1)。从PHP5.3,你可以导入的PHP类,接口,和其他的命名空间,并为他们创建一个别名。从php5.6,你可以导入的PHP函数和常数,并为它创建一个别名。



2)。当使用关键字输入代码,你不需要在开始添加符号,因为PHP假定进口是完全限定的命名空间,使用关键字必须出现在全球范围内,即,它不能出现在类或函数,因为关键是在编译的时候,然而,使用关键字可以用来导入其他命名空间的代码之后命名表。



从php5.6开始,我们可以导入函数和常量。


< PHP
使用函数命名空间函数名;

FunctionName();


它也可以导入到常量,


使用命名空间 cons_name常数;
回声cons_name;


函数和常量的别名与类名的创建相同。

最佳实践

1)PHP允许在PHP文件中定义多个命名空间,但这样做很容易使人困惑,并违背了一类文档的良好实践。2)。当在命名空间中命名全局命名空间的代码时,我们需要添加前缀,它告诉PHP我们需要在全局中找到这个类,比如PHP原生异常类。

自动加载

1)。命名空间由php-fig.奠定的坚实的基础psr4自动装载机

2。使用界面

1)。就像我可以选择开不同的车,因为他们都有方向盘,油门和刹车,燃料都是汽油。

三.字符

1)。形状是类的一部分实现(常量、属性和方法)。它可以混合到一个或多个现有PHP类中。一个类有两个函数,显示类可以做什么(类似的接口),提供模块化实践(类似的类)。



2)。该字符允许两个不相关的类使用相同的属性和方法。



3)the.php解释器将复制并粘贴文字到类的定义。

4。创建一个发电机

1)收益词关键字在正常函数中使用一次或多次,没有返回值,只生成一个值,而函数是一个生成器:


< PHP
功能mygenerator(){
yield'value1;
yield'value2;
}


当调用的函数发生器,PHP返回属于发电机类对象,这个对象可以用(一)迭代函数迭代,PHP需要的对象实例,计算发电机的价值提供的下一次迭代是恩典每个输出值后,发电机的内部状态总是停下来恢复开关之间,直到定义结束后或遇空语句,如返回:


< PHP
foreach(mygenerator yieldedvalue美元()){
回声yieldedvalue美元,php_eol;
}


上述示例将输出


value1
value2


2)。发电机是如何保存内存的生成一系列值(错误)


功能makerange($长度){
数据集= { };
($ i = 0;$ i $ $长度;$ + +){
$;
}
返回数据集;
}

customrange美元= makerange(1000000);
foreach(customerange美元美元我){
echo $我,php_eol;
}


预先创建了一个大整数数组,并看到了使用生成器的示例。


功能makerange($长度){
($ i = 0;$ i $ $长度;$ + +){
收益1美元;
}
}

foreach(makerange(1000000)达我){
echo $我,php_eol;
}


在迭代的GB -函数的实际大小的文件,迭代器是一个大的传播。


功能演示(文件){
为处理= fopen(文件,'rb);
如果($ = false){
抛出异常();
}
是否 / /外汇经营资金()函数检测是否到达文件尾
而(外汇经营资金($处理)= false){
/ / fgetcsv()线,一次读一个CSV文件
产量fgetcsv($处理);
}
Fclose($处理)
}

foreach(GetRows(数据.csv)达行){
print_r(合排);
}


3)。生成器没有向PHP添加新功能,它需要在数据集中实现快进、快退和查找最佳功能,编写自己的类实现迭代器接口,或者在标准库中使用原生PHP迭代器。



本地的迭代器的链接

总结

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一定的帮助。如果有任何疑问,您可以留言交流,谢谢您的支持。