HY,
我开始学习PHP,我创建了一个简单的MVC样式代码库。 脚本只生成一个随机数并显示这个数字。我还写了一个函数来显示之前显示的数字,但它不起作用。该值为空。你能帮帮我吗,我不知道什么是错的,并没有抛出php错误。
view.php
config.ssh.private_key_path = "./id_rsa"
Controller.php这样
<?php
class View
{
private $model;
private $view;
public function __construct()
{
$this->model = new Model();
}
public function output()
{
echo 'Current Entry: ';
echo $this->model->getData();
echo '<br />';
echo '<a href="?action=update">Update</a>';
echo '<br />';
echo '<a href="?action=preview">Last</a>';
}
public function getModel()
{
return $this->model;
}
}
model.php
<?php
class Controller
{
private $model;
private $view;
public function __construct($view)
{
$this->view = $view;
$this->model = $this->view->getModel();
}
public function get($request)
{
if (isset($request['action']))
{
if ($request['action'] === 'update')
{
for ($i = 0; $i<6; $i++)
{
$a .= mt_rand(0,9);
}
$this->model->setData($a);
}
elseif ($request['action'] === 'preview')
{
$this->model->setLast();
}
else
{
$this->model->setData('Wrong Action');
}
}
else
{
$this->model->setData('Bad Request');
}
}
}
的index.php
<?php
class Model
{
private $data;
private $last;
public function __construct()
{
$this->data = 'Default';
}
public function setData($set)
{
if ( ! (($set == 'Wrong Action') && ($set == 'Bad Request')))
{
$this->last = $this->data;
}
$this->data = $set;
}
public function getData()
{
return $this->data;
}
public function setLast()
{
$this->data = $this->last;
}
public function getLast()
{
return $this->last;
}
}
脚本中是否还有其他错误? 任何输入都非常欢迎! :)
答案 0 :(得分:2)
您的代码存在的问题是PHP不会在请求之间保留变量值,因此,当您在此处设置$ model-&gt;最后一个值时:
$this->last = $this->data;
您的下一个请求会重置。
您可能希望在会话或Cookie中存储$ last值。类似的东西:
$_SESSION['last'] = $this->data;
然后,当您实例化模型时,可以使用存储在会话中的值对其进行初始化(如果可用):
index.php - 在开头添加session_start()
model.php:
public function __construct()
{
$this->data = isset($_SESSION['last']) ? $_SESSION['last'] : 'Default';
}
public function setData($set)
{
$this->data = $set;
if ( ! (($set == 'Wrong Action') && ($set == 'Bad Request')))
{
$_SESSION['last'] = $this->data;
}
}
Controller.php这样
elseif ($request['action'] === 'preview')
{
//Remove this
//$this->model->setLast();
}