2021年PHP 您所在的位置:网站首页 php面试题2021答案详细 2021年PHP

2021年PHP

2024-07-01 23:21| 来源: 网络整理| 查看: 265

1. PHP的哪些语言特征,在合适的场景可以显著减少程序的内存开销? Generator Trait Type hint SPL

解析:

Generator 生成器具体详解可以参考: https://blog.51cto.com/chinalx1/2089327 如果不考虑用Generator来实现协程,那么Generator的一个最大的作用就是为含有大量数据的集合(当前这些数据集是规则的,就像range所返回的那些数据)的遍历节省空间。 Trait 详细了解参考https://blog.csdn.net/lemony521/article/details/78322652 是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制。 Type hint 类型提示 从PHP5开始,我们可以使用类型提示来指定定义函数时,函数接收的参数类型。如果在定义函数时,指定了参数的类型,那么当我们调用函数时,如果实参的类型与指定的类型不符,那么PHP会产生一个致命级别的错误(Catchable fatal error)。 SPL PHP标准库 SPL,PHP 标准库(Standard PHP Library) ,从 PHP 5.0 起内置的组件和接口,并且从 PHP5.3 已逐渐的成熟。SPL 其实在所有的 PHP5 开发环境中被内置,同时无需任何设置。

2. 对于PHP的自动加载描述正确的是 自动加载函数只支持按Class / Interface / Trait 名加载,不能按 function名加载 Composer的自动加载是通过 __autoload 函数实现的 在文件顶部 use 的时候会载入对应的类 现在大多数类库都遵循PSR0 规范

解析:

自动加载的主要实现方式 __autoload 与 SPL 标准库提供的spl_autoload_register 函数两种,目前主流多是后一种。 两种方式的详解介绍可以参考: https://www.jb51.net/article/166979.htm https://www.jb51.net/article/31279.htm spl_autoload_register 函数用法就是装载自定义的加载函数,所以自动加载函数能按function名加载。 Composer的自动加载是通过 __autoload 函数实现的 在文件顶部 use 的时候会载入对应的类 这里并不是,只用在具体调用类时才会加载类,lazy loading的意思。 可以参考: https://blog.csdn.net/weixin_39610956/article/details/115148899 现在大多数类库都遵循PSR0 规范 PSR0实际是对实现自动加载的一种规范标准,PSR4是对PSR0的一些补充,简单说目前大多项目都会使用autoload自动加载机制,那么遵循PSR0规范也是必然的。

3. 对于 Trait 描述正确的是 子类中引入的 Trait 里的方法会覆盖父类的方法 在Trait中不可以调用引用类里的方法 一个类无法同时引入两个包含相同方法的 Trait 可以用来减少重复代码

解析:

关于Trait 的介绍在第一题中有链接可以阅读学习下。 子类中引入的 Trait 里的方法会覆盖父类的方法 这是正确的,Trait的优先级:自身方法>trait的方法>继承的方法 在Trait中不可以调用引用类里的方法 这是错误的! 代码如下:

trait HelloWorld{ public function sayHello(){ echo 'hello'; } public function traitDemo(){ echo 'this trait'; $this->demo(); } } class TestTrait { use HelloWorld; public function demo(){ echo 'demo'; } } $obj = new TestTrait(); $obj->traitDemo(); // 会输出 this trait demo

一个类无法同时引入两个包含相同方法的 Trait 这是错误的! Trait 可以引入多个, 多个trait中存在同名方法时, 需要指定使用哪个方法,可用 insteadof 指定使用哪个方法替代同名方法或者是 as 取别名 Trait 的使用小细节可以参考: https://blog.csdn.net/xiantianga6883/article/details/118576345 可以用来减少重复代码 这是Trait的主要目的,提供了灵活的代码复用机制。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有