怎么在domain的构造函数中调用DI服务?

项目中需要在domain层的一个类的构造函数中给一个private变量赋值,值来自DI服务中保存的变量。但是调用的时候,提示为Notice: Trying to get property of non-object
已邀请:

登山人

赞同来自:

class User{
private $userid = '';
function __construct () {
$this->userid = \PhalApi\DI()->globalVar->userInfo->id;
}
上边是部分代码

dogstar - PhalApi创始人

赞同来自:

可以这样调试一下:
var_dump(\PhalApi\DI()->globalVar);
var_dump(\PhalApi\DI()->globalVar->userInfo);
var_dump(\PhalApi\DI()->globalVar->userInfo->id);
看下是哪一步为NULL。

登山人

赞同来自:

调试结果如下:
var_dump(\PhalApi\DI()->globalVar);     有这个类
var_dump(\PhalApi\DI()->globalVar->userInfo);   有这个属性,但是为空,这个属性在类中已经定义好,值为空字符串
var_dump(\PhalApi\DI()->globalVar->userInfo->id);     直接就是null
 
但是在User这个的public方法中调用\PhalApi\DI()->globalVar->userInfo->id  是有结果的,只是放到构造函数中就没有结果了

登山人

赞同来自:

解决了,可以重载Api函数的init方法,在init方法里做初始化操作。希望对也有这种需求的同学有帮助。

dogstar - PhalApi创始人

赞同来自:

问题解决就好 ^_^

要回复问题请先登录注册