Codeigniter2.0.1笔记

星期日 下午 14:42 狂奔的蜗牛 PHP开发 4965 views
0
Comments

使用分页类时:页码的位置一定要在第一个参数的位置。

即index.php/控制器/方法名/第一个参数,不然分页不能正常使用。即使使用了路由也要在页码第三个段的位置。

而且页码后面不能再有参数。因为分页页码是加在最后的位置。

总结就是使用分页url中的段只能是3段,最后一段是页码。

0、控制器类必须继承CI_Controller,类名首字母必须大写

   (默认)example.com/index.php/控制器名/方法名/其它附加的   
    (控制器名必须与对应控制器文件名大小写一样,方法名也要大小写一样)
 
1、URL向方法传递参数,example.com/index.php/products/shoes/a/b
<?php
class Products extends CI_Controller {
    public function shoes($a, $b)
    {
        echo $a;
        echo $b;
    }
}
?>
结果是ab

2、修改默认的“URL调用方法”的行为
在Controller中定义_remap方法,那么it will always get called regardless of what your URI contains. 
public function _remap($method)
{
    if ($method == 'some_method')
    {
        $this->$method();
    }
    else
    {
        $this->default_method();
    }
}
 _remap()有第二个可选的参数. 
public function _remap($method, $params = array())
{
    $method = 'process_'.$method;
    if (method_exists($this, $method))
    {
        return call_user_func_array(array($this, $method), $params);
    }
    show_404();
}

3、控制页面输出,
   在控制器中定义_output方法,最后页面输出数据不会发送到浏览器会传递给_output处理
public function _output($output)
{
    echo $output;
}

4、在页面最下面显示调试信息
   在控制器方法中$this->output->enable_profiler(true);//禁用是false默认是禁用
   在application/config/profiler.php中可以配置是否显示调试信息中的每块内容
   $config['config']= FALSE;
   $config['queries']= FALSE;
   也可以在控制器中:
   $sections = array(
    'config'  => TRUE,
    'queries' => TRUE
    );
   $this->output->set_profiler_sections($sections);
   到达动态控制调试信息的显示。
   $sections所有可用的key
      Key                     描述                                            默认值
    benchmarks         Elapsed time of Benchmark points and total execution time TRUE
    config            系统配置变量                                              TRUE
    controller_info   访问的控制器名和方法名                                   TRUE
    get               GET的数据                                                  TRUE
    http_headers      http请求头信息                                           TRUE
    memory_usage       内存使用单位byte                                         TRUE
    post              POST的数据                                                TRUE
    queries           所有执行的SQL语句包括执行时间                            TRUE
    uri_string        当前请求的URL                                             TRUE
    query_toggle_count 超过多少条查询隐藏查询信息块                              25
   
    CodeIgniter will parse the pseudo-variables {elapsed_time} and {memory_usage} in y
    our output by default. To disable this, set the $parse_exec_vars class property to FALSE in your controller.
    $this->output->parse_exec_vars = FALSE;

5、控制器中不想被URL访问的方法
   方法用private修饰并且方法名以下划线开始,那么这个方法就不能通过URL访问
    private function _utility()
   { 
   // some code
   }

6、控制器controllers文件夹中建立子文件夹功能,
   访问时变为example.com/index.php/子文件夹名/控制器名/方法名/其它附加的    

7、子类控制器有构造方法时必须先调用父类构造方法parent::__construct();

8、系统保留名称,避免在自己的代码中出现。
  控制器名
       CI_Base
       _ci_initialize
       Default
       index

  方法名
      is_really_writable()
      load_class()
      get_config()
      config_item()
      show_error()
      show_404()
      log_message()
      _exception_handler()
      get_instance()

   变量
      $config
      $mimes
      $lang

   常量
      ENVIRONMENT
      EXT
      FCPATH
      SELF
      BASEPATH
      APPPATH
      CI_VERSION
      FILE_READ_MODE
      FILE_WRITE_MODE
      DIR_READ_MODE
      DIR_WRITE_MODE
      FOPEN_READ
      FOPEN_READ_WRITE
      FOPEN_WRITE_CREATE_DESTRUCTIVE
      FOPEN_READ_WRITE_CREATE_DESTRUCTIVE
      FOPEN_WRITE_CREATE
      FOPEN_READ_WRITE_CREATE
      FOPEN_WRITE_CREATE_STRICT
      FOPEN_READ_WRITE_CREATE_STRICT
