未定义的属性。无法在其他页面上调用对象属性

时间:2016-10-24 12:25:04

标签: php model-view-controller

我开始开发一个简单的MVC应用程序。我在控制器中调用下面的函数

public function show()
    {
        if (!isset($_GET['id']))
            return call('pages', 'error');
        $ingredient = Ingredients::find($_GET['id']);
        require_once('views/ingredients/show.php');
    }

我无法访问$ingredient对象属性,例如$ingredient->item_id show.php 中的任何属性。但是能够在同一个函数中调用对象属性。

我的 show.php 页面如下所示



<p>This is the requested Ingredients:</p>

<p><?php echo $ingredient->item_id; ?></p>
<p><?php echo $ingredient->stock_id; ?></p>
<p><?php echo $ingredient->item_qunatity; ?></p>
<p><?php echo $ingredient->item_unit; ?></p>
&#13;
&#13;
&#13;

我的模特看起来像这样。这个类的名称是成分

public static function find($id) { $database = Database::getInstance(); $id = intval($id); $query = $database->prepare('SELECT * FROM ingredients WHERE id = :id'); $query->execute(array('id' => $id)); $ingredient = $query->fetch(); return new Ingredients($ingredient['id'],$ingredient['item_id'],$ingredient['stock_id'], $ingredient['item_quantity'],$ingredient['item_unit']); }

1 个答案:

答案 0 :(得分:0)

这里的问题是您在一个方法的范围内定义这些函数,同时尝试在另一个方法的范围内访问它们。这是两件事。

要完成类似的操作,您必须在全局范围内声明变量(被视为不良做法),或将其存储在对象属性中。