为什么说Laravel比较重,效率不如其他框架?从加载配置文件可见一斑

   刚上手thinkphp5项目,原始项目所有配置都写在了config.php主配置文件中,包括项目主配置、业务配置和运维相关配置。这样会存在一个问题(),运维部署项目的时候一般会单独保存生产环境中账号密码等配置,并不关心项目配置和业务配置。配置文件只有一个的情况下,不可避免,每次上线增加或减少的配置都要通知运维更新,这种耦合在一起的情况不可取。

  于是就把运维相关配置都写在了.env文件中,在config.php文件中使用自定义env辅助函数加载env配置。但是问题来了,启动时一直报env未定义错误。

  写env辅助函数还是从Laravel学来的,在tp里报错有点百思不得其解。看了tp框架启动源码后发现是这么回事,tp启动一开始首先是加载config配置文件然后才是加载扩展函数,所以include配置的时候自然而然报未定义错误。

   Laravel为什么不报错?看了Laravel启动过程和加载.env过程明白过来。Laravel启动之初首先用env()检查环境变量,如果没有会使用vlucas/phpdotenv库加载.env文件,而tp并没有这一步,所以写在配置文件中的env函数不可用,所以就报错了。

 没办法,只能使用php自带的getenv了。

 回头又看了一下dotenv源码,工厂函数实例化了三个adapters(new EnvConstAdapter, new PutenvAdapter, new ServerConstAdapter),读取到env值后分别写到了$_ENV、$_SERVER、putenv中了,而tp只用了一种(putenv)方式保存.env的值。

从加载环境变量这个点上就能看出Laravel和tp的特点了:

Laravel:优雅、全面、上手快;对应的缺点就是东西多、重、效率不高。

tp:实用主义、简单、小而快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值