【发布时间】:2018-05-31 08:01:07
【问题描述】:
目标:了解这个实现的操作顺序/逻辑是否确实属于MVC的C部分>.
情况:我几乎完成了一个带有降价文件的简单笔记网站。除身份验证外,不使用任何数据库。但是,由于缺少数据库,因此很难知道我是否忽略了 MVC 的 M。
因为我不想将 .md 扩展作为漂亮 url 的一部分,所以我严重依赖 PageController 来确定操作顺序。
PageController 从 Controller 继承构造的文件系统/Flysystem(fs)、twig 和处理这三个场景中的任何一个的“$app”。
它首先检查param.md 是否存在,然后检查param 是否是一个目录。如果以上都不是,那么它是一个新的笔记。在每种情况下,它都使用由应用程序 ($app) 设置的相应方法,该方法处理并返回一个数组(标题、面包屑、内容/目录列表、新模板等)。
<?php
namespace App\Controller;
class PageController extends Controller {
public function Page($param){
$file=$param.'.md';
if ($this->fs->has($file)) {
$data=$this->app->setNote($file);
return $this->app->render('note.twig',$data)
}
elseif ($this->fs->has($param)) {
$data=$this->app->setFolder($param);
return $this->app->render('folder.twig',$data)
}
else {
$data=$this->app->setNew($param);
return $this->app->render('new.twig',$data)
}
}
}
控制器处理请求,处理从模型返回的数据并加载视图以在响应中发送。
虽然我的代码工作并完成了工作,但它似乎不是正确的方式,因为主应用程序正在处理。我想我可以将 Application.php 移动到 Models 文件夹中,但这会使其坚持“正确的方式”吗?我应该在 PageController 开始工作之前使用中间件吗?
询问一个可以正常工作的代码似乎很愚蠢,但我的目标是在处理平面文件时更好地理解/学习当前智慧的方式。
【问题讨论】:
-
快速旁注:我没有使用任何(微)框架来强迫自己理解每个 php cogs。
标签: php oop model-view-controller flat-file