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对方法是不区分大小写的。