java - PHP5的类实例变量的声明问题

查看:69
本文介绍了java - PHP5的类实例变量的声明问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

private $db = new Db();

如上,在php5的类中,如果直接声明一个实例变量,就会报类声明错误

改成下面这样就可以

private $db = null;
    
public function __construct(){
    $this->db = new Db();    
}

非得先声明一个空值,再用方法赋值,搞的常常写出来查半天发现没bug,才明白原来是语法要求。

不明白是基于什么考虑,我理解,可能是php5学习面象对象学的还不完善,所以有很多问题,大伙聊聊。

补问:PHP7还是这样吗?

鸟哥,求撸 @Laruence
.

解决方案

因为如果允许
private $db = new Db();
这样的语法,那么,文件被加载后,Db类就被初始化了。
请注意,是A类被载入内存,Db类就被实例化了。
而如果Db类也用了同样的语法,那么可能你include一个文件,就会很慢,因为include的同时,就在进行一系列的类实例化行为。

而禁用这种特性,只允许在类构造方法中实例化其他类,就能很好的控制类实例化的流程了。加载类时,永远不会产生附带的类实例化。

无论对于系统的优化,还是对于程序运行时间的掌控,可预测、可控的,才是好的、可持续的。

这篇关于java - PHP5的类实例变量的声明问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