自己简单设计php框架,简单的PHP MVC框架设计

所以,几周以来我一直在玩我自己的PHP MVC框架,纯粹是为了学习目的.我已经完成了基础知识,我想我知道在哪里,等等.但到目前为止,我还没有弄清楚以下内容.

假设我有一个音乐数据库,我有一个“音乐控制器”,一个“音乐模型”,显然是一个“音乐视图”.我最终想要做的是,能够当然插入新的艺术家和/或新的曲目,我也希望能够编辑它们,等等.我的网址看起来像这样:

example.com/controller/mainfunction

在我的“音乐控制器”中,我有一个方法如下:

public function addTrack()

{

if (isset($_POST["submit_add_track"]))

{

// call the model to add track to database etc..

}

}

所以,如果我在我的“音乐视图”中有一个表单并提交,我可以在数据库中添加一个新的轨道.我还有一种添加新艺术家的方法,等等.

但这就是我正在努力的方向.我该如何设计呢?我应该使用音乐控制器添加曲目和艺术家吗?像这样:

example.com/music/add/artist

example.com/music/add/track

或者我应该采用不同的方式,也许我应该使用“音乐控制器”来显示艺术家和曲目,并插入其他控制器的东西?像这样:

example.com/insert/artist

example.com/insert/track

后者似乎是适合我的方式,但我不确定这是否是好的设计.

我想也许我要问的是,使用“插入”控制器,然后使用“跟踪方法”在视图中显示“插入轨道”表单会不会很好?接下来,将会有更多的页面,而不仅仅是音乐.但我无法弄清楚这背后的逻辑如何正确地做到这一点,所以我可以轻松扩展.

正如你所看到的,我迷失了,任何指针(大或小)都会对我有所帮助.提前致谢!!

编辑:

所以,看看我现在是否走在正确的轨道上.我有一个音乐控制器,下面粘贴了代码.如果在控制器中调用“addArtist”方法,它将进入模型,将艺术家添加到数据库,向控制器返回一些内容,并完成.现在我还有麻烦的部分.如何显示表单以实际添加艺术家?我知道它应该在视野中.但是我应该怎么称呼它?像这样的东西?

example.com/music/insertArtist

这可能有效,但是我会有一个“insertArtist”方法,用于显示表单和“addArtist”方法,用于在每次提交表单时将新艺术家实际插入数据库.我知道我错过了一些东西,但我还是无法解决这个问题.我在想的是,在“addArtist”方法中,我包含要显示的“addArtist”视图文件,其中包含表单,我输入了一些“如果提交然后添加艺术家”.这是否有意义,如果是这样,我是否走错了路?

public function addArtist()

{

// $artist_model->addArtist();

}

public function editArtist($artistID)

{

// $artist_model->editArtist();

}

public function deleteArtist($artistID)

{

// $artist_model->deleteArtist();

}

public function addTrack()

{

// $artist_model->addTrack();

}

public function editTrack($trackID)

{

// $artist_model->addTrack();

}

public function deleteTrack($trackID)

{

// $artist_model->addTrack();

}

解决方法:

example.com/music/addArtist

example.com/music/addTrack

您必须严格遵循/ controller /方法的格式

当我说方法时,我的意思是字面意思,方法.实际上,在您的基本控制器类中,您应该调用方法的方式是

/**

* Executes the requested action

*/

public function ExecuteMethod($method)

{

$this->{$method}();

}

您可以将addArtist或addTrack传递给方法.

基本上,/ controller / part只是告诉apache要构造哪个实际的控制器类,而/ method /告诉它该控制器中的哪个方法要执行.

编辑:

This是我所知道的最好的MVC教程.我的MVC知识主要基于此.但是,只要不更改MVC的核心值使其变得如此强大,就可以稍微改变标准MVC结构以更好地满足您的需求.

编辑2 :(回复你的编辑)

所以你问它如何查看表单.

查看表单和提交表单是两个完​​全不同的操作,应该这样对待.此外,每个控制器动作,必须有自己的视图.

一个简单的方法,每当用户需要来自服务器的任何数据(或操作)时,你必须有一个动作和一个视图.

这意味着,你的控制器中有两个独立的方法,viewForm()和submitForm().现在,你在控制器类中显示的内容,你有addArtist(),editArtist()等,效率很低,因为你只是将它们别名化为相应的模型函数,这类函数会跳过MVC的整个点.

我无法确切地告诉你如何实现控制器,因为我不确切知道你的目标是什么.但是我们假设您有一个列出所有艺术家的页面,并且每个动作旁边都有按钮(顺便说一句,正如我在评论中所说,在这样的实现中,如果您在不同的地方展示艺术家和曲目页面,他们应该有单独的控制器).在此实现中,您将拥有一个控制器 – >查看此设置:

> /艺术家/观点 – >返回带按钮的艺术家html列表

> / Artists / viewAddForm – >返回一个用于创建新艺术家的空白表单

> /艺术家/ submitAdd – >返回一个html确认页面

> / Artists / viewEditForm – >返回一个表单,以便使用预填充值进行编辑

> /艺术家/ submitAdd – >返回一个html确认页面

> /艺术家/删除 – >返回一个html确认页面

因此向用户呈现艺术家列表.他们有3个选择.

>他们点击添加,填写表格,提交,然后转到确认页面.

>他们点击编辑,编辑表格,提交表格,然后转到确认页面.

>他们点击删除,他们直接进入确认页面,因为没有数据要填写.

轨道的结构将完全相同.

标签:php,url-routing

来源: https://codeday.me/bug/20190624/1277769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值