gpt4 book ai didi

php 从空值创建默认对象?

转载 作者:可可西里 更新时间:2023-11-01 12:51:55 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com