Php 为什么会出现“调用非对象上的成员函数”错误?

Php 为什么会出现“调用非对象上的成员函数”错误?,php,mysql,zend-framework,Php,Mysql,Zend Framework,我正在使用由MySQL支持的Zend框架,并试图建立一个索引视图。然而,使用我的代码,我不断得到对非对象错误的成员函数的调用,我不知道如何解决它。这是我的索引页的控制器: public function indexAction() { $dImage = new Application_Model_DImage(); } 以下是它引用的DImage模型的代码: public function getImageDesCol ($Id) { return $this->

我正在使用由MySQL支持的Zend框架,并试图建立一个索引视图。然而,使用我的代码,我不断得到对非对象错误的成员函数的调用,我不知道如何解决它。这是我的索引页的控制器:

 public function indexAction() {
     $dImage = new Application_Model_DImage();
 }
以下是它引用的DImage模型的代码:

public function getImageDesCol ($Id) {
    return $this->getDb()->fetchCol("SELECT description FROM d_image WHERE d_id = ?", $Id);
}
最后,这里是我的索引视图页面的来源,我试图在其中显示来自DImage模型的值:

  <?php $description = $this->dImage->getImageDesCol($id) ?>
  <label><?php echo $description[0] ?></label>
加载该页面时,会在非对象错误而不是呈现页面上调用成员函数getImageDesCol。由于我是Zend框架和PHP的新手,我觉得我缺少了一些明显的东西。我能做些什么来修复此问题?

更改:

 public function indexAction()
 {
     $dImage = new Application_Model_DImage();
 }
致:

必须将应用程序\模型\尺寸对象添加到视图中,否则视图不知道具有该名称的对象。这样做:

public function indexAction()
{
    $dImage = new Application_Model_DImage();
    $this->view->dImage = $dImage;
}
然后,您的$dImage将可用于查看脚本


视图脚本在Zend_视图对象的上下文中执行,但您正在控制器的上下文中创建应用程序\u模型\u DImage对象Zend_控制器\u操作的实例。因此,您需要显式地将视图脚本将使用的任何对象传递给视图。默认情况下,Zend_Controller_操作有一个视图对象供您检查。

嘿,谢谢您的回复。我只是这样做了,但它不起作用。我收到了相同的错误消息YUP,但我无法显示它应该显示的数据。@Varun问题可能在于getImageDesCol$Id方法。不要从数据库返回数据,而是尝试返回固定字符串,例如return test!;,并检查它是否打印。如果打印,则调试数据库查询。
public function indexAction()
{
    $dImage = new Application_Model_DImage();
    $this->view->dImage = $dImage;
}