php / oop / mvc使用markdown文件的操作顺序(无数据库)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php / oop / mvc使用markdown文件的操作顺序(无数据库)相关的知识,希望对你有一定的参考价值。
目标:了解这个实现的操作顺序/逻辑是否确实属于MVC的C部分。
情况:我几乎完成了一个带有markdown文件的简单记笔记网站。除身份验证外,不使用任何数据库。然而,缺乏数据库使我很难知道我是否忽略了MVC的M。
因为我不想将.md
扩展名作为漂亮网址的一部分,所以我非常依赖于PageController来解决操作顺序问题。
从Controller,PageController继承构造的文件系统/ Flysystem(fs),twig和处理三种场景中的任何一种的“$ app”。
它首先检查是否存在param.md
,然后检查param
是否是目录。如果不是上述内容,那么这是一个新笔记。在每种情况下,它使用由Application($ app)设置的相应方法来处理和返回数组(标题,面包屑,内容/目录列表,新模板等)。
<?php
namespace AppController;
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)
}
}
}
控制器处理请求,处理从模型返回的数据并加载视图以在响应中发送。
虽然我的代码工作并完成工作,但它看起来并不正确,因为主应用程序正在进行处理。我想我可以在Models文件夹中移动Application.php,但这会使它坚持“正确的方式”吗?我应该在PageController开始工作之前使用中间件吗?
询问一个可行的代码似乎很愚蠢,但我的目标是在处理平面文件时更好地理解/了解当前智慧的方法。
无论您是否是“无数据库”,都会在.md
文件中存储/访问数据。
应该将对它们的访问抽象为模型。你应该创建一个File.find
对象+方法,和/或File.find_or_create
。然后
$file = File.find_or_create($param);
$render_type = $file.type . '.twig';
return $this->app->render($render_type, $file.data);
将所有if逻辑放在Model中。
以上是关于php / oop / mvc使用markdown文件的操作顺序(无数据库)的主要内容,如果未能解决你的问题,请参考以下文章