Php 如何从url的较低位置可视化页面?
这是我能想象到的最糟糕的标题,让我尽可能地解释我的担忧。因此,基本上在我的框架中,我使用类型为Php 如何从url的较低位置可视化页面?,php,url-routing,Php,Url Routing,这是我能想象到的最糟糕的标题,让我尽可能地解释我的担忧。因此,基本上在我的框架中,我使用类型为site.com/controller/method/parameters 我将以这个页面为例site.com/news/edit/12 然后,如果我不应用路由,我的控制器的名称必须是News,调用的方法将是edit,带有一个参数12。然后,为了表明我的担忧,如果我决定编辑不同页面中的新闻标题和正文,我将不得不导航到site.com/news/edit/12/title。这就是它变得混乱的地方,基本上就
site.com/controller/method/parameters
我将以这个页面为例site.com/news/edit/12
然后,如果我不应用路由,我的控制器的名称必须是News
,调用的方法将是edit
,带有一个参数12
。然后,为了表明我的担忧,如果我决定编辑不同页面中的新闻标题和正文,我将不得不导航到site.com/news/edit/12/title
。这就是它变得混乱的地方,基本上就是我想问的:
包含依赖于传递给控制器的参数的页面的正确方式是什么
我觉得这看起来很难看,如果我在页面树下有更多这样的页面分隔会怎么样
class News {
public function edit($id, $section){
if(method_exists($this, $section){
return $this->$section($id);
}
}
private function title($id){
// Display page to edit news title
}
private function body($id){
// Display page to edit news body
}
}
更不用说,这也会导致调用不应该调用的现有方法时出现潜在问题。请不要基于get参数动态执行方法。这可能非常危险。 标准布线的一种简单方法:
// site.com/news/edit-title/12
public function editTitle($id);
// or depending on your framework
public function edit_title($id);
另一个可能更干净的解决方案是构建自定义路线:
// site.com/news/edit/title/12
public function editTitle($id);
@特里斯科你是对的。我更新了我的答案。我喜欢camelCase是因为它的可读性,所以我忘了PHP对方法是不区分大小写的。