由于目前用的这两个框架都不深,所以分析的难免有局限性。
1 首先是命名上ci不如yii规范,yii跟tp一样命名方面比如控制器都是NameController.php这种格式的,而ci是随便命名的。其实说异同点,也没什么好说的,但凡都是框架用的都是同样的思想,无法就是语法不同而已,这里我先说CI,我工作中用的就是CI.
2 CI 指向页面的写法是$this->load->view('viewname');
3 若要引用library里自己定义的方法,$this->load->library('test');调用的时候$this->test->functionname();另外一点需要说明的是,如果在自定义的类中定义和类同名的方法,ci会自动调用,这里就是function test(){}了
4 验证表单的时候首先要引用表单类,$this->load->library('form_validation');
首先要设置验证规则,$this->form_validation->set_rules('gh_name', '工会名称', 'trim|required|xss_clean');这句话的意思是过滤gh_name这个表单,名称不允许为空,并且进行安全验证,这三个参数是最常用的。然后是开始验证,前面只是设置规则,$this->form_validation->run();然后是如果符合条件的话就获得值,$this->form_validation->set_values('gh_name);如果还是$gh_name = $_POST['gh_name'];这样获取值的话本身就没有意义了。
5 很重要的一点,加载Model类。
$this->load->model('modelname');
调用model中的的方法,$this->modelname->functioname();
6 调用数据库的时候ci是这样的,$this->load->database();而yii不用特意调用它在自己的基类中已经调用,在页面中无需调用数据库。我觉得ci这样写不如yii写的好。
7 说一下ci的curd与yii的异同
增 ci用的最通俗易懂的方法,$this->db->insert($this->_table,$data);至于$data是什么大家都知道了
yii 的写法麻烦一点我觉得,yii的增加功能叫做save但他没有参数,也就是因为无法传表名以及数据的值,所以一定要事例话相应的要操作的表的类。$user = new user();$user->id = "";$user->name ="";
$user->save();其中,user表继承了基础的类。
修改 ci的用法和add的时候一样,只是把方法名换成了update一样,其他的完全一样
yii 一般都是这样的写法userinfo::model()->updateById($id,$data);
我觉得在增删改的处理上,ci做的要比yii好,首先是ci可以将各种条件组合起来,非常容易懂,比如
$$this->db->where('userid','1');$this->db->limit('5');这都是显而易见的,很容易明白,自由组合。而yii呢,都是写在一个方法里,传入各种参数这样看这就麻烦,冗杂。
最重要的当然还是读取了
CI $query = $this->db->get('tablename');这是最简单的一种用法,平时不可能只写这个的
此外,get这个函数第二参数Limit和第三个参数offset,可以让你设置偏移量和读取数量
$this->db->select();很明显,这里面可以传n个参数,这是需要读取的字段
$this->db->select_max()像这种不是太长用的函数就不多说了
$this->db->where();这个更是明显,举个例子就是知道了$this->db->where('name',$name);
$this->db->where('title',$title);多次调用本函数会被用and连接起来
$this->db->join('comment','comment.id=blog.id');很明显,都会用。同样,多次调用本函数也会用and连接起来
还有很多其他的函数都是非常简单,到时候用到的话查手册即可。下面举个例子来说明如何综合调用ci的这些函数。$this->db->select('title','name','age');$this->db->where('title',$title);$this->db->join('grade','grade.id=user.id');$this->db->get('user');
上面说的操作数据的各种函数,下面说一下生成记录集的方法,这写都是经常遇到并且密不可分的。
$query = $this->db-query($sql);
$result 方法,如果成功就返回一个对象数组,失败的话返回一个空数组。
foreach($query->result() as $row)
{
echo $row->title;
}
result_array()该方法执行成功返回关联数组,失返回空数组
foreach($query->result_array() as $row)
{
echo $row['title'];
}
row()只返回第一行的对象数组,失败的话返回空数组
row_array()返回一行的关联数组,失败的话返回空数组
上面这两种是最最常用的,下面说几个辅助的方法
num_rows()返回受影响的行数
YII
举个实例$salary = Resume::model()->find('id =:resume_id', array(':resume_id' => $resume_id));
find返回的是对象数组,我目前知道的关于YII的读取的函数就两个股find和findAll,其他的就不多说了,了解一个框架就可以了其实。
8 session 不管什么框架,session对他们来说都是非常重要的,ci的session设置$this->session->set_userdata('sessionname','sessionvalue');获得session的值是$this->session
->userdata('sessionname');当然了,不能忘了 初始化session,$this->load->library('session');使用就是这么简单。下面我就说一下登录和退出时的session设置
登录的时候$this->session->set_userdata('user_name','namevalue');退出的时候$this->session->
set_userdata('user_name','');并且销毁session $this->session->sess_destory();over
9 这里说明一下library和helper,这两个都是公共调用的东西,其中library是公共调用的类,而helper
里面是公共调用的函数,其中在命名方法libraries没有要求,helper有要求,就是一定要加上后缀_
_help.php即可。调用的时候library在前面已经说过了$this->load->library('libraryname');helper是
$this->load->help('helpname');由于helper里面都是方法,所以调用的时候直接写方法就可以了。
10 装载器类
这是使用ci的过程中最常用到的一个类,其实在前面就已经说过好多他的应用,比如加载模型,加载试图,加载辅助函数,设置加载自己定义的类文件。比如加载libary类
1 $this->load->library('libraryname');使用地方时候就$this->libraryname->somefunction();
2 最常用的加载试图文件 $this->load->view('viewname');
3 加载模型,也是常用的$this->load->model('modelname');
4 加载数据库类,这也是毋庸置疑的。$this->load->database();
5 加载辅助函数 $this->load->helper('file_name');file_name是不包含_help.php的文件名
以上5中加载应用的方法是我们最常用到的,其中加载自定义类文件和自定义函数的应用需要注意,稍有不同。下面介绍几种不太常用到的加载的应用
6