`

codeigniter学习3

    博客分类:
  • PHP
阅读更多
扩展helper,在要扩展的helper前加上MY_,比如要扩展form helper,则命名为
MY_form_helper.php,放在system/application/helpers/目录下即可

2扩展CI的库的话,依然是加MY_前缀的规则,比如
<?php
class MY_Session extends CI_Session
{
function MY_Session()
{
parent::CI_Session();
}
}
?>

3 如果要改CI的core libraries的话,可以这样
  <?php
class CI_Session
{
}
?>
  使用的时候,跟之前一样的
$this->load->library('session');

4 benchmark的libraies的
  benchmark这个是很好用的,可以计算两个方法执行的时间,使用方法为:
$this->benchmark->mark('start');
// something happens here
$this->benchmark->mark('end');
echo $this->benchmark->elapsed_time('start', 'end');

当然也可以任意组合,比如三个的情况:
  $this->benchmark->mark('tea');
// something happens here
$this->benchmark->mark('coffee');
// something else happens here
$this->benchmark->mark('biscuits');
echo $this->benchmark->elapsed_time('tea', 'coffee');
echo $this->benchmark->elapsed_time('coffee', 'biscuits');
echo $this->benchmark->elapsed_time('tea', 'biscuits');


5 使用profile class
  profile是会输出benchmark的结果的
$this->output->enable_profiler(TRUE)
禁止:
$this->output->enable_profiler(FALSE);
<?php echo $this->benchmark->elapsed_time(); ?>
上面当elapsed_time不带参数时,表示显示所有的总时间

6 上传文件
  <?php echo $error;?>

<?php echo form_open_multipart('upload/do_upload');?>

File:<br />
<input name="file" type="file" /><br />

<input type="submit" name="submit" value="Upload" />

<?php echo form_close(); ?>
  
   处理器接收文件部分:
  class Upload extends Controller
{
function Upload()
{
parent::Controller();
$this->load->helper(array('form', 'url', 'file'));
}

function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}

function do_upload()
{
$config['upload_path'] = APPPATH . 'uploads/';
$config['allowed_types'] = 'jpeg|jpg|gif|png';
$config['max_size'] = '10240000';

$this->load->library('upload', $config);

$field_name = "file";

if ( ! $this->upload->do_upload($field_name))
{
$error = array('error' => $this->upload->display_errors());

$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());

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

我们最后用一个upload_success去输出上传的信息:
  <?php foreach($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>

7 常见的表单验证步骤,注意要用到form_validation了,
  function index()
{
$this->load->library(array('email', 'form_validation'));
$this->load->helper(array('email', 'form'));

$this->form_validation->
set_rules('name', 'Name', 'required|xss_clean');
...................
if($this->form_validation->run() == FALSE)
{
$this->load->view('email'); // load the contact form
}
else
{
$name = $this->input->post('name');

......

}

8 在校验表单时,可以使用callback的验证,比如在校验时,使用自定义的函数,如
$this->form_validation->
set_rules('email', 'Email Address',
'required|valid_email|callback_add_user|xss_clean');
这里用callback_XXXX来定义自己要校验的函数,这里是add_user,即可编写:
function add_user($email) { }

9 Database中的方法链
  PHP5中,可以这样了:
$this->db->select('name, email')->from('users')->
where('id', 5)->limit(10, 20);
$query = $this->db->get();
这实际上效果是:
SELECT name, email FROM `users` WHERE `id` = 5 LIMIT 10, 20

10 使用database forge类进行操作数据库类
$this->load->dbforge();
创建数据库
  if ($this->dbforge->create_database('my_db'))
{
echo 'Database created!';
}
删除数据库
if ($this->dbforge->drop_database('my_db'))
{
echo 'Database deleted!';
}


11 扩展CI
  CI提供了不少扩展点:
  pre_system:
   当系统执行前,会执行这个扩展点;
  pre_controller:
   在controller执行前,会执行这个扩展点;
  post_controller_constructor:
  当controller已经被实例化后执行,但在所有方法执行前执行;
  post_controller:
   当controller执行后执行;
  post_system:
   当所有页面发送到浏览器后,执行;

设置hooks:
   设置为:$config['enable_hooks'] = TRUE;
比如要设置一个网站维护时用的特别扩展点,可以先在config/hooks.php 中如下设置:
   $hook['pre_controller'] = array(
'class' => 'Maintenance',
'function' => 'decide',
'filename' => 'maintenance.php',
'filepath' => 'hooks',
'params' => 'FALSE'
);
   然后在application/hooks文件夹下建立如下文件:
  <?php
class Maintenance
{
  function decide($maintenance)
{
if($maintenance == TRUE)
{
show_error('The system is offline for maintenance.');
}
}
}
?>


 
12 数组helper

$this->load->helper('array');
$items = array(
'England' => 'London',
'Wales' => 'Cardiff',
'Scotland' => 'Edinburgh',
'Northen Ireland' => 'Belfast');
// returns 'Edinburgh'
echo element('scotland', $items);

  element方法是在数组中根据KEY去找value,如果找不到则返回false;


2
1
分享到:
评论

相关推荐

    CodeIgniter3中文手册

    CodeIgniter的用户可以轻松地访问官方发布的新版本,包括3.1.2版本在内的其他旧版本(如3.1.1、3.1.0、3.0.6、3.0.5、3.0.4等),并且可以阅读用户指南开始部分,学习如何构造动态的PHP应用。 CodeIgniter的许可...

    基于codeigniter3的问答系统

    总的来说,“基于CodeIgniter3的问答系统”提供了一个良好的平台,让开发者能够快速搭建并自定义一个问答社区,同时也为学习PHP和Web开发的初学者提供了实践机会。通过深入研究和实践,开发者不仅可以掌握...

    CodeIgniter 3.x

    10. **文档齐全**:CodeIgniter的官方文档详尽且易于理解,对于初学者和有经验的开发者都是很好的学习资源。 在实际开发中,CodeIgniter 3.x 可用于构建各种类型的应用,如博客系统、电子商务平台、内容管理系统等...

    CodeIgniter

    - **全面的文档**:CodeIgniter拥有详尽的官方文档,为开发者提供了清晰的学习路径。 - **丰富的库和辅助函数**:框架内包含了大量预定义的库(如数据库、电子邮件、会话管理等)和辅助函数,帮助开发者实现常见的...

    CodeIgniter3.00中文手册pdf

    而且,CodeIgniter不需要学习新的模板语言,用户可以根据需求选择是否使用模板解析器。 安装CodeIgniter分为四步: 1. 解压缩安装包到网站根目录; 2. 将CodeIgniter文件夹及里面的文件上传到服务器,index.php文件...

    CodeIgniter做的图片站,供大家学习交流

    这个“图片站”项目就是利用CodeIgniter的架构和技术实现的,目的是为了学习和交流。让我们深入了解一下CodeIgniter和PHP在创建这样一个站点时涉及的关键知识点。 1. MVC架构:CodeIgniter的核心是Model-View-...

    codeigniter的简单示例

    CodeIgniter是一个流行的PHP框架,以其轻...通过这个"codeigniter的简单示例",你可以逐步学习如何在实践中运用以上知识点,构建自己的CodeIgniter应用。理解并熟练掌握这些基础,将有助于你在PHP开发中更高效地工作。

    codeigniter 代码实例分享

    10. **user_guide**:CodeIgniter的用户指南,通常包含详细的框架文档,有助于开发者理解和学习如何使用CodeIgniter的各种功能。 通过这些文件,我们可以推断这个项目是用CodeIgniter搭建的,结合了jQuery 1.4的...

    CodeIgniter 相关文档资料

    3. **CodeIgniter-中文教程.pdf**: 这本PDF教程可能是面向初学者的全面指南,它从基础开始介绍如何使用CodeIgniter构建Web应用。内容可能包括安装和设置开发环境,创建第一个“Hello, World!”程序,以及逐步讲解...

    codeigniter 2.0 中文手册

    这个中文手册是学习和参考CodeIgniter 2.0的重要资源,无论你是初学者还是经验丰富的开发者,都能从中获取有价值的信息。通过深入学习和实践,你可以充分利用CodeIgniter的优势,快速构建出高效、稳定的PHP应用。

    CodeIgniter1.7敏捷框架开发

    无论是初学者还是有经验的开发者,都能从中受益匪浅,学习如何利用CodeIgniter1.7框架快速构建高质量的Web应用程序。对于那些对敏捷开发、MVC架构或者PHP语言感兴趣的人来说,这本书绝对值得一读。

    CodeIgniter 中文手册1.6.3版本

    3. 数据库操作:CodeIgniter提供了简单的数据库抽象层,支持多种数据库系统。其Active Record类提供了CRUD(创建、读取、更新、删除)操作,使数据库交互更为便捷。 4. 错误处理与日志:CodeIgniter提供了错误报告...

    辛星Codeigniter教程(2016版)

    在此之后,Codeigniter历经多次更新,从1.x系列发展到2.0时代,2014年6月5日发布了2.2.0版本,而教程中提到的3.0.0版本是在2015年3月30日发布的,这是当时比较新的稳定版本。 在学习Codeigniter的过程中,我们还...

    一个简单的Codeigniter用户登录验证例子程序

    总的来说,这个例子为初学者提供了一个学习Codeigniter用户认证的基础平台。通过研究和修改这个示例,开发者可以更好地理解如何在实际项目中实现安全的用户登录和验证功能,同时掌握Codeigniter框架的使用。

    CodeIgniter框架

    3. **安全与防止XSS攻击**:CodeIgniter提供了输入验证和输出清理功能,以防止跨站脚本(XSS)攻击和其他安全威胁。此外,它还包含了安全的会话管理,确保用户数据的安全。 4. **URL友好的路由**:CodeIgniter允许...

    codeigniter中文手册教程

    这个“codeigniter中文手册教程”是你个人制作并基于官网资料改编的,旨在为开发者提供更便捷的学习途径。在解压文件后,只需通过浏览器打开`index.html`,你就可以开始学习CodeIgniter的相关知识。 CodeIgniter的...

    CodeIgniter 1.72 中文帮助文档

    总的来说,"CodeIgniter 1.72 中文帮助文档"是开发者学习和优化CodeIgniter应用的关键资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过深入阅读和实践,你可以充分利用CodeIgniter的优势,构建出...

    PHP开发框架CodeIgniter中文参考资料

    资源中的三个文件分别提供了不同角度的CodeIgniter学习资料。 1. **CodeIgniter中文参考手册.pdf**:这份文档详细地介绍了CodeIgniter的各种组件和功能,包括控制器、模型、视图、数据库操作、表单验证、安全和会话...

Global site tag (gtag.js) - Google Analytics