2017-05-20 42 views
4

我有下面的代碼,每當我發佈一個值,它不會將它添加到數組。這就像它創建一個只有我發佈的值的新數組。PHP MVC添加到數組後

<?php 

class Model 
{ 
    public $task; 

    public function __construct() 
    { 
     $this->task = array(); 
    } 
} 

class Controller 
{ 
    public $model; 

    public function __construct(Model $model) 
    { 
     $this->model = $model; 
    } 

    public function addTask($taskToAdd) 
    { 
     array_push($this->model->task, $taskToAdd); 
    } 
} 

class View 
{ 
    public $model; 
    public $controller; 

    public function __construct(Controller $controller, Model $model) 
    { 
     $this->controller = $controller; 
     $this->model = $model; 
    } 

    public function drawScreen() 
    { 
     $htmlForm = "<!doctype HTML>"; 
     $htmlForm = $htmlForm . "<html><head><title>php form test</title></head>"; 
     $htmlForm = $htmlForm . "<body>"; 
     $htmlForm = $htmlForm . "<form method='POST' action='index.php'>"; 
     $htmlForm = $htmlForm . "<input type='text' name='newtask' />"; 
     $htmlForm = $htmlForm . "<input type='submit' value='Add new task' />"; 
     $htmlForm = $htmlForm . "</form></body></html>"; 

     echo $htmlForm; 
    } 

    public function listTasks() 
    { 
     print_r($this->model->task); 
    } 
} 

    $model = new Model(); 

    $controller = new Controller($model); 

    $view = new View($controller, $model); 

if (isset($_POST['newtask'])) { 
    $taskToAdd = $_POST['newtask']; 
    $controller->addTask($taskToAdd); 
} 

echo $view->drawScreen(); 
echo $view->listTasks(); 

不知道我在做什麼錯在這裏。 array_push不是正確的方法嗎?我使用xampp,如果它有任何區別。任何想法我做錯了什麼?

+1

您必須將模型保存到數據庫並每次從該數據庫加載。因爲您的PHP代碼一次又一次編譯腳本並且每次都銷燬您的模型。試着像電腦一樣思考,如果你得到這些指導,你會怎麼做? – Black

回答

2

你必須明白,每次你提交表單的用戶都是你的php腳本的新執行。 所以 - 你的數組 - 與上次不是同一個數組。

要做你想做的事 - 例如你可以使用Session

+0

好吧,我明白了。就像.net – Unseen

+0

中的狀態我不確定你的代碼的目標是什麼,但是你也可以用JavaScript構建一個數組數組,然後在某個時刻將所有這些數組發送給PHP來處理。 –