CodeIgniter学习笔记 Item10--CI总结精华_ci foreach($item[‘children‘]

总结一下

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

public function index($p=0){
    echo $p;//输出6
}

**$this->input**



输入类
是CI_Input类的实例 system/core/Input.php
CI_Input类提供方法:
t h i s − > i n p u t − > p o s t ( ′ u s e r n a m e ′ ) ; / / this->input->post('username'); // this>input>post(username);//_POST[‘username’]
t h i s − > i n p u t − > s e r v e r ( ′ D O C U M E N T R O O T ′ ) ; / / this->input->server('DOCUMENT_ROOT'); // this>input>server(DOCUMENTROOT);//_SERVER[‘DOCUMENT_ROOT’]

在视图中,直接用$this来访问超级对象中的属性<?php echo $this->input->server('REMOTE_ADDR')?>


**数据库访问**



修改配置文件
application/config/database.php

将数据库访问对象,装载到超级对象的属性中 $this->db
$this->load->database();

r e s = res= res=this->db->query($sql);//返回对象
r e s − > r e s u l t ( ) ; / / 返回数组,数组中是一个一个的对象 res->result();//返回数组,数组中是一个一个的对象 res>result();//返回数组,数组中是一个一个的对象result->id
r e s − > r e s u l t a r r a y ( ) ; / / 返回二维数组,里面是关联数组 res->result_array();//返回二维数组,里面是关联数组 res>resultarray();//返回二维数组,里面是关联数组result[‘id’]
$res->row()//返回第一条数据,直接是一个对象

参数绑定
$sql=“select * from blog_user where name=?”;
t h i s − > d b − > q u e r y ( this->db->query( this>db>query(sql,$name);//如果有多个问号时,需要传入一个索引数组

表前缀
$db[‘default’][‘dbprefix’] = ‘blog_’;
$db[‘default’][‘swap_pre’] = ‘blog_’;

配置为一样,代码中,直接硬编码表前缀就行了,如果以后项目数据库表前缀发生变化,
只需要修改$db[‘default’][‘dbprefix’] = ‘new_’;代码中的blog_会自动替换为new_

db的自动加载
application/config/autoload.php
a u t o l o a d [ ′ l i b r a r i e s ′ ] = a r r a y ( ′ d a t a b a s e ′ ) ; 不需要: autoload['libraries'] = array('database'); 不需要: autoload[libraries]=array(database);不需要:this->load->database();

自增id
$this->db->insert_id();
受影响行数
$this->db->affected_rows();


**Active Record**



1.application/config/database.php
$active_record = TRUE;
2.application/config/autoload.php
$autoload[‘libraries’] = array(‘database’);
3.在配置文件中,配置表前缀后,会自动添加

r e s = res= res=this->db->get(‘表名’);//返回结果集对象
$res->result();

b o o l = bool= bool=this->db->insert(‘表名’,关联数组);

b o o l = bool= bool=this->db->update(‘表名’,关联数组,条件);

b o o l = bool= bool=this->db->delete(‘表名’,条件);

//select id,name from tableName where id>=3 order by id desc limit 2,3
r e s = res= res=this->db->select(‘id,name’)
->from(‘user’)
->where(‘id >=’,3)
->limit(3,2)//跳过2条,取出3条数据
->order_by('id desc ')
->get();

//显示最近一条SQL
echo $this->db->last_query();

//where
// r e s = res= res=this->db->where(‘name’,‘mary’)->get(‘user’);
// r e s = res= res=this->db->where(‘name !=’,‘mary’)->get(‘user’);
// r e s = res= res=this->db->where(array(‘name’=>‘mary’))->get(‘user’);
// r e s = res= res=this->db->where(array(‘name’=>‘mary’,‘id >’=>2))->get(‘user’);

复杂的查询,请用 t h i s − > d b − > q u e r y ( this->db->query( this>db>query(sql,$data);//使用问号绑定参数


**扩展CI控制器**



application/core/MY_Controller.php
控制器就要以继承自MY_Controller
可以在自定义的控制器中扩展一些类。

application/config/config.php
$config[‘subclass_prefix’] = ‘MY_’;


**模型**



继承自CI_Model
在模型中,可以直接使用超级对象中的属性
文件名,全小写
类名首字母大写
建议使用_model作为后缀,防和控制器类名冲突

控制器要什么数据,model就写一个方法,model提供数据。


**url相关函数**



t h i s − > l o a d − > h e l p e r ( ′ u r l ′ ) ; / / 可以根需要配置自动加载 / / a p p l i c a t i o n / c o n f i g / a u t o l o a d . p h p / / this->load->helper('url'); //可以根需要配置自动加载 //application/config/autoload.php // this>load>helper(url);//可以根需要配置自动加载//application/config/autoload.php//autoload[‘helper’] = array(‘url’);

site_url(‘控制器/方法’)
base_url()//index.php的主入口。


**路由**



application/config/routes.php
//默认控制器
$route[‘default_controller’] = “welcome”;

//http://localhost/ci/index.php/news/201309/4.html
$route[‘news/[\d]{6}/([\d]+).html’]=‘article/show/$1’;


**隐藏入口文件**



开始apache的rewrite模块,在httpd.conf文件中
LoadModule rewrite_module modules/mod_rewrite.so
重启apache
在入口文件同级目录中,放入一个.htaccess文件
内容如下:


**分页**



//装载类文件
$this->load->library(‘pagination’);
$this->load->helper(‘url’);
//每页显示10条数据
$page_size=10;

$config[‘base_url’] =site_url(‘user/test’);
//一共有多少条数据
$config[‘total_rows’] = 100;
//每页显示条数
$config[‘per_page’] = $page_size;
$config[‘first_link’] = ‘首页’;
$config[‘next_link’] = ‘下一页’;
$config[‘uri_segment’]=3;//分页的数据查询偏移量在哪一段上

t h i s − > p a g i n a t i o n − > i n i t i a l i z e ( this->pagination->initialize( this>pagination>initialize(config);

o f f s e t = i n t v a l ( offset=intval( offset=intval(this->uri->segment(3));//与$config[‘uri_segment’]对应
$sql=“select * from blog_user limit $offset, $page_size”;
echo $sql;

d a t a [ ′ l i n k s ′ ] = data['links']= data[links]=this->pagination->create_links();

t h i s − > l o a d − > v i e w ( ′ u s e r / t e s t ′ , this->load->view('user/test', this>load>view(user/test,data);


**文件上传**



1.手动创建好上传目录

//上传目录需要手工创建
$config[‘upload_path’]=‘./uploads/’;
//允许
$config[‘allowed_types’]=‘gif|png|jpg|jpeg’;
$config[‘max_size’] = ‘10000’;
//生成新文件名
$config[‘file_name’]=uniqid();
//装载文件上传类
t h i s − > l o a d − > l i b r a r y ( ′ u p l o a d ′ , this->load->library('upload', this>load>library(upload,config);
$this->upload->do_upload(‘pic’);

var_dump($this->upload->data());

//获取上传之后的数据
d a t a = data= data=this->upload->data();
echo $data[‘file_name’];


**验证码**



//生成一个随机不重复的字符串作为加密用的key
//保存到application/config/config.php
//$config[‘encryption_key’] = ‘adb8bf6d0ac4e17b42a80941582497a4’;
//echo md5(uniqid());exit;
$this->load->library(‘session’);
u s e r = a r r a y ( ′ i d ′ = > 3 , ′ n a m e ′ = > ′ j a c k ′ ) ; / / s e s s i o n s t a r t ( ) ; / / user=array('id'=>3,'name'=>'jack'); //session_start(); // user=array(id=>3,name=>jack);//sessionstart();//_SESSION[‘user’]=$user;
t h i s − > s e s s i o n − > s e t u s e r d a t a ( ′ u s e r ′ , this->session->set_userdata('user', this>session>setuserdata(user,user);
//不在这这里获取刚放入的数据
//只有页在从新加载或跳转到别的url中,才能获取到

//一次性的数据,只能读取一次
$this->session->set_flashdata('test','aaaaaaaaaaaaaa');

}

public function show_session(){

$this->load->library('session');
//取CI session中的数据
$user=$this->session->userdata('user');
var_dump($user);

//下次刷新,就没有了
$test=$this->session->flashdata('test');
echo $test;

}


**表单验证**



$this->load->library(‘form_validation’);

$this->form_validation->set_rules('name', '用户名', 'required');
$this->form_validation->set_rules('email', '邮箱', 'valid\_email');

$bool=$this->form_validation->run();

if($bool){
    //调用模型保存到数据库

}else{
    //显示错误信息
    $this->load->view('user/add');

}



<?php echo validation_errors();?>
<form action="<?php echo site\_url('user/insert');?>" method="post">
    name <input type="text" name="name" value="<?php echo set\_value('name')?>" />
    <?php echo form_error('name','<span>','</span>')?>
    <br>
    password <input type="password" name="password" /><br>
    email <input type="text" name="email" value="<?php echo set\_value('email')?>" />
    <?php echo form_error('email')?>
    <br>
    <input type="submit" value="submit" />
</form>

//生成一个随机不重复的字符串作为加密用的key
    //保存到application/config/config.php
    //$config['encryption\_key'] = 'adb8bf6d0ac4e17b42a80941582497a4';
    //echo md5(uniqid());exit;
    $this->load->library('session');
    $user=array('id'=>3,'name'=>'jack');
    //session\_start();
    //$\_SESSION['user']=$user;
    $this->session->set_userdata('user',$user);
    //不在这这里获取刚放入的数据
    //只有页在从新加载或跳转到别的url中,才能获取到

    //一次性的数据,只能读取一次
    $this->session->set_flashdata('test','aaaaaaaaaaaaaa');

}

public function show\_session(){

    $this->load->library('session');
    //取CI session中的数据
    $user=$this->session->userdata('user');
    var_dump($user);

    //下次刷新,就没有了
    $test=$this->session->flashdata('test');
    echo $test;

}

表单验证

$this->load->library('form\_validation');

$this->form_validation->set_rules('name', '用户名', 'required');
$this->form_validation->set_rules('email', '邮箱', 'valid\_email');

$bool=$this->form_validation->run();

if($bool){
    //调用模型保存到数据库

}else{
    //显示错误信息
    $this->load->view('user/add');

}



<?php echo validation_errors();?>
<form action="<?php echo site\_url('user/insert');?>" method="post">
    name <input type="text" name="name" value="<?php echo set\_value('name')?>" />
    <?php echo form_error('name','<span>','</span>')?>
    <br>
    password <input type="password" name="password" /><br>
    email <input type="text" name="email" value="<?php echo set\_value('email')?>" />
    <?php echo form_error('email')?>
    <br>
    <input type="submit" value="submit" />
</form>

**最终user.php**



<?php class User extends CI\_Controller{ //连接数据库操作 public function showusers(){ //1.装载数据库操作类 $this->load->database();//可以传参,表示连接哪个数据库,在配置中配置多个数据库即可。 //装载成功后,可以用$this->db; //var\_dump($this->db); $sql = 'select \* from users'; $res = $this->db->query($sql);//msql\_query(); //var\_dump($res); $users = $res->result();//返回对象数组; //echo "
";
 //var\_dump($users);
 // mysql\_fetch\_assoc(result);//关联数组
 // mysql\_fetch\_object(result);//返回对象

 // 在页面中将数据带过去
 $data['user\_list'] = $users;
 $this->load->view('user/showusers',$data);
 }

 public function add(){
 $this->load->database();
 $sql = "insert into users (id,name,password,age,sex) values (5,'xiao','34234',23,'男')";

 $bool = $this->db->query($sql);
 if($bool){
 //mysql\_affected\_rows();
 echo "受影响的行数:".$this->db->affected\_rows();
 echo "自增id为:".$this->db->insert\_id();
 }

 }

 public function insert(){
 $data['id'] = 6;
 $data['name'] = 'guo';

 $sql = "insert into users (id, name) values(?,?)";
 $bool = $this->db->query($sql,$data);
 if($bool){
 //mysql\_affected\_rows();
 echo "受影响的行数:".$this->db->affected\_rows();
 echo "自增id为:".$this->db->insert\_id();
 }
 }

 //AR模型简化操作
 public function get(){

 //查询
 // $res = $this->db->get('users');
 // foreach ($res->result() as $item) {
 // echo $item->name;
 // echo "
"; // } //增加 /\*$data = array( 'id'=>8, 'name'=>'xiaoxiao', 'sex'=>'男' ); $bool = $this->db->insert('users',$data); var\_dump($bool);\*/ //改 /\*$data = array( 'name'=>'果果', 'sex'=>'女', 'age'=>44 ); $bool = $this->db->update('users',$data,array('id'=>1)); var\_dump($bool);\*/ //删 // $bool = $this->db->delete('users',array('id'=>0)); // var\_dump($bool); // select id, name, age,sex,from users where id <=5 order by id desc limit 2,3; $res = $this->db->select('id','name','age','sex') ->from('users') ->where('id <=5') ->order\_by('id desc') ->limit(3,2) ->get(); var\_dump($res->result()); } // private function \_test(){ // echo "string"; // } public function index(){ //$this->\_test(); // $this->load->view('user\_index'); $list = array( array('id'=>1, 'name'=>'xiao', 'email'=>'xiao@gmail.com'), array('id'=>2, 'name'=>'guo', 'email'=>'guo@gmail.com'), array('id'=>3, 'name'=>'ping', 'email'=>'ping@gmail.com'), ); //标量分配,在视图中直接可以$title.获得变量 //$this->load->vars('title','这是标题'); $data['title'] = '这是标题'; //分配多个变量 $data['list'] = $list; #### 总结 * 对于框架原理只能说个大概,真的深入某一部分具体的代码和实现方式就只能写出一个框架,许多细节注意不到。 **[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)** * 算法方面还是很薄弱,好在面试官都很和蔼可亲,擅长发现人的美哈哈哈...(最好多刷一刷,不然影响你的工资和成功率????) * 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。 * 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!! ![](https://img-blog.csdnimg.cn/img_convert/41a409bca685b4ea0e0aa1a5589c3e09.png) 第一次跳槽十分忐忑不安,和没毕业的时候开始找工作是一样的感受,真的要相信自己,有条不紊的进行。**如果有我能帮忙的地方欢迎随时找我,比如简历修改、内推、最起码,可以把烦心事说一说**,人嘛都会有苦恼的~ 祝大家都有美好的未来,拿下满意的 offer。
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值