php 从空值创建默认对象?

标签 php model-view-controller standards

好吧,我想做的是做一些东西,这样我就可以这样调用它 $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/

相关文章:

java - Controller属于Presentation层?

c++ - main中的非可移植const

php - 了解用于大型数据库/表的 MySql?

php - grunt magento2 警告标志显示 magento 命令

javascript - 如何返回 ModelandView 文件和字符串?

prolog - Prolog 解释爱好者应该追求的现代流行标准 Prolog 是什么?

c++ - C++11 是否保证一个垂死的对象将被 move 而不是作为参数复制?

php - 在 codeigniter 项目之间共享 session 存储

php - 处理、解析和流式传输大型文本文件的实用方法是什么?

javascript Enter 按键和输入检查