2021年PHP-Laravel面试题问卷题 答案记录

本文详细解析了2021年PHP-Laravel面试的相关问题,涉及PHP特性如Generator、Trait、Type hint和SPL的内存管理,PHP的自动加载、Trait、Composer的使用,JWT、Composer管理、Laravel特性和版本控制等多个方面,旨在帮助开发者准备面试和深化对PHP-Laravel的理解。
摘要由CSDN通过智能技术生成

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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值