`

PHP Codeigniter 中的_remap方法简介

    博客分类:
  • PHP
阅读更多
  在Codeigniter 中,其实有个容易忽略掉的不错的控制器层处理的方法,
那就是remap,这里简单介绍下。
   其实在CI的URL控制方式表示中,比如:
example.com/index.php/blog/comments/

  这样的形式中,blog就是controller,comments就是你的方法了。
又比如参数的传递是这样的:
example.com/index.php/products/shoes/sandals/123

   sandals/123就是传递的两个参数了。
URI 的第二片段决定会调用控制器中的哪个方法。CodeIgniter 允许你使用 _remap() 方法来废除这种规则:

public function _remap()
{
    // Some code here...
}

注意:如果你的控制器中包含一个名为 _remap() 的方法,那么不管你的 URI 中包含什么,它总会被忽略掉。这个方法会废除掉由 URI 片段来决定哪个方法被调用的规则,允许你重新定义调用方法的规则(方法的路由规则)。

   但问题是,手册上这样说的,会有什么用处呢?其实用处有两个:
1,改变URL,隐藏方法,比如你的应用中,原来的URL方法是:
   http://anmsaiful.net/blog/display_successful_message
   现在想改变显示的方法名为:
    http://anmsaiful.net/blog/successful
    但显示虽然是successful,但实际上是调用存在的display_successful_message

方法,这就要用到_remap方法了。

2 还可以借这个函数做简单的函数方法控制,比如:
    public function _remap($method, $params = array())
{
    $user_type = $_SESSION['user_type'];
    $access_control = $this->validate_access($user_type,$method);
    if ($access_control){
        $this->$method();
    }
    else{
        $this->show_message();
    }
}
    首先取出用户session中的级别 $user_type,然后检查通过方法
validate_access这个用户有无权限调用这个方法($method)
,如果有的话$access_control==true了,否则显示出错信息



3
1
分享到:
评论
1 楼 shirne 2012-04-06  
学习了..

相关推荐

    CodeIgniter框架中_remap()使用方法2例

    CodeIgniter框架中的_remap()方法是其核心功能之一,它允许开发者自由地定义哪些控制器方法应当被调用,以及如何将URI中的信息映射到特定的方法。接下来,将详细地探讨_remap()方法的使用和它能够带来的两大好处。 ...

    CodeIgniter4-4.0.2_CodeIgniter4_ci_

    11. **升级的开发工具**:开发过程中,CodeIgniter4提供了更好的调试工具,如Profiler,可以追踪查询性能、内存使用等。 12. **社区支持**:CodeIgniter4拥有活跃的开发者社区,提供丰富的文档、教程和插件,使得...

    codeigniter multi_language \"ideaworks\" site info

    CodeIgniter的`Language`类提供了加载和获取语言字符串的方法,可以根据用户的选择动态加载相应的语言文件。 实现多语言功能还需要考虑用户的语言选择。这可以通过HTTP头信息、Cookie或用户设置来检测。例如,可以...

    CodeIgniter3_中文使用手册_chm+ 网页

    此外,"codeigniter_user_guide.zip" 文件可能是 CHM 文件的源文件或另一种格式的文档,可能包含更详尽的信息,如示例代码、教程和开发者社区的更新。解压缩后,你可以查看 HTML 版本的文档,这样更便于在线阅读和...

    pusher-for-codeigniter-master_codeigniter_PHPpusher_

    【标题】"Pusher-for-CodeIgniter-Master:CodeIgniter框架中的PHP Pusher库" 【描述】这个项目是一个专门为CodeIgniter框架设计的PHP Pusher库,它允许开发者在他们的应用程序中轻松地实现实时通信功能。Pusher是...

    jqgrid_codeigniter_library

    6. **整合CodeIgniter**:`jqgrid_codeigniter_library`可能包含了一个`jqGrid`助手文件(`jqgrid_helper.php`)和一个库文件(`jqgrid_lib.php`)。助手文件可能包含了一些便捷函数,用于简化在CodeIgniter中的`...

    codeigniter_1.7.1_类库

    提供codeigniter_1.7.1_类库供广大的CI学习或开发者参考。

    掌握器controllers-CI(codeigniter)PHP框架_.docx

    即使URL中指定了具体的方法,也会先调用`_remap()`。以下是一个例子: ```php function _remap($method, $params = array()) { echo $method; // 输出调用的方法名 var_dump($params); // 输出URL参数 $this->$...

    CodeIgniter_2.1.2 中文操作手冊

    CodeIgniter_2.1.2 中文操作手冊

    [其他类别]CodeIgniter 开源PHP框架 1.7.1_codeigniter_1.7.1.zip

    9. URL路由:通过自定义URL路由规则,CodeIgniter可以让URL看起来更整洁,同时可以映射到不同的控制器方法。 10. 配置管理:框架提供了一种灵活的方式来设置和管理应用程序的配置参数,如数据库连接、全局变量等。 ...

    PHP开发框架CodeIgniter中文参考资料

    它为开发者提供了一个全面的API参考,帮助他们理解和使用框架中的每个类和方法。此外,手册还涵盖了错误处理、日志记录以及性能优化等方面的指导。 2. **CodeIgniter用户指南(v1.7.2).chm**:这是CodeIgniter ...

    CodeIgniter_2.0.2.zip

    这个名为"CodeIgniter_2.0.2.zip"的压缩包包含了CodeIgniter框架的2.0.2版本。这个版本在当时是相当流行的选择,因为它提供了稳定性和性能的平衡,同时也支持那时广泛使用的PHP 5.2.x版本。 CodeIgniter 2.0.2的...

    CodeIgniter_2.0.0.zip

    CodeIgniter 2.0.0 是一个基于PHP的轻量级框架,它为开发者...在解压的CodeIgniter_2.0.0文件中,你可以找到框架的核心文件、配置文件、库、模型、视图、控制器以及帮助文档,这些都是构建基于CodeIgniter应用的基础。

    CodeIgniter_2.1.4.zip

    在`CodeIgniter_2.1.4.zip`这个压缩包中,包含了一些核心文件和目录,它们构成了框架的基础架构: 1. `.gitignore`:这是一个Git版本控制系统使用的文件,它定义了哪些文件或目录应该被忽略,不纳入版本控制。在这...

    PHP CodeIgniter中文手册

    **PHP CodeIgniter 中文手册** CodeIgniter(CI)是一个轻量级的PHP框架,专为构建高效、可扩展的Web应用而设计。它的设计理念是保持代码简洁、优雅,同时提供强大的功能,使得开发过程既快速又愉快。CI的核心特性...

    Laravel开发-codeigniter_migration

    在现代 Web 开发中,Laravel 和 CodeIgniter 都是 PHP 的流行框架,各自拥有独特的优点和特性。Laravel 是一个全面且富有表现力的框架,提供了许多高级特性和工具,如Artisan 命令行工具、Eloquent ORM 和 Blade ...

    ttd.zip_codeigniter_html

    综上所述,"ttd.zip_codeigniter_html" 是一个使用CodeIgniter PHP框架和HTML创建的Web项目,由AZS.VN团队开发。项目包含了一系列Web开发的基本元素,如入口文件、服务器配置、图像资源、前端资产、项目笔记、核心...

Global site tag (gtag.js) - Google Analytics