我开始开发一个简单的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;
我的模特看起来像这样。这个类的名称是成分
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']);
}
答案 0 :(得分:0)
这里的问题是您在一个方法的范围内定义这些函数,同时尝试在另一个方法的范围内访问它们。这是两件事。
要完成类似的操作,您必须在全局范围内声明变量(被视为不良做法),或将其存储在对象属性中。