资讯专栏INFORMATION COLUMN

CodeIgniter 3.1.X 使用

elina / 599人阅读

摘要:如何配置默认控制器如果不设置,默认方法是哪个目录中配置默认方法无法设置默认方法,要不就在指定参数,要不就是不指定参数如果不设置参数,默认方法是如何载入视图视图用文件夹区分的话,必须带上文件夹名称如果视图文件不是,那么需要写上后缀名如

如何配置默认控制器?如果不设置,默认方法是哪个?

目录 application/config/routes.php 中配置

$route["default_controller"] = "home";
$route["default_controller"] = "home/add";

默认方法

无法设置默认方法,要不就在url指定m参数,要不就是不指定m参数
如果不设置m参数,默认方法是index()
如何载入视图?
$this->load->view("home"); 
$this->load->view("index/home"); //视图用文件夹区分的话,必须带上文件夹名称

如果视图文件不是.php,那么需要写上后缀名如下

$this->load->view("home.html");

视图公共部分如何载入

$this->load->view("head");
$this->load->view("home");
$this->load->view("foot");
更加优雅地引入公共视图
在home.php引入
load->view("head"); ?>
code-code
load->view("foot"); ?>
如何载入模型?载入后如何使用模型?

手动载入

$this->load->model("user"); //载入User模型
第二参数:模型别名 string
第三参数:是否自动连接数据库 bool (数据库连接一般放在自动连接配置中)

自动载入

在application/config/autoload.php中,修改如下:
$autoload["model"] = array("user"); //载入User模型

模型使用

$this->model_name->method();
推荐使用原生PHP来替代模板引擎

输出变量

流程控制:分支

//if


// code

// code

// code


//switch



// code


// code


// code

流程控制:循环

//while(注意,没有 do…while 的语法)


// code


//for


// code


//foreach


// code
辅助函数如何导入?辅助函数的优先级

手工导入

$this->load->helper("url");

自动导入

application/config/autoload.php 中添加 $autoload["helper"] = array("url");

辅组函数优先级

application 下的自定义辅组函数 优先于 system下的辅助函数
如何安全获取输入?

获取 GET 参数

$param = $this->input->get("key",TRUE) // XSS filter
$param = $this->input->get("key",FALSE) // NO XSS filter
如果请求的数据不存在,则返回 NULL (下面方法也一样)

获取 POST 参数

$param = $this->input->post("key")

获取 PUT、DELETE、PATCH 参数

$param = $this->input->raw_input_stream;

$param = $this->input->input_stream("key", TRUE); // XSS Clean
$param = $this->input->input_stream("key", FALSE); // No XSS filter

获取 COOKIE 参数

$param = $this->input->cookie("some_cookie", TRUE); // with XSS filter

获取 SERVER 参数

$param = $this->input->server("some_data"); //获取$_SERVER数据

获取 PATHINFO 参数

$product_id = $this->uri->segment(3, 0); //获取第三个片段数据,如果没有默认0
怎样数据验证?验证不通过该如何处理?

加载表单验证类

 $this->load->library("form_validation");

设置验证规则

$this->form_validation->set_rules("email", "Email", "required");

执行验证

$ret = $this->form_validation->run(); //成功返回True,否则返回false

表单辅助函数

$this->load->helper("form");
然后在视图中可以输入如下代码:
" />
如何重写URL? 如何设置伪静态?

重写URL -- 隐藏index.php

//以apache为例
开启mod_rewrite模块
把对应的目录AllowOverride设为All
在根目录下新建.htaccess文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
必须在config中找到config["index_page"] = ""

伪静态 -- url后面补充.html

必须在config中找到config["url_suffix"] = ".html"
如何开启调试模式?如何开启页面缓存?

开启调试

$this->output->enable_profiler(TRUE);
$this->output->enable_profiler(FALSE); //禁用

开启页面缓存

$this->output->cache($n); //在控制器中调用
系统核心类如何替换与扩展?
系统核心类位于:system/core/
注意:系统核心类只可以替换扩展不能创建新的

替换

