0
这个问题已经回答了很多次,但我无法在这里找到合适的解决方案。试图在简单的PHP MVC代码中获取非对象的属性
刚接触php MVC framework.am试图执行一个在线的代码。这里的HTML页面显示罚款与组合框进行选择,但是当我选择一个项目并提交获取此错误。任何人都可以帮助我理解问题并解决它。
下面是代码
Book类:
class Book
{
public $name;
public $version;
public $yop;
public function __construct($name, $version, $yop)
{
$this -> name = $name;
$this -> version = $version;
$this->yop=$yop;
}
}
模型类:
class Model
{
public $text;
public function __construct()
{
$this->text="Book selection";
}
public function getBookList()
{
return array(
'PHP for Absolute Beginners' => new Book ('PHP for Absolute Beginners', '1.2', '1999'),
'Basic Introduction to PHP MVC' => new Book ('Basic Introduction to PHP MVC', '1.0', '2008'),
'Advanced PHP' => new Book ('Advanced PHP', '1.2', '2004'),
'Advanced PHP MVC' => new Book ('Advanced PHP MVC', '2.0', '2014')
);
}
public function getBook($name)
{
$allBooks= $this->getBookList();
return $allBooks;
}
}
控制器类:
class Controller
{
public $model;
public function __construct(Model $model)
{
$this->model=$model;
}
public function invoke()
{
if (!isset($_GET['book'])) {
return $this->model->getBookList();
} else {
return '<h2>'.$this->model ->text.'</h2>';
}
}
public function output()
{
return'<h1>' . $this -> model -> text . '</h1>';
}
}
最后这是视图
$model = new Model();
$controller = new Controller($model);
echo $controller-> output();
$books = $controller ->invoke();
if ($_SERVER['REQUEST_METHOD'] === "GET") {
if (isset($_GET['book'])) {
echo "You selected " . $books->name . " version: " . $books->version . " Year of published: " . $books->yop;
exit();
}
}
这是提交数据
<form method="GET" action="">
<select name="book">
<?php
foreach ($books as $x=>$x_value) {
echo '<option value="' . $x . '">' . $x . '</option>';
}
?>
</select>
<input type="submit" value="Select" name="submit">
</form>
任何建议,请在HTML表单..
抱歉,我不明白。当我print_r($书),我得到了这个结果数组([绝对初学者的PHP] =>图书对象([名称] => PHP的绝对初学者[版本] => 1.2 [哟] => 1999年] [基本介绍到PHP MVC] => Book Object([name] => PHP MVC基础入门[版本] => 1.0 [yop] => 2008)[Advanced PHP] => Book Object([name] => Advanced PHP [version ] => 1.2 [yop] => 2004)[Advanced PHP MVC] => Book Object([name] => Advanced PHP MVC [version] => 2.0 [yop] => 2014)) –
在这种情况下, ,所以你必须这样写:$ books ['绝对初学者的PHP] - >名字 – SevStryker
它的部分作品。谢谢。但是当我选择不同的书时,它显示出相同的价值。我可以得到数组中字符串的索引值吗?像$ books [1] - > name,而不是$ books ['PHP for Absolute Beginners'] - >名字 –