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'] - >名字 –