// 文件位于目录 application/core
// 类名要与核心类名一样 CI_开头
// 文件名要与系统核心文件名一样 例如:Input.php
class CI_Input {

}

扩展

// 文件位于目录 application/core
// 类名和文件名必须以 MY_ 开头。(这是可配置的) 例如:MY_Input.php
// 类必须继承自父类
class MY_Input extends CI_Input {

}
系统类库有哪几种? 不同类型的类库如何加载使用?

有2种

1、普通类库文件 位于system/libraries
2、驱动器 位于system/libraries/驱动器目录

加载普通类库文件

$this->load->library("class_name");

加载驱动器

$this->load->driver("class_name");
类库文件如何创建自己类库? 如何替换和扩展系统类库?

创建自己类库

//在application/libraries目录下,创建自己的类库文件
class Someclass {

    public function some_method()
    {
    
    }
}

替换系统类库

//在application/libraries目录下,创建与系统类库文件同名的类库文件 例如:
//application/libraries/Email.php 文件
class CI_Email {

}

扩展系统类库

//在application/libraries目录下,你的新类名和文件名必须以 MY_ 为前缀 例如:
//application/libraries/MY_Email.php 文件
//类在定义时必须继承自父类
class MY_Email extends CI_Email {

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25695.html

相关文章

  • 不插即用!配备微信网页授权模块的CodeIgniter应用脚手架

    摘要:昨天发了一篇即插即用适用于框架的微信网页授权模块,今天想了想干脆整理一个脚手架好了。如果你是使用的开发者但只是需要一个微信网页授权模块而不是整个框架你可以查看我的另一个仓库它是即插即用的。 昨天发了一篇《即插即用!适用于CodeIgniter框架的微信网页授权模块》,今天想了想干脆整理一个脚手架好了。 Github仓库: CodeIgniter-Weixin_Template欢迎交流和...

    Pink 评论0 收藏0
  • CodeIgniter 4 建议路线图

    摘要:核心变化从第一版发布以来,社区发生了巨大变化。这意味着系统必须全部重写。暂时不会为一个即将停止支持的版本发布新版本。路由路由功能将被更新。改进的日志系统日志系统将被改进,但具体细节尚未确定。第一阶段第一阶段将侧重于抓住框架最重要的部分。 我们综合考虑了社区的愿望和意见后,也对什么样的未来对 CI 是最合适的做了一些思考,然后,CI 理事会对框架的未来做出了一些决策。预告一下,未来将会有...

    sean 评论0 收藏0
  • CI-CodeIgniter中“超级对象”:$CI =& get_instance()

    摘要:要你自定义的类库中访问的原始资源你必须使用函数这个函数返回一个一般来说在你的控制器函数中你可以通过调用任何可用的函数只直接作用在你自己的控制器模型和视图中当你在自定义类中想使用原始类时你可以这样做首先定义对象赋给一个变量一旦定义 要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数.这个函数返回一个CodeIgniter super o...

    blankyao 评论0 收藏0
  • 跟着阿大学CodeIgniter (一)——了解MVC

    摘要:它提供一套丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。文件放在里类名首字母必须大写,并继承的类访问的路径为项目名入口控制器名控制器的方法参数。 有的没的 showImg(http://segmentfault.com/img/bVbOml);阿大镇文(-_-メ)~ 阿大你太黑了,回去洗把脸看看有没有救~ 学习背景 CI是一个比较流行的PHP MV...

    wenzi 评论0 收藏0
  • PHP项目中CodeIgniter使用的一些建议

    摘要:把如下代码添加到目录下的文件中类的构造函数之前,这其实就是进行变量声明,文件也是同样操作。举一个我项目中的例子。该类只需要一个构造函数完成上述功能即可。 最近再给一个APP写API,同时还要写相应的后台管理网站。为了便于开发和代码组织与管理,我决定采用一个现有的框架。Codeigniter由于其轻量容易自定制的特点吸引了我,一路开发过来也有大半年时间了,写下一些自己在开发过程中的一些体...

    Barrior 评论0 收藏0

发表评论

0条评论

elina

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<