标签:
<?php #访问配置 1.遇到无论什么URL 只能访问默认页面. 强制在你的 URL 中添加一个问号,要做到这点,打开 application/config/config.php 文件 2.访问方式 application/config.php 配置文件中启用它 $config[‘enable_query_strings‘] = FALSE; //index.php/controller/method/id/33 TRUE index.php?c=controller&m=method&id=44 $config[‘controller_trigger‘] = ‘c‘; $config[‘function_trigger‘] = ‘m‘; 3.控制器多级目录 如何命名 (类名与文件名一致,目录小写控制器名大写) CLI方式执行 php index.php tools message "John Smith" #tools控制器 message方法被执行 并传一个参数 开启自动加载 application/config/config.php 配置文件中的 $config[‘composer_autoload‘] 设置为 TRUE 只能自动加载如下目录文件 libraries/ 目录下的核心类 helpers/ 目录下的辅助函数 config/ 目录下的用户自定义配置文件 system/language/ 目录下的语言文件 models/ 目录下的模型类 钩子hooks - 扩展框架核心 启用钩子: application/config/config.php 文件 $config[‘enable_hooks‘] = TRUE; 定义钩子:application/config/hooks.php 文件中 参考 http://codeigniter.org.cn/user_guide/general/hooks.html $hook[‘pre_controller‘] = array(//挂钩点为 pre_controller表示控制器调用之前执行,所有的基础类都已加载,路由和安全检查也已经完成 ‘class‘ => ‘MyClass‘, //class 希望调用的类名 喜欢过程式的函数的话,这一项可以留空 ‘function‘ => ‘Myfunction‘, //希望调用的方法或函数的名称 ‘filename‘ => ‘Myclass.php‘, //包含类或函数的文件名 ‘filepath‘ => ‘hooks‘, //脚本文件的目录名 ‘params‘ => array(‘beer‘, ‘wine‘, ‘snacks‘) //希望传递给你脚本的任何参数,可选 ); #接收参数 $_POST $this->input->post(‘title‘) $this->input->get() // 如果希望数据通过 XSS 过滤器进行过滤,将第二个参数设置为 TRUE:如$this->input->get(array(‘field1‘, ‘field2‘), TRUE); $this->input->cookie() $this->input->server() redirect(); //跳转 ############控制器############ 文件名和类名应该一致 继承CI_Controller 1.控制器 文件名、类名 必须是大写字母开头,如:‘Index.php‘ 。 2.控制器或者方法命名 不能用 CI_Controller Default index 等 加载模型: $this->load->model(‘model_name‘); $this->load->model(‘blog/queries‘); 自动加载:将模型添加到 autoload 数组中 模型层别名: $this->load->model(‘blog/art‘, ‘art‘); /* 多级目录不考虑斜线 */ 调用模型层:$this->model_name->method(); 或者 $art->method(); 加载辅助函数 $this->load->helper(array(‘helper1‘, ‘helper2‘, ‘helper3‘) ); 自动加载:辅助函数添加到 autoload 数组中 调用:在视图文件中<?php echo anchor(‘blog/comments‘, ‘Click Here‘);?>"Click Here" 链接名称 blog/comments连接到此处 辅助函数扩展: application/helpers/MY_array_helper.php (文件命名注意小写) 加载系统类库 $this->load->library(array(‘email‘, ‘form_validation‘)); 初始化时也可以传入参数 $this->load->library(‘someclass‘, $params); 调用类库:$this->form_validation->run() 类库扩展: application/libraries/Myclass.php (注意自己的类中使用 CodeIgniter 类$CI =& get_instance(); ===> $CI->load->helper(‘url‘);$CI->load->library(‘session‘);) 加载系统驱动器 $this->load->driver(‘cache‘, array(‘adapter‘ => ‘file‘)); 加载驱动器 $this->load->driver(‘some_parent‘); (一个父类和任意多个子类。子类可以访问父类, 但不能访问兄弟类) 调用驱动器:$this->some_parent->some_method(); 调用驱动器子类:$this->some_parent->child_one->some_method(); 扩展: /application/libraries/Driver_name.php 或者 /application/libraries/Driver_name/Driver_name_subclass_1.php (注意 驱动器是子驱动器并不继承主驱动器,因此在子驱动器里无法访问主驱动器中的属性或方法。) 核心类行为修改 替换核心类 创建文件: application/core/Input.php 类名必须以 CI 开头class CI_Input { } 扩展核心类 扩展: application/core/Input.php 类名必须以MY_ 开头class MY_Input extends CI_Input { 记得要调用父类的构造函数: } (你定义的类必须继承自父类。) 缓存 开启缓存: $this->output->cache($n); $n 是缓存更新的时间(单位分钟)。 (注意:只有通过 view 输出的页面才能缓存,修改了可能影响页面输出的配置,需要手工删除掉缓存文件) 删除缓存:$this->output->delete_cache(); 删除其他地方的缓存 $this->output->delete_cache(‘/foo/bar‘); #分析器 启用分析器: $this->output->enable_profiler(TRUE); 一种方法是: 在 application/config/profiler.php $config[‘config‘] = FALSE; $config[‘queries‘] = FALSE; 另一种方法是: 控制器里调用输出类 的 set_profiler_sections() 函数 $sections = array( ‘config‘ => TRUE, ‘queries‘ => TRUE ); $this->output->set_profiler_sections($sections); 禁用分析器: $this->output->enable_profiler(FALSE); #基准测试类 $this->benchmark->mark(‘dog‘); //这里发生了一些代码 $this->benchmark->mark(‘cat‘); // 这里发生了一些代码 $this->benchmark->mark(‘bird‘); echo $this->benchmark->elapsed_time(‘dog‘, ‘cat‘); 得到时间差保留4位小数 echo $this->benchmark->elapsed_time(‘cat‘, ‘bird‘); echo $this->benchmark->elapsed_time(‘dog‘, ‘bird‘); <?php echo $this->benchmark->elapsed_time(); ?> #显示总执行时间 (只能在视图中加此代码) <?php echo $this->benchmark->memory_usage();?> #显示内存占用(只能在视图中加此代码) #疑问 为什么CI_Controller中没有 下面这些属性却任然可以 $this->Input 等访问 Benchmark -- Hooks -- Config -- Log -- Utf8 -- URI -- Router -- Output -- Security -- Input -- Lang -- 答:因为公共函数中load_class()加载的所有类名都放到了 is_loaded()中所以一旦执行 foreach (is_loaded() as $var => $class) { $this->$var =& load_class($class); } 则所有的属性值都有了; ############模型类############ 文件名和类名应该一致 继承CI_Model 模型加载之后,它并不会自动去连接你的数据库 可以使用 1.标准的数据库方法 连接数据库。 2.加载模型时第三个参数,加载时自动连接数据库,会使用config/databases.php $this->load->model(‘model_name‘, ‘‘, TRUE); 3.可以通过第三个参数传一个数据库连接配置,使用临时配置 $this->load->model(‘model_name‘, ‘‘, $config); $this->db->escape($title) 增 $this->db->insert(‘articles‘, array(‘name‘ => $name, ‘url‘ => $url)); $str = $this->db->insert_string(‘table_name‘, array(‘name‘ => $name, ‘url‘ => $url)); $this->db->insert_id(); //返回新插入行的ID。 $this->db->affected_rows(); 返回受影响的行数。 改 $where = "author_id = 1 AND status = ‘active‘"; $str = $this->db->update_string(‘table_name‘, array(‘name‘ => $name, ‘url‘ => $url), $where); 查 $this->db->order_by(‘id‘, ‘DESC‘); $this->db->join(‘categoryes‘, ‘categoryes.cid = articles.cid‘,‘left‘); $query = $this->db->get(‘articles‘, $num, $offset); $query->result_array(); //查多行 $query=$this->db->get_where(‘articles‘,array(‘id‘=> $id)); $query->row_array();//查询单行 $sql = "SELECT * FROM some_table WHERE id = 2 AND status = 1 AND author =2"; $this->db->query($sql)->row_array(); $this->db->last_query();返回上一次执行的查询语句 $this->db->count_all(‘my_table‘); 统计条数 ############视图############## 在控制器做分开加载 $this->load->view(‘header‘); $this->load->view(‘menu‘); $this->load->view(‘content‘, $data); $string = $this->load->view(‘main/footer‘, array(‘a‘=> 2, ‘b‘=> 4), TRUE); 事务 $this->db->trans_begin(); $this->db->query(‘AN SQL QUERY...‘); $this->db->query(‘ANOTHER QUERY...‘); $this->db->query(‘AND YET ANOTHER QUERY...‘); if ($this->db->trans_status() === FALSE) { $this->db->trans_rollback(); } else { $this->db->trans_commit(); } 缓存的使用 http://my.oschina.net/u/1472370/blog/220726 /*所有的表*/ public function init_tables() { $this->table_admin_group = array(‘table‘ => ‘admin_group‘, ‘key‘ => ‘id‘); ...... } /** $r = $this->db_get(‘uid‘, null, array(‘where‘ => array(‘username‘ => $param))); * MY_Model::db_get() * 查询单个 * @param string $select * @param string $id * @param mixed $param * @param mixed $table_key * @return */ public function db_get($select = ‘*‘, $id = null, $param = array(), $table_key = array()) /** //调用 $param[‘group‘] = ‘group‘; $param[‘key‘] = ‘group‘; $param[‘do_page‘] = 0; return $this->db_lists(‘COUNT(uid) AS count, `group`‘, $param); * MY_Model::db_lists() * 查询列表 * @param string $select * @param mixed $param * @param mixed $table_key * @param bool $no_distinct * @return */ public function db_lists($select = ‘*‘, $param = array(), $table_key = array(), $no_distinct = false) /** //调用 $data[‘menus‘] = isset($post[‘menus‘]) ? implode(‘,‘, $post[‘menus‘]) : ‘‘; $data[‘purviews‘] = isset($post[‘purviews‘]) ? implode(‘,‘, $post[‘purviews‘]) : ‘‘; $data[‘status‘] = 1; $id = $this->db_add($data, $this->table_admin_group); * MY_Model::db_add() * 插入数据 * @param mixed $data * @param mixed $table_key * @return */ public function db_add($data = array(), $table_key = array()) /** //调用 $data[‘purviews‘] = isset($post[‘purviews‘]) ? implode(‘,‘, $post[‘purviews‘]) : ‘‘; $id = $this->db_update($data, $id, null, $this->table_admin_group); * MY_Model::db_update() * 更新数据 * @param mixed $data * @param string $ids * @param mixed $param * @param mixed $table_key * @return */ public function db_update($data = array(), $id = null, $param = array(), $table_key = array()) { /** //调用 $this->db_del($like_id, null, $this->table_college_post_like); * MY_Model::db_del() * 删除数据 * @param string $id * @param mixed $param * @param mixed $table_key * @return */ public function db_del($id = null, $param = array(), $table_key = array()) { /** * MY_Model::db_counts() * 计算总数 * @param mixed $param * @param mixed $table_key * @param bool $no_distinct * @return */ public function db_counts($param = array(), $table_key = array(), $no_distinct = false) { #公共函数 /** * @desc 错误信息 * @param string $message 错误消息 * @param string $status_code http状态码 * @param string $heading 错误页面标题 * @return void 使用错误模板 application/views/errors/html/error_general.php application/views/errors/cli/error_general.php */ show_error($message, $status_code, $heading = ‘An Error Was Encountered‘) /** * @desc 404 错误信息: * @param string $page -- URI string * @param string $log_error 是否记录日志 * @return void 使用错误模板 application/views/errors/html/error_404.php application/views/errors/cli/error_404.php */ show_404($page = ‘‘, $log_error = TRUE) /** * @desc 写入日志文件信息 * @param string $level -- 可选 ‘error‘, ‘debug‘ , ‘info‘ * @param string $message -- 日志内容 * @param string $php_error -- Whether we‘re logging a native PHP error message * @return void */ log_message($level, $message, $php_error = FALSE) /** * @desc 生成错误信息 * @param string $message 错误消息 * @param string $status_code http状态码 * @param string $heading 错误页面标题 * @return void 使用错误模板 application/views/errors/html/error_general.php */ show_error($message, $status_code, $heading = ‘An Error Was Encountered‘) /** * @desc 判断当前运行的 PHP 版本是否高于或等于你提供的版本号 * @access * @param string 5.3 * @return boole */ if (is_php(‘5.3‘)) { echo true; } /** * @desc 判断某个文件是否可写 * @access * @param string /data/cluster/web/stc/index.php * @return boole */ if (is_really_writable(‘file.txt‘)){echo true;} /** * @desc 访问单个配置项 * @access * @param string $key 配置文件中的关联数组 key * @return mixed */ config_item($key) /** * @desc 手动设置服务器的 HTTP 状态码 * @access * @param int $code http状态码 * @param string $text 响应值 * @return void */ set_status_header(401); /** * @desc 特殊字符过滤,防止 XSS 攻击 * @access * @param mixed $var 需要过滤的字符串或数组 * @return mixed */ html_escape($var) /** * @desc 引入 application/config/mimes.php 文件中定义的 MIME 数组 * @return array */ get_mimes() /** * @desc 判断是否是https * @return boolean */ is_https() /** * @desc 检查一个函数是否可用 * @param string $function_name 函数名字 * @return boolean */ function_usable($function_name) 今天: 1.APP首页弹窗广告功能测试优化,及数据迁移; 1、入口初始化 常量、 [ENVIRONMENT] => development [SELF] => admin.php [BASEPATH] => /data/cluster/web/src/ci/system/ [FCPATH] => /data/cluster/web/src/ci/ [SYSDIR] => system [APPPATH] => /data/cluster/web/src/ci/admin/ [VIEWPATH] => /data/cluster/web/src/ci/admin/views/ 2、core/CodeIgniter.php 2.1、引入框架常量 APPPATH.‘config/ENVIRONMENT/constants.php‘ APPPATH.‘config/constants.php‘ 2.2、引入全局函数 SYSTEM.‘core/Common.php‘ 2.3、注册 错误 异常 执行结束 处理函数 2.4、引入自定义 自动加载机 2.5、引入启动计时 SYSTEM.‘core/Benchmark‘ 2.6、引入配置 SYSTEM.‘core/Config‘ 2.7、设置php字符集 2.8、引入常用处理函数 不论是否加载扩展 mbstring hash 2.9、引入URI、Utf8、Output、Security(安全)类 SYSTEM.‘core/Benchmark‘ 2.10、引入路由 SYSTEM.‘core/Router‘ 2.11、引入控制器父类 BASEPATH.‘core/Controller.php‘ 在此处执行了ci自带的自动加载机 2.12、实例化请求url中的控制器 $CI = new $class(); 2.13、执行url中的方法 call_user_func_array(array(&$CI, $method), $params); chnia http://download.eclipse.org/technology/babel/update-site/R0.13.0/mars 启用 svn http://subclipse.tigris.org/update_1.8.x 启用 Reflection::export(new ReflectionClass ($this->db ));
标签:
原文地址:http://www.cnblogs.com/sixiong/p/5757937.html