为了账号安全,请及时绑定邮箱和手机立即绑定

如何在MVC类页面中基于漂亮的URL加载类?

如何在MVC类页面中基于漂亮的URL加载类?

PHP
不负相思意 2019-07-05 15:33:09
如何在MVC类页面中基于漂亮的URL加载类?我想问一些关于如何解决这个问题的建议。我正在尝试建立我自己的MVC网站。我学习了URL的基础知识。http://example.com/blog/cosplay/cosplayer-expo-todayBlog->控制器COSPLAY->控制器中的方法今天的COSTERO->方法中的变量如果我在我的博客控制器中动态扩展这个类别呢?我是否需要创建该方法,或者是否有一些技巧可以自动完成?我是说.。我现在有这些类别:角色扮演,游戏,电影,系列。所以我需要在控制器中创建这些方法,但是它们都是这样做的,即从数据库中选择其他类别。函数cosplay()=example.com/blog/cosplay/函数游戏()=example.com/blog/Games/函数file()=example.com/blog/育婴/电影FunctionSeries()=example.com/blog/Series/有什么好的建议可以让我的控制器自动完成吗?我的意思是,如果我上传一个新的类别在我的数据库,但我不想修改控制器。有可能吗?谢谢你的帮助!更新这是我的URL开发者类class Autoload{     var $url;     var $controller;     function __construct()     {         $this->url = $_GET['url'];         //HNEM ÜRES AZ URL         if($this->url!='' && !empty($this->url))         {             require 'application/config/routes.php';             //URL VIZSGÁLATA             $this->rewrite_url($this->url);             //URL SZÉTBONTÁSA             $this->url = explode('/', $this->url);             $file = 'application/controllers/'.$this->url[0].'.php';             //LÉTEZIK A CONTROLLER?             if(file_exists($file))             {                 require $file;                 $this->controller = new $this->url[0];                 //KÉRELEM ALATT VAN AZ ALOLDAL?                 if(isset($this->url[1]))                 {                     //LÉTEZIK A METÓDUS? ENGEDÉLYEZVE VAN?                     if(method_exists($this->controller, $this->url[1]) && in_array($this->url[1], $route[$this->url[0]]))                     {                         if(isset($this->url[2]))                         {                             $this->controller->{$this->url[1]}($this->url[2]);                         }                         else                         {                             $this->controller->{$this->url[1]}();                         }                     }                     else                     {                         header('location:'.SITE.$this->url[0]);                         die();                     }                 }             }
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

我觉得你想的太多了.

因此控制器/资源是一个博客.所有这些人都应该使用的方法是“read”(使用CRUD.我通常称之为数据,但基本上是您选择的)。现在让您的方法接受一个基于url的自动映射的类别值.

这里有一个示例.完全未经测试,但只是为了向您展示这个想法(使用PDO)

public function data($id = 0, $category = 0){
    if (isset($id) AND $id != 0){
         $bind = array(":id", $id);
         $results = $db->query("SELECT * FROM blog WHERE blog_id = :id", $bind);
         return $results[0];
    } else if (isset($category) AND $id != 0){ 
         $approved_categories = array("cosplay","game","movie","series");
         if (in_array($category, $approved_categories)){
              $bind = array(":cat", $category);
              $results = $db->query("SELECT * FROM blog WHERE blog_cat = :cat", $bind);
         } 
         return $results;
    }}


查看完整回答
反对 回复 2019-07-05
  • 2 回答
  • 0 关注
  • 451 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信