版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CodeIgniter 用户指南 版本 2 TOC o 1-3 h z u HYPERLINK l _Toc259614298 CodeIgniter 用户指南 版本 2 PAGEREF _Toc259614298 h 1 HYPERLINK l _Toc259614299 CodeIgniter URL PAGEREF _Toc259614299 h 3 HYPERLINK l _Toc259614300 URI 段 PAGEREF _Toc259614300 h 3 HYPERLINK l _Toc259614301 删除 index.php 文件 PAGEREF _Toc25961430
2、1 h 3 HYPERLINK l _Toc259614302 添加 URL 后缀 PAGEREF _Toc259614302 h 3 HYPERLINK l _Toc259614303 启用查询字符串 PAGEREF _Toc259614303 h 3 HYPERLINK l _Toc259614304 控制器 PAGEREF _Toc259614304 h 4 HYPERLINK l _Toc259614305 什么是控制器? PAGEREF _Toc259614305 h 4 HYPERLINK l _Toc259614306 让我们试试看: 你好,世界! PAGEREF _Toc259
3、614306 h 4 HYPERLINK l _Toc259614307 方法 PAGEREF _Toc259614307 h 5 HYPERLINK l _Toc259614308 URI 的第二部分是用来决定调用控制器中哪个方法的。 PAGEREF _Toc259614308 h 5 HYPERLINK l _Toc259614309 将 URI 片段传递给方法 PAGEREF _Toc259614309 h 5 HYPERLINK l _Toc259614310 定义默认控制器 PAGEREF _Toc259614310 h 6 HYPERLINK l _Toc259614311 重新定
4、义方法的调用规则 PAGEREF _Toc259614311 h 6 HYPERLINK l _Toc259614312 处理输出 PAGEREF _Toc259614312 h 7 HYPERLINK l _Toc259614313 私有方法 PAGEREF _Toc259614313 h 7 HYPERLINK l _Toc259614314 如何将控制器放入子文件夹中 PAGEREF _Toc259614314 h 7 HYPERLINK l _Toc259614315 构造函数 PAGEREF _Toc259614315 h 8 HYPERLINK l _Toc259614316 已保
5、留的方法名称 PAGEREF _Toc259614316 h 8 HYPERLINK l _Toc259614317 保留字 PAGEREF _Toc259614317 h 8 HYPERLINK l _Toc259614318 控制器名称 PAGEREF _Toc259614318 h 9 HYPERLINK l _Toc259614319 函数 PAGEREF _Toc259614319 h 9 HYPERLINK l _Toc259614320 变量 PAGEREF _Toc259614320 h 10 HYPERLINK l _Toc259614321 常量 PAGEREF _Toc2
6、59614321 h 10 HYPERLINK l _Toc259614322 视图 PAGEREF _Toc259614322 h 10 HYPERLINK l _Toc259614323 创建视图 PAGEREF _Toc259614323 h 10 HYPERLINK l _Toc259614324 载入视图 PAGEREF _Toc259614324 h 11 HYPERLINK l _Toc259614325 载入多个视图 PAGEREF _Toc259614325 h 11 HYPERLINK l _Toc259614326 用子文件夹存储视图 PAGEREF _Toc259614
7、326 h 12 HYPERLINK l _Toc259614327 给视图添加动态数据 PAGEREF _Toc259614327 h 12 HYPERLINK l _Toc259614328 创建循环 PAGEREF _Toc259614328 h 13 HYPERLINK l _Toc259614329 获取视图内容 PAGEREF _Toc259614329 h 14 HYPERLINK l _Toc259614330 模型 PAGEREF _Toc259614330 h 15 HYPERLINK l _Toc259614331 什么是模型? PAGEREF _Toc259614331
8、 h 15 HYPERLINK l _Toc259614332 剖析模型 PAGEREF _Toc259614332 h 16 HYPERLINK l _Toc259614333 载入模型 PAGEREF _Toc259614333 h 16 HYPERLINK l _Toc259614334 自动载入模型 PAGEREF _Toc259614334 h 17 HYPERLINK l _Toc259614335 连接到数据库 PAGEREF _Toc259614335 h 17 HYPERLINK l _Toc259614336 辅助函数(helpers) PAGEREF _Toc259614
9、336 h 18 HYPERLINK l _Toc259614337 载入辅助函数 PAGEREF _Toc259614337 h 18 HYPERLINK l _Toc259614338 载入多个辅助函数 PAGEREF _Toc259614338 h 18 HYPERLINK l _Toc259614339 自动载入辅助函数 PAGEREF _Toc259614339 h 18 HYPERLINK l _Toc259614340 使用辅助函数 PAGEREF _Toc259614340 h 18 HYPERLINK l _Toc259614341 扩展 Helpers PAGEREF _T
10、oc259614341 h 19 HYPERLINK l _Toc259614342 设定你自己的前缀(Prefix) PAGEREF _Toc259614342 h 19 HYPERLINK l _Toc259614343 现在可以做什么? PAGEREF _Toc259614343 h 19 HYPERLINK l _Toc259614344 插件 PAGEREF _Toc259614344 h 20 HYPERLINK l _Toc259614345 载入插件 PAGEREF _Toc259614345 h 20 HYPERLINK l _Toc259614346 载入多个插件 PAGE
11、REF _Toc259614346 h 20 HYPERLINK l _Toc259614347 使用 CodeIgniter 类库 PAGEREF _Toc259614347 h 20 HYPERLINK l _Toc259614348 创建你自己的类库 PAGEREF _Toc259614348 h 21 HYPERLINK l _Toc259614349 创建程序库 PAGEREF _Toc259614349 h 21 HYPERLINK l _Toc259614350 建立你的类库文件 PAGEREF _Toc259614350 h 21 HYPERLINK l _Toc2596143
12、51 命名约定 PAGEREF _Toc259614351 h 21 HYPERLINK l _Toc259614352 类文件 PAGEREF _Toc259614352 h 21 HYPERLINK l _Toc259614353 使用你自己的类 PAGEREF _Toc259614353 h 21 HYPERLINK l _Toc259614354 在初始化自定义类时传递参数 PAGEREF _Toc259614354 h 22 HYPERLINK l _Toc259614355 在你自定义的类库中初始化CodeIgniter资源 PAGEREF _Toc259614355 h 22 H
13、YPERLINK l _Toc259614356 用你自己的类替换原始类 PAGEREF _Toc259614356 h 23 HYPERLINK l _Toc259614357 扩展现有类 PAGEREF _Toc259614357 h 23 HYPERLINK l _Toc259614358 载入你的子类 PAGEREF _Toc259614358 h 23 HYPERLINK l _Toc259614359 创建核心系统类 PAGEREF _Toc259614359 h 24 HYPERLINK l _Toc259614360 系统类清单 PAGEREF _Toc259614360 h
14、24 HYPERLINK l _Toc259614361 替换核心类 PAGEREF _Toc259614361 h 24 HYPERLINK l _Toc259614362 扩展核心类 PAGEREF _Toc259614362 h 25 HYPERLINK l _Toc259614363 自定义前缀 PAGEREF _Toc259614363 h 25 HYPERLINK l _Toc259614364 钩子 - 扩展框架的核心 PAGEREF _Toc259614364 h 25 HYPERLINK l _Toc259614365 启用钩子 PAGEREF _Toc259614365 h
15、 26 HYPERLINK l _Toc259614366 定义钩子 PAGEREF _Toc259614366 h 26 HYPERLINK l _Toc259614367 同一挂钩点的多次引用 PAGEREF _Toc259614367 h 26 HYPERLINK l _Toc259614368 挂勾点 PAGEREF _Toc259614368 h 27 HYPERLINK l _Toc259614369 自动加载资源 PAGEREF _Toc259614369 h 27 HYPERLINK l _Toc259614370 公共函数 PAGEREF _Toc259614370 h 28
16、 HYPERLINK l _Toc259614371 is_php(version_number) PAGEREF _Toc259614371 h 28 HYPERLINK l _Toc259614372 is_really_writable(path/to/file) PAGEREF _Toc259614372 h 28 HYPERLINK l _Toc259614373 config_item(item_key) PAGEREF _Toc259614373 h 28 HYPERLINK l _Toc259614374 set_status_header(code, text); PAGER
17、EF _Toc259614374 h 28 HYPERLINK l _Toc259614375 脚手架 PAGEREF _Toc259614375 h 29 HYPERLINK l _Toc259614376 为什么要使用脚手架? PAGEREF _Toc259614376 h 29 HYPERLINK l _Toc259614377 设置一个密匙(Secret Word) PAGEREF _Toc259614377 h 29 HYPERLINK l _Toc259614378 激活脚手架 PAGEREF _Toc259614378 h 29 HYPERLINK l _Toc259614379
18、 最后需要注意的地方: PAGEREF _Toc259614379 h 30CodeIgniter URL默认情况下,CodeIgniter 中的 URL 被设计成对搜索引擎和人类友好。不同于使用标准“查询字符串”方法的是,CodeIgniter 使用基于段的方法: 注意:查询字符串形式的 URL 是可选的,分述如下。URI 段根据模型-视图-控制器模式,在此 URL 段一般以如下形式表示:class/function/ID 第一段表示调用控制器类。第二段表示调用类中的函数或方法。第三及更多的段表示的是传递给控制器的参数,如 ID 或其他各种变量。 HYPERLINK :/ /user_gui
19、de/libraries/uri.html URI 类和 n/user_guide/helpers/url_helper.html URL 辅助函数中的函数可以使你的 URI 更简单的工作。另外,使用 HYPERLINK :/ /user_guide/general/routing.html URI 路由特 性可以将你的 URL 重定向,以获得更大的灵活性。删除 index.php 文件默认情况下,index.php 文件将被包含在你的 URL 中:ws/article/my_article 你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“nega
20、tive”方法将非指定内容进行重定向:RewriteEngine onRewriteCond $1 !(index.php|images|robots.txt)RewriteRule (.*)$ /index.php/$1 L如果你的项目不在根目录请把上面这一句改为:RewriteRule (.*)$ index.php/$1 L 在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 请求都被指向 index.php。添加 URL 后缀通过设置 文件,你可以为 CodeIgniter 生成的 URL 添加一个指定的文件后缀。举例来说,如果 URL 是这
21、样的: 你可以随意添加一个后缀,例如 .html,使其显示为: (icebird注:英文中由于参数可直接看懂其含义,并未说明应修改哪个参数,在这里应修改$configurl_suffix这个参 数。)启用查询字符串在一些情况下你需要在 URL 中使用查询字符串:index.php?c=products&m=view&id=345 CodeIgniter 支持这个功能是可选的,可以在 application/config/config.php 文件中进行设置。如果你打开 config 文件可以看到如下内容:$configenable_query_strings = FALSE;$configco
22、ntroller_trigger = c;$configfunction_trigger = m;如果你将 enable_query_strings 更改为 TRUE ,那么这个功能就被激活了。此时,你就可以通过关键字来调用需要的控制器和方法了:index.php?c=controller&m=method 请注意:如果你使用查询字符串,那么就必须使用自己建立的 URL ,而且不能使用URL 辅助函数(或是其他生成 URL 的辅助函数,例如表单辅助函数),因为这些都是根据分段 URL 设计的。控制器控制器是应用程序的心脏,因为它们决定如何处理 请求。什么是控制器?简而言之,一个控制器就是一个类
23、文件,是以一种能够和 URI 关联在一起的方式来命名的。假设这个 URI:让我们试试看: 你好,世界!我们来创建一个简单的控制器,以便更直观地了解其工作原理。使用你的文本编辑器,创建一个名为 的文件,然后输入下列代码:然后保存文件到 application/controllers/ 文件夹。现在使用类似这样的 URL 访问你的站点: 如果你做的没错,你应该看到你好,世界!.注意:类名必须以大写字母开头。换句话说,这是有效的:这是无效的:方法上面的例子中用到的方法名是 index()。如果 URI 的第二部分为空的话,会默 认载入 “index” 方法。也可以将地址写成这样来访问 “Hello
24、World”:blog/index/ URI 的第二部分是用来决定调用控制器中哪个方法的。我们再来试试。在你的控制器中加入一个新的方法:现在在地址栏中输入下面的内容来访问 comments 方法: 你应该看到新的信息了:Look at this!将 URI 片段传递给方法如果你的 URI 超过两个部分,那么超过的将被作为参数传递给方法。举例来说,如果你的 URI 是这样的: URI 的第3和第4部分会被传递给你的方法(“sandals” 和 “123”):上面的方法调用时必须给两个相应的参数,要不然会出错。当然你也可以像下面这样写,就不用在调用的时候给参数了! 注意:如果你使用 HYPERLI
25、NK :/ /user_guide/general/routing.html URI 路由特 性,则传递到方法中的 URI 片段将被重新路由一次。定义默认控制器当你的网站没有设置 URI 或者直接从根目录访问的时候,CodeIgniter 会加载默认控制器。打开 application/config/routes.php 文件来设置默认控制器:$routedefault_controller = Blog;这里的 Blog 就是你希望使用的控制器的名字。如果此时你不指定任何 URI 片段来访问你的主页就会看到默认的“Hello World”信息。重新定义方法的调用规则如上所述,URI 的第二片
26、段决定会调用控制器中的哪个方法。CodeIgniter 允许你使用 _remap() 方法来废除这种规则:function _remap()/ Some code here.注意:如果你的控制器中包含一个名为 _remap() 的 方法,那么不管你的 URI 中包含什么,它总会被忽略掉。这个方法会废除掉由 URI 片段来决定哪个方法被调用的规则,允许你重新定义调用方法的规则(方法的路由规则)。被重新定义的方法调用方式(一般是 URI 中的第二片段)将作为一个参数传递给 _remap() :function _remap($method)if ($method = some_method)$th
27、is-$method();else$this-comments();处理输出CodeIgniter 拥有一个输出类用来确保你修改的数据会自动被传递给浏览器。关于这个的更多信息可以在 HYPERLINK :/ /user_guide/general/views.html 视图和/output.html 输出类里 找到。有些时候,你可能想要自己发布修改一些最终的数据或是自己把它传递给浏览器。CodeIgniter 允许你给你的控制器增加一个名为 _output() 的方法来接收最终的数据。注意:如果你的控制器包含一个 _output() 方法,那么它将总 是被调用,而不是直接输出最终的数据。这个方
28、法类似于OO里的析构函数,不管你调用任何方法这个方法总是会被执行。例如:function _output()echo I am here;请注意,你的 _output() 将接收最终的数据。私有方法在某些情况下,你可能想要隐藏一些方法使之无法对外查阅。将方法私有化很简单,只要在方法名字前面加一个下划线(“_”)做前缀就无法通过 URL 访问到了。例如,如果你有一个像这样的方法:function _utility()/ some code那么,通过下面这样的 URL 进行访问是无法访问到的:如何将控制器放入子文件夹中如果你在建立一个大型的应用程序,你会发现 CodeIgniter 可以很方便的将
29、控制器放到一些子文件夹中。只要在 application/controllers 目录下创建文件夹并放入你的控制器就可以了。注意: 如果你要使用某个子文件夹下的功能,就要保证 URI 的第一个片段是用于描述这个文件夹的。例如说你有一个控制器在这里:application/controllers/products调用这个控制器的时候你的 URI 要这么写:123 你的每个子文件夹中需要包含一个默认的控制器,这样如果 URI 中只有子文件夹而没有具体功能的时候它将被调用。只要将你作为默认的控制器名称在 application/config/routes.php 文件中指定就可以了。CodeIgni
30、ter 也允许你使用 HYPERLINK :/ /user_guide/general/routing.html URI 路由 功能来重新定向 URI。构造函数如果要在你的任意控制器中使用构造函数的话,那么必须在里面加入下面这行代码:parent:Controller();这行代码的必要性在于,你此处的构造函数会覆盖掉这个父控制器类中的构造函数,所以我们要手动调用它。如果你对构造函数不熟悉可以看这里,在 PHP 4 中,一个构造函数就是一个拥有和类名完全相同的名字的简单函数:在 PHP 5 中,构造函数的语法是这样的:如果你需要设定某些默认的值或是在实例化类的时候运行一个默认的程序,那么构造函
31、数在这方面就非常有用了。构造函数并不能返回值,但是可以用来设置一些默认的功能。已保留的方法名称因为你添加的控制器类继承了主要的应用程序控制器,所以你要小心你的方法名不要和那个类中的方法名一样了,否则你的方法会覆盖原有的。详细信息请查 看 HYPERLINK :/ /user_guide/general/reserved_names.html 保 留字部分。保留字为了便于编程,CodeIgniter使用了一系列的函数和名称来完成操作。所以,有些名称不能被程序员使用。下面是不能被程序员使用的保留字列 表。控制器名称因为你的控制器类将继承主程序控制器,所以你的函数命名一定不能和主程序控制器类中的函数
32、名相同,否则你的局部函数将会覆盖他们。下面列出了已经保 留的名称,请不要将你的控制器方法命名为这些:ControllerCI_Base_ci_initialize_ci_scaffoldingindex如果你使用的是 PHP 4 这里有一些附加的名字。这些只在 PHP 4 下会被使用。 CI_Loaderconfigdatabasedbutildbforgefilehelperhelperslanguagelibrarymodelpluginpluginsscaffoldingscriptviewvars_ci_assign_to_models_ci_autoloader_ci_init_cl
33、ass_ci_init_scaffolding_ci_is_instance_ci_load_ci_load_class_ci_object_to_array函数is_really_writable()load_class()get_config()config_item()show_error()show_404()log_message()_exception_handler()get_instance()变量$config$mimes$lang常量EXTFCPATHSELFBASEPATHAPPPATHCI_VERSIONFILE_READ_MODEFILE_WRITE_MODEDIR_
34、READ_MODEDIR_WRITE_MODEFOPEN_READFOPEN_READ_WRITEFOPEN_WRITE_CREATE_DESTRUCTIVEFOPEN_READ_WRITE_CREATE_DESTRUCTIVEFOPEN_WRITE_CREATEFOPEN_READ_WRITE_CREATEFOPEN_WRITE_CREATE_STRICTFOPEN_READ_WRITE_CREATE_STRICT视图简而言之,一个视图就是一个网页,或是网页的部分,如头部,底部,侧边栏等等。事实上,如果你需要这种层次类型,视图可以很 灵活的嵌入到其他视图中。视图从不直接调用,必须被一个gui
35、de/general/controllers.html 控制器来 调用。记住,在一个 MVC 框架中,控制器扮演着交通警察的角色,那么,他有责任去取回某一特定的视图。如果你还没有阅读过控制器页面的话,你应该事先阅读 HYPERLINK :/ /user_guide/general/controllers.html 控制器页 面。下面使用你在eneral/controllers.html 控制器页 面已经创建过的示例控制器,让我们来给他添加个视图。创建视图使用你的文本编辑器,创建一个名为 blogview.php 的文件,写入以下代码:然后保存文件到 application/views/ 文件夹
36、。载入视图你必须使用下面的函数来载入一个视图文件:$this-load-view(name);上面的 name 便是你的视图文件的名字。注意:.php 文件的扩展名(后缀名)没有必要专门写出,除非你使用了其他的扩展名。现在, 打开你先前写的名为 blog.php 控制器文件,并且使用视图载入函数替换echo段代码:如果你使用先前你用的 URL 浏览你的网站,你将会看到你的新视图. URL 与下面的类似:blog/ 载入多个视图CodeIgniter 能智能的处理多个从控制器发起的视图载入函数调用 $this-load-view。如果有多个调用,那么他们将会被合并到一起。例如,你可能希望有一个标
37、题视图、一个菜单视图、一个内容 视图、和一个页脚视图。他们看起来应该是这样:load-view(header);$this-load-view(menu);$this-load-view(content, $data);$this-load-view(footer);?在上面的例子中,我们使用了“动态添加数据”,你将在下面看到。用子文件夹存储视图如果你想让文件更有组织性,你也可以用子文件夹来存储你的视图文件. 当你在载入视图时,必须加上子文件夹的名字. 示例如下:$this-load-view(folder_name/file_name);给视图添加动态数据数据通过控制器以一个数组或是对象的形
38、式传入视图 , 这个数组或对象作为视图载入函数的第二个参数 .下面便是使用数组的示例:$data = array(title = My Title,heading = My Heading,message = My Message);$this-load-view(blogview, $data);这里是使用对象的示例:$data = new Someclass();$this-load-view(blogview, $data);当我们一次性载入多个视图的时候,你只需在第一个视图传入数据就可以了(hader视图显示title,content视图显示message), 比如:load-view
39、(header,$data);$this-load-view(content);$this-load-view(footer);?注意:如果你使用一个对象,那么类变量将转换为数组元素。好了,让我们用你的控制器试试。打开控制器并添加以下代码:现在,打开你的视图文件,将其中的文本替换成与数组对应的变量:然后使用你先前用过的URL载入页面,你将看到变量已经被替换。创建循环你传入视图文件的数据,不仅仅局限于简单的变量。你可以传递多维数组。例如:你从数据库里面取出数据就是典型的多维数据。这里是个简单的示例。添加以下代码到你的控制器:现在打开你的视图文件,创建一个循环:注意: 上面的例子中我们使用PHP替
40、代语法。如果你对这种语法不熟悉,可以在HYPERLINK CodeIgniter%20用户指南%20版本%202.doc这 里阅读。获取视图内容view函数第三个可选参数可以改变函数的行为,让数据作为字符串返回而不是发送到浏览器。如果想用其它方式对 数据进一步处理,这样做很有用。如果将view第三个参数设置为true(布尔)则函数返回数据。view函数缺省行为是 false, 将数据发送到浏览器。如果想返回数据,记得将它赋到一个变量中:$string = $this-load-view(myfile, , true); 例子:有些情况下,你并不想直接输出视图,而是仅仅想得到视图的内容以备后用。
41、那么可以参考如下代码。view方法中的第三个参数表示不输出视图,而只是将结果返回给一个变量。模型模型对于那些想用传统MVC方式的人来说是可选的。什么是模型?模型是专门用来和数据库打交道的PHP类。例如,假设你想用CodeIgniter来做一个Blog。你可以写一个模型类,里面包含插入、更新、删除Blog数据的方法。下面的例子将向你展示一个普通的模型类:classBlogmodelextendsModelvar $title = ;var $content = ;var $date = ;functionBlogmodel()/ Call the Model constructor for PH
42、P4parent:Model();functionget_last_ten_entries()$query = $this-db-get(entries, 10);return $query-result();functioninsert_entry()$this-title = $_POSTtitle; / 请阅读下方的备注$this-content = $_POSTcontent;$this-date = time();$this-db-insert(entries,$this);functionupdate_entry()$this-title = $_POSTtitle;$this-c
43、ontent = $_POSTcontent;$this-date = time();$this-db-update(entries,$this, array(id = $_POSTid); 注意: 上面用到的函数是 HYPERLINK :/ /user_guide/database/active_record.html Active Record 数据库函数.备注: 为了简单一点,我们直接使用了$_POST。不过,这不太好,平时我们应该使用 HYPERLINK :/ /user_guide/libraries/input.html 输入类:$this-input-post(title)剖析模
44、型模型类文件存放在 application/models/ 文件夹。 如果你愿意,可以在里面建立子文件夹。最基本的模型类必须像这样:classModel_nameextendsModelfunctionModel_name()parent:Model(); Model_name 是模型类的名字。 类名的首字母必须大写,其他字母小写。 并且确保你的类继承了基本模型类(Base Model Class)。文件名应该是模型类名的小写版。比如,如果你的类是:classUser_modelextendsModelfunctionUser_model()parent:Model(); 类的文件名应该是:载
45、入模型模型可以在 HYPERLINK :/ /user_guide/general/controllers.html controller 中被引用。 就像这样:$this-load-model(Model_name); 如果模型文件在子文件夹下,引用的时候要带上相对路径名。例如:如果你有一个模型 application/models/blog/queries.php。 下面的代码可以引用它:$this-load-model(blog/queries); 模型一旦被载入,你就能通过下面的方法使用它:$this-load-model(Model_name);$this-Model_name-fu
46、nction(); 如果你想给你的model指派一个不同的对象名,可以在加载模型函数中指定第二个参数:$this-load-model(Model_name, fubar);$this-fubar-function(); 这里有个控制器的例子,加载一个模型,然后通过视图显示出来classBlog_controllerextendsControllerfunctionblog()$this-load-model(Blog);$dataquery = $this-Blog-get_last_ten_entries();$this-load-view(blog, $data); 自动载入模型如果您需
47、要一个在整个项目中都起作用的特定模型,您可以让 CodeIgniter 在初始化时自动装载它。实现的方法是打开 application/config/autoload.php 文件,然后在自动装载数组中添加上这个模型。连接到数据库当一个模型被载入时,它并不会自动连接数据库。以下方法可以使您连接数据库:您可以使用标准方法来连接数据库( HYPERLINK :/ /user_guide/database/connecting.html 说明), 也可以通过控制器或者您的自定义模型。您可以把第三个参数设置为TRUE来使模型装载函数自动连接数据库,连接配置可以在您的数据库配置文件中可以定义:$this
48、-load-model(Model_name, , TRUE); 您可以手动设定第三个参数来载入您的自定义数据库配置: $confighostname = localhost;$configusername = myusername;$configpassword = mypassword;$configdatabase = mydatabase;$configdbdriver = mysql;$configdbprefix = ;$configpconnect = FALSE;$configdb_debug = TRUE;$this-load-model(Model_name, , $con
49、fig);辅助函数(helpers)辅助函数,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,URL Helpers 可以帮助我们创建链接,Form Helpers 可以帮助我们创建表单,Text Helpers 提供一系列的格式化输出方式,Cookie Helpers 能帮助我们设置和读取COOKIE, File Helpers 能帮助我们处理文件,等等。跟其他部分不同的是,辅助函数不是用类的方式来实现的。它们仅仅是一些简单的过程处理函数。 每个辅助函数处理一个特定的任务,并且不必依靠其他函数。CodeIgniter 默认是没有载入辅助函数文件的,所以如果
50、你想用辅助函数,就必须先载入它。 一旦被载入,辅助函数将全局可用(globally available),你可以在 HYPERLINK :/ /user_guide/general/controllers.html controller 和 HYPERLINK :/ /user_guide/general/views.html views 中使用它们。辅助函数文件一般保存在 system/helpers 或 system/application/helpers 文件夹中。CodeIgniter 将会先在 system/application/helpers 寻找对应的辅助函数文件,如果目录不存
51、在或者目录下没有对应的辅助函数文件,CI 才会载入 system/helpers 下的辅助函数文件。载入辅助函数载入辅助函数是非常简单的:$this-load-helper(name); name 是辅助函数文件的名字(不带.php后缀 和helper 部分)。例如,要载入文件名为url_helper.php的URL Helper,你将会用到下面的语句:$this-load-helper(url); 辅助函数可以在你的控制器(controller)的任何地方被载入,甚至可以在视图(View)文件中被载入(我们并不建议你这么做)。 请在使用辅助函数之前载入他们。你可以在你的控制器构造函数中载入它
52、们,以便辅助函数能自动在其他函数之前被载入。你也可以在要用到辅助函数的地方当场载 入。注意: 辅助函数载入函数并不返回值,所以不要尝试将它付给一个变量,直接像这样用就可以了。载入多个辅助函数如果你想一次载入多个辅助函数,你可以这样做:$this-load-helper( array(helper1, helper2, helper3) ); 自动载入辅助函数如果你想要的话,CodeIgniter可以自动为你载入辅助函数。你可以通过打开 application/config/autoload.php ,并往自动载入数组(autoload array)中增加辅助函数来实现。使用辅助函数一旦你载入了
53、想要用到辅助函数文件,你就可以用标准的函数调用方法来使用里面的函数。例如,要使用anchor() 函数来建立一个链接,在视图(View)文件里面你可以这样做: Click Here 是链接的名字,blog/comments 是链接的URI。扩展 Helpers你如果想 扩展一个原有的 Helpers,,可以在你的 application/helpers/ 目录下创建一个新的helper,新的helper的名字是在被“扩展”的Helper的名字开头多加一个 MY_ (这是可以配置的. 见下.).如果你想做的只是在原有的helper中添加一些新的功能,比如,添加一两个新的方法,或者是修改一个方法;
54、就不值得重写自己的helper。在这 种情况下,最好是“扩展”已有的helper。“扩展”一词用在这里不是很恰当,因为Helper的方法是procedural 和 discrete的,在传统的语言环境中无法被“扩展”,不过在CodeIgniter中,你可以添加或修改helper的方法。 例如,扩展一个本地已有的 Array Helper 你应该建立一个文件: application/helpers/MY_array_helper.php, 并添加或重写(override)其中的一些方法:/ any_in_array() is not in the Array Helper, so it def
55、ines a new functionfunction any_in_array($needle, $haystack)$needle = (is_array($needle) ? $needle : array($needle);foreach ($needle as $item)if (in_array($item, $haystack)return TRUE;return FALSE;/ random_element() is included in Array Helper, so it overrides the native functionfunction random_elem
56、ent($array)shuffle($array);return array_pop($array);设定你自己的前缀(Prefix)用于扩展 helper 而加上前缀的文件同样也是对库和核心类的扩展.为了设置你自定义的前缀,请打开 application/config/config.php 文件,然后找到如下的条目:$configsubclass_prefix = MY_; 请注意所以CodeIgniter自带的库都被冠以 CI_ 这样的前缀,所以请不使用这样的自定义前缀.现在可以做什么?在uide/toc.html 目录里面有所有辅 助函数的列表,你可以打开每个文件看看他们都能做些什么。
57、插件插件的工作方式几乎和 HYPERLINK :/ /user_guide/general/helpers.html 辅助函数一 模一样。它们最主要的区别在于插件文件一般只有一个函数,而辅助函数文件里面通常是一系列函数。 辅助函数被看作系统核心的一部分,而插件通常是网友制作和分享的。插件文件一般保存在system/plugins 文件夹。 但是你仍然可以选择在你的application文 件夹下建立一个叫plugins的文件夹来存放它们。CodeIgniter 将会先在system/application/plugins 寻找对应的插件文件,如果目录不存在或者目录下没有对应的插件文件,CI 才
58、会载入 system/plugins下的插件文件。载入插件载入插件是非常简单的:$this-load-plugin(name); name 是插件文件的名字(不带.php后缀 和plugin 部分)。例如,要载入文件名为captcha_pi.php的Captcha 插件,你将会用到下面的语句:$this-load-plugin(captcha); 插件可以在你的控制器(controller)的任何地方被载入,甚至可以在视图(View)文件中被载入(我们并不建议你这么做)。请在使用插件 之前载入他们。你可以在你的控制器构造函数中载入它们,以便插件能自动在其他函数之前被载入。你也可以在要用到插件的
59、地方当场载入。 注意: 插件载入函数并没有返回值,所以不要尝试将它赋给一个变量,直接像这样用就可以了。载入多个插件如果你想一次载入多个插件,你可以这样做:$this-load-plugin( array(plugin1, plugin2, plugin3) ); 自动载入插件如果你想要的话,CodeIgniter可以自动为你载入插件。你可以通过打开 application/config/autoload.php ,并往自动载入数组(autoload array)中增加插件来实现。使用插件一旦你载入了想要用到插件文件,你就可以用标准的函数调用方法来使用里面的函数。 使用 CodeIgniter
60、类库所有的类库文件存放在system/libraries 文件夹。大多数情况下你需要预先在 HYPERLINK :/ /user_guide/general/controllers.html controller中 初始化后才能使用它们:$this-load-library(class name); class name是你想要使用的类名。例如,要载入验证类,你可以这样做:$this-load-library(validation); 一旦类库被载入,你就可以按照用户手册中的方法来使用它们。创建你自己的类库创建程序库当我们使用术语类库时,我们一般指的是位于libraries 文件夹中的类,它们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 3681.1-2021塑料 太阳辐射暴露试验方法 第1部分:总则》
- 【 物理 】日心说与太阳系课件-2025-2026学年物理苏科版八年级下册
- 2026年法律职业资格考试知产专利申请优先权卷含答案
- 2026年北师大版小学二年级数学上册乘法意义理解卷含答案
- 《JBT 10603-2006电力液压推动器》专题研究报告
- 《JBT 10413-2005喷漆室》专题研究报告
- 湖南中考:语文必背知识点总结
- 湖南高考:地理必背知识点
- 湖北中考:英语重点知识点
- 2026年党建知识竞赛试题及答案(十六)
- 雨课堂学堂在线学堂云儒家美育观与文学理论素养曲阜师范大学单元测试考核答案
- 基于java的汽车维保服务平台设计与实现的详细项目实例(含完整的程序数据库和GUI设计代码详解)
- 利乐UHT技术培训课程大纲
- 2025 年预制菜产业发展研究报告
- 2026年四川省康定市房地产市场现状调研报告
- 2025年csco胃癌诊疗指南
- 祖国在我心窝里童声二部合唱简谱
- 酒店营业收入统计报表模板
- 2025小学六年级道德与法治期末复习资料
- 2025年汇川北森测评题库及答案
- 《脑胶质瘤患者围手术期静脉血栓栓塞筛查与预防方法》
评论
0/150
提交评论