`
Leon.Wood
  • 浏览: 288312 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CodeIgniter学习笔记

    博客分类:
  • PHP
阅读更多

■URI
localhost/project/class/function/id

project:项目名
class:调用控制器的类
function:类中的方法
id:传递的参数

默认情况下index.php被包含在url中

■控制层
把文件放在application/controllers/下

控制层类名必须大写 必须继承 Controller  并且在构造函数中加入parent::Controller();

//demo:
class Welcome extends Controller {

 function Welcome()
 {
  parent::Controller(); 
 }
 
 function index()
 {
  $this->load->view('welcome_message');
  echo "Hello World";
 }
 function doll(){
  echo "Bei bei huan ying ni";
 }
 function say($name,$words){
  echo $name.$words;
 }
 function say2($name="beibei ",$words="huan yi ni "){
  echo $name.$words;
 }
}

 

 

可通过上述uri的方法访问类或其中的方法 默认情况下访问index方法
localhost/project/Welcome/         //Hello World
或者
localhost/project/Welcome/doll       //Bei bei huan ying ni

如果要访问say方法可以如下
localhost/project/Welcome/say/leon/killer
那么你将会看到页面已经输出我们传递的参数   //leonkiller

□p.s:调用say方法必须给定两个参数.否则会报错.
当然也可以按照say2的方式给say的参数列表设置默认值以省略参数

当你的网站没有设置 URI 或者直接从根目录访问的时候,CodeIgniter 会加载默认控制器。打开 application/config/routes.php 文件来设置默认控制器:
$route['default_controller'] = 'Welcome';
这里的 Welcome 就是你希望使用的控制器的名字。如果此时你不指定任何 URI 片段来访问你的主页就会看到默认的“Hello World”信息。

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


 

function _remap($method)
{
    if ($method == 'c')
    {
      $this->comments();       
    }
    else
    {
        $this->$method();
    }
}

 

 

你可以这样理解上面的方法:当 $method 等于你定义的参数时程序执行一个特殊的操作,这里可以灵活运用。
如果参数等于 c 就调用 comments,否则就调用用户输入的方法

□P.S:其实就是一个拦截器


注意: 如果你的控制器包含一个 _output() 方法,那么它将总是被调用,而不是直接输出最终的数据。这个方法类似于OO里的析构函数,不管你调用任何方法这个方法总是会被执行。
function _output()
 {
     echo 'I am here';
 }
 
定义私有方法(Private)
在某些情况下,你可能想要隐藏一些方法使之无法对外查阅。将方法私有化很简单,只要在方法名字前面加一个下划线(“_”)做前缀就无法通过 URL 访问到了。
function _utility()
{
  echo "I'm the world!";
}
此时如果你想通过
localhost/project/Welcome/_utility 来访问将会看到Object not found提示

如果你想把你创建的控制器放置在自己创建的文件夹下请在 controllers下创建属于你的文件夹
注意:如果你要使用某个子文件夹下的功能,就要保证 URI 的第一个片段是用于描述这个文件夹的
例如:如果你要调用的类在名为mycontrol的文件夹下 则访问时要采用如下方式
localhost/project/mycontrol/MyClass/method1

不要忘记让你的类名首字母大写和继承Controller类 并且在构造函数中加入parent::Controller();
你的每个子文件夹中需要包含一个默认的控制器,这样如果 URI 中只有子文件夹而没有具体功能的时候它将被调用。


■视图
要放置在application/views文件夹下
如果要载入视图文件 可以在控制层调用如下函数 (.php扩展名可以省略)
$this->load->view("name");

注意:调用视图前页面不要有输出即存在 print/echo 否则视图无法正确显示
输出语句可以放置在调用之后,此时将在页面优先输出控制层的输出内容

上面的函数可以多次调用,如果多次调用那么他们将会被合并到一起
例如,你可能希望有一个标题视图、一个菜单视图、一个内容视图、和一个页脚视图。他们看起来应该是这样:

<?php

class Page extends Controller {

   function index()
   {
      $data['page_title'] = 'Your title';
      $this->load->view('header');
      $this->load->view('menu');
      $this->load->view('content', $data);
      $this->load->view('footer');
   }

}
?>

 

当然你也可以把视图放在属于你自己的文件夹下 如果这样你载入的时候需要加上文件夹的名字
$this->load->view("folder_name/name");

给视图添加动态数据 数组、对象
$data=array("key1"=>"value1","key2"=>"value");
$this->load-view("myview",$data);

p.s:当加载多个视图的时候之需要在第一个视图传入数据就可以了

在视图层输出添加的数据
<?php print $key1; ?>

·获取视图的数据
如果你不想直接输出视图而尽享得到视图的内容你可以采用如下函数来获取视图的数据
$this->load->view("myview",$data,true);
第三个参数表示不输出视图,而只是将结果返回给一个变量

■模型--数据库操作类---(-_-||||)
模型文件应该存放在application/models/ 下 当然 你也可以再这里建立子文件夹
注意:模型类必须继承Model父类 构造方法必须调用父类构造方法 类名首字母要大写 文件名应该是类名的小写版
例如
mymodel.php

class MyModel extends Model{
 function __construct(){
  parent::Model();
 }
}
载入模型
$this->load->model('MyModel');
如果你的模型文件在自己建立的文件夹下则需要加上相应的路径名
$this->load->model('myfolder/MyModel');
模型一旦载入你便可以采用如下方式使用
$this->MyModel->method1();
如果你想给载入的model分配一个别名 那么你可以采用如下方式
$this->load->model("MyModel","nick");
$this->nick->method1();

--------------------------------------------------------
这里有个控制器的例子,加载一个模型,然后通过视图显示出来

class Blog_controller extends Controller {

    function blog()
    {
        $this->load->model('Blog');

        $data['query'] = $this->Blog->get_last_ten_entries();

        $this->load->view('blog', $data);
    }
}


如果您需要一个在整个项目中都起作用的特定模型,您可以让 CodeIgniter 在初始化时自动装载它。实现的方法是打开 application/config/autoload.php 文件,然后在自动装载数组中添加上这个模型。

·连接到数据库
若要模型载入时自动连接数据库则要调用如下函数
$this->load->model("MyModel",true);
当然也可以不用配置文件中的设定 重新定义连接配置
如下
$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;

$this->load->model('Model_name', '', $config);

p.s:若要修改配置文件中的配置可以修改application/config/database.php中的参数


至此MVC三层完毕 是不是比java中struts的简单多了 哈哈
------------------------------------------------------------------------------------
■使用辅助函数
 $this->load->helper('name');
 name指定辅助函数文件名
 如果要一次载入多个辅助函数,你可以这样
 $this->load->helper( array('helper1', 'helper2', 'helper3') );
 
 注意:辅助函数无返回值
 
 可以通过打开 application/config/autoload.php ,并往自动载入数组(autoload array)中增加辅助函数来实现。
 使用辅助函数
 例如要使用anchor()来建立一个连接
 <?php echo anchor("Welcome/doll",'Click Here');?>

分享到:
评论

相关推荐

    php之CodeIgniter学习笔记

    本文将详细介绍CodeIgniter框架中关于数据库操作的一些常用函数和特性。 数据库自动连接是使用CodeIgniter框架进行数据库操作的第一步。在CodeIgniter中,你可以通过修改配置文件`application/config/autoload.php`...

    Codeigniter 4.0-dev 版源码学习笔记之二

    CodeIgniter 4.0-dev版本是CodeIgniter系列的一个开发者预览版本,虽然还没有正式发布,但通过学习其源码,我们可以深入了解框架的设计和实现细节,这对于提升PHP开发者的编程水平和框架使用效率是大有裨益的。...

    Codeigniter 4.0-dev 版源码学习笔记之四——详细路由过程

    我个人觉得在当前 MVC 流行的架构下,要想去了解一个框架,或者是一个基于此架构下的应用程序,最好的入手方式就是先看路由,虽然路由不是 MVC 里的任何一个,但是知道了路由的来龙去脉就知道了整个框架或者是应用的...

    Codeigniter 4.0-dev 版源码学习笔记之六——控制器

    其实一开始我是很纠结是否要写控制器的源码分析的,因为控制器的源码太少了,少到你不相信这是一个 MVC 里的一个重头。直觉里,大家都觉得控制器作为各个请求的“入口”,其后端应该有很多很多的代码支撑才可以的,...

    Codeigniter 4.0-dev 版源码学习笔记之三

    Codeigniter.php 是 CI 4 的核心所在,在这里接收并处理了 request 请求,安全检查,缓存处理, URL 解析以及路由匹配,执行过滤器,加载运行 Controller ,组装 repsonse 响应并发送等。

    Codeigniter 4.0-dev 版源码学习笔记之五——相对于 3.x 的变化

    CI 为了追上“大家”的脚步,这次跨了一大步,尽量使用了更多的流行设计理念,甚至连 PHP 的支持版本都是从 7 开始起步的。我在之前阅读源码的同时也发现了很多变化的地方,在此把已经发现的列举出来,不过肯定是不...

    selfimpr学习笔记合集(20101212)

    这是一个名为"selfimpr学习笔记合集(20101212)"的压缩包文件,其中包含了作者关于多种编程语言和相关技术的个人学习笔记。这些笔记涵盖了Python、PHP、Java、JavaScript和C这五种语言,以及可能涉及的各种框架和...

    ci学习笔记源码及数据库

    这个“ci学习笔记源码及数据库”压缩包包含了两个主要文件:`cishop.sql`和`cishop`。下面将详细探讨这两个文件与CI框架的相关知识点。 `cishop.sql`文件通常是数据库的备份或导出文件,它包含了一整个数据库的结构...

    Yii框架学习笔记

    自2008年1月薛强开始开发以来,Yii已经经历了多个版本迭代,从1.0.0到1.1.13,展现了其强大的生命力和适应性。与其他PHP框架如CakePHP、...通过深入学习和实践,开发者可以充分利用Yii的优势,提高开发效率和应用质量。

    PHP学习笔记总结.doc

    【PHP学习笔记总结】 PHP(超文本预处理器)是一种广泛使用的开源脚本语言,特别适合于Web开发。它能够嵌入HTML中,让开发者在服务器端处理数据,生成动态网页内容。与JavaScript不同,PHP代码在服务器上执行,然后...

    CI框架学习笔记源码

    **CI框架学习笔记源码详解** CodeIgniter(CI)框架是一个轻量级、高效且易用的PHP框架,它提供了丰富的工具来帮助开发者快速构建功能完备的Web应用。CI框架以其简洁的代码结构和出色的性能深受开发者的喜爱,特别...

    PHP框架codeigniter留言板实例

    除了视频教程,提供的www.StudyIM.com【雪狐网】.txt文件可能包含与课程相关的笔记或补充资料,对理解和实践这个CodeIgniter留言板实例会有很大帮助。 总的来说,这个实例涵盖了CodeIgniter的基本使用,MVC模式的...

    php框架学习笔记.doc

    这篇"PHP框架学习笔记"主要围绕CI框架的核心概念和常用功能展开。 首先,CI的业务流程遵循以下步骤:当用户通过域名访问网站时,请求会默认指向入口文件`index.php`。在`config.php`配置文件中,可以设置入口文件的...

    Easyhadoop学习笔记

    【EasyHadoop学习笔记】 EasyHadoop是一款基于Hadoop的商业版软件,它提供了一种更为简便的方式来管理和使用Hadoop集群。这篇学习笔记主要涵盖了EasyHadoop的安装、使用、开发以及注意事项,帮助用户从零开始熟悉这...

    starter-public-edition-5:一个基于CodeIgniter 4PHP应用程序启动器

    一个基于CodeIgniter 4PHP Application Starter,版本5项目资料库笔记该启动器支持多个应用程序。 在尝试运行此启动程序之前,请使用您的特定设置创建自己的.env文件。PHP 如果您是初学者,几乎没有PHP经验,或者您...

    starter-public-edition-3:一个基于CodeIgniter 3PHP应用程序启动器

    参见PHP 如果您是初学者,几乎没有PHP经验,或者您没有PHP经验,则可能需要阅读这样的培训教程: PHP初学者教程:7天学习, CodeIgniter 3文档要求PHP 7.2.5或更高版本,Apache 2.2-2.4(应启用mod_rewrite)。...

Global site tag (gtag.js) - Google Analytics