好吧,我想做的是做一些东西,这样我就可以这样调用它
$this->model->users->getInfomation('name');
或我的框架上的类似内容
但是 php 给了我一个严格的标准从空值创建默认对象
protected function model($model)
{
$path = "features". DS ."models". DS . $model .".php";
require $path;
$class = 'Model'. ucfirst($model);
$this->model->$model = new $class;
}
我们能否让它以某种方式符合标准?
编辑*
这个函数在 Application 类中,所以我可以从我们的 Controller 中扩展它们 像 blog Extends Application 然后调用类似 $this->model->blog 会得到类似我在上面做的事情,当我做类似的事情时
protected function model($model)
{
$path = "features". DS ."models". DS . $model .".php";
require $path;
$class = 'Model'. ucfirst($model);
$this->$model = new $class;
}
是的,上面的代码工作正常 $this->blog->getSomething();
,但不知何故我想把它们放在一个组中,就像上面的问题, 所以如果我们想得到像 $this->model->blog->getSomething();
感谢抽空。
亚当·拉马丹
最佳答案
仅凭该代码很难看出您实际上做错了什么。我编写了一些非常简单的代码来重现错误:
<?php
$bar = 42;
$foo = null;
$foo->bar = $bar;
它发出此警告的原因是您以“对象方式”赋值,但您将其赋值给一个不是对象的变量。通过这样做,Zend 引擎实际上为 $foo 创建了一个对象,它是 StdClass 的一个实例。显然,10 次中有 9 次,这不是您想要执行的操作,因此 PHP 提供了一条有用的消息。
在你的例子中:$this->model 还不是一个对象。如果您想摆脱错误,只需执行以下操作:
if( !is_object( $this->model ) ) {
$this->model = new StdClass;
}
$this->model->$model = new $class;
干杯。
关于php 从空值创建默认对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4860216/