Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP MVC模式中将视图连接到控制器?_Php_Oop - Fatal编程技术网

如何在PHP MVC模式中将视图连接到控制器?

如何在PHP MVC模式中将视图连接到控制器?,php,oop,Php,Oop,我使用的是PHP MVC模式,没有任何框架,现在我有一个视图文件,其中包含一些要插入的数据,这些数据将保存到数据库中。现在我的问题是如何将视图文件连接到控制器或模型。视图不应将任何内容保存到数据库,这是模型的工作。该视图仅用于渲染。通常,您将在控制器中实例化视图对象,将要渲染的数据传递给它,然后调用某些渲染方法。也许是这样的: $view = new View(); $view->setTemplate('/path/to/file'); $view->setValues(array

我使用的是PHP MVC模式,没有任何框架,现在我有一个视图文件,其中包含一些要插入的数据,这些数据将保存到数据库中。现在我的问题是如何将视图文件连接到控制器或模型。

视图不应将任何内容保存到数据库,这是模型的工作。该视图仅用于渲染。通常,您将在控制器中实例化视图对象,将要渲染的数据传递给它,然后调用某些渲染方法。也许是这样的:

$view = new View();
$view->setTemplate('/path/to/file');
$view->setValues(array(
  'key1' => 'value1',
  'key2' => 'value2',
));
$view->render();
$model = new Model();
$model->setValues(array(
  'key1' => 'value1',
  'key2' => 'value2',
));
$model->save();
$view = new View();
$view->setTemplate('path/to/file');
$view->setValues($model->getValues());
$view->render();
如果要将数据保存到数据库中,则与视图无关。您可能会有这样的情况:

$view = new View();
$view->setTemplate('/path/to/file');
$view->setValues(array(
  'key1' => 'value1',
  'key2' => 'value2',
));
$view->render();
$model = new Model();
$model->setValues(array(
  'key1' => 'value1',
  'key2' => 'value2',
));
$model->save();
$view = new View();
$view->setTemplate('path/to/file');
$view->setValues($model->getValues());
$view->render();

控制器可以包括视图和模型文件


当通过url调用控制器时,使用models方法获取或放置内容(在数据库中),另一个方法将数据发送到视图,视图输出给浏览器

控制器从视图中获取数据并将其传递到模型中。模型处理持久性。同样在HTTP世界中,我要说控制器从请求中获取数据,而不是直接从视图获取数据,但这些是实现细节


您只需要确保模型不以任何方式依赖于视图。这是MVC中的主要规则之一。

现在我已经通过控制器连接视图文件,但现在我需要如何将视图文件连接到控制器,因为我需要将视图文件数据保存到数据库中可能与的重复,但我没有在视图文件中使用任何类或对象。它就像一个简单的html文件,不应该在其中定义任何类。不要将其视为“视图文件”,而应将其视为由视图对象渲染的模板。您必须编写一个视图类,将模板和它需要的任何可能的变量作为输入,并输出结果HTML。它可能与调用readfile()一样简单。