框架CI与YII之个人见解1

来源:互联网 发布:qq三国js装备四象搭配 编辑:程序博客网 时间:2024/06/05 03:56

由于目前用的这两个框架都不深,所以分析的难免有局限性。

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中加载应用的方法是我们最常用到的,其中加载自定义类文件和自定义函数的应用需要注意,稍有不同。下面介绍几种不太常用到的加载的应用


原创粉丝点击