9、视图永远不会被直接调用,必须被控制加载
  加载视图文件name.php $this->load->view('name');如果是name.html那么就写为 $this->load->view('name.html');
  可以同时加载多个视图
  <?php
  class Page extends CI_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/file_name');
10、向视图传递数据:

   数据是数组:
   $data = array(
               'title' => 'My Title',
               'heading' => 'My Heading',
               'message' => 'My Message'
          );
   $this->load->view('blogview', $data);
  视图中输出:
  <?=$title?>

  数据也可以是对象:
  $data = new Someclass();
  $this->load->view('blogview', $data);
  视图中输出:
  <?=对象属性名?>
11、循环数据
 <?php
class Blog extends CI_Controller {
function index()
{
$data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
}
?>
视图中:
<ul>
 <?php foreach ($todo_list as $item):?>
    <li><?php echo $item;?></li>
<?php endforeach;?>
</ul>
上面用到了替换语法:类似的还有 endif, endfor, endforeach, and endwhile
快捷输出<?=变量?>

官方提供也有一个模板引擎,但是为了使页面运行更快不建议使用,建议使用纯php+语法替换

12、返回视图数据,而不是输出到浏览器
  $string = $this->load->view('myfile', '', true);
  第三参数This can be useful if you want to process the data in some way. 
  If you set the parameter to true (boolean) it will return data. 
  The default behavior is false, which sends it to your browser. 
  Remember to assign it to a variable if you want the data returned:

13、URL安全,URL地址中只能包含这些字符: 数字 文本 ~ . : _ -
   魔法转义magic_quotes_runtime在程序初始化时就被禁用了。
  you don't have to remove slashes when retrieving data from your database.

14、错误信息控制
  By default, CodeIgniter comes with the environment constant set to 'development'. 
  At the top of index.php, you will see:
  define('ENVIRONMENT', 'development');
  Setting CodeIgniter's ENVIRONMENT constant in index.php to a value of 'production' will 
  turn off these errors. In development mode, it is recommended that a value of 'development' is used. 

15、使用system/libraries 或者application/libraries里面的类库时
   首先要加载$this->load->library('email');
   然后使用:$this->someclass->some_function();  // Object instances will always be lower case
   带参初始化:
   $params = array('type' => 'large', 'color' => 'red');
   $this->load->library('Someclass', $params);
   $this->load之后创建一个类的实例$this->someclasss。

16、在自己的库中利用CodeIgniter资源
The Database classes can not be extended or replaced with your own classes.
All other classes are able to be replaced/extended.
    $this, however, only works directly within your controllers, your models, or your views. 
If you would like to use CodeIgniter's classes from within your own custom classes you can do so as follows:
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
etc.

17、模型
The file name will be a lower case version of your class name. For example, if your class is this:
class User_model extends CI_Model {
    function __construct()
    {
        parent::__construct();
    }
}
Your file will be this:
application/models/user_model.php

18、加载模型
 $this->load->model('Model_name');
 $this->load->model('blog/Model_name');//blog是models一个子文件夹
 使用:$this->Model_name->function();
 别名:
  $this->load->model('Model_name', 'fubar');
  $this->fubar->function();等价于$this->Model_name->function();

19、加载系统库system/libraries
    $this->load->library('email');
    $this->load->library(array('email', 'table'));




Codeigniter 2011/10/13 17:32:47
评论(0)
没有评论!

发表评论

引用成功取消引用×

昵称*: 邮箱*: 网址:

最多可输入300字符 验证码*:


Process: 0.057s | DB :17 queries | UseMem:2,305 kb