用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4442|回复: 0
收起左侧

为CodeIgniter开发者准备的FuelPHP教程

[复制链接]
发表于 2012-8-14 21:41:49 | 显示全部楼层 |阅读模式

我开始使用CodeIgniter是在2008年1月,这是对我开发教育的一个巨大里程碑。他想我展示了一种构件程序全新的方法,如果不是CI,我今天可能很多事情还无法完成。我喜欢他并且一直使用它——它每天都在变得更好,它拥有一个光明的未来。

可以说,CodeIgniter内核开发以后,PHP改变很大,几个月前,发生了一些事情,Dan Horrigan 决定创建FuelPHP——一个松散的,吸收CodeIgniter一些特性发展而来的框架,但是完全建立在PHP5.3+

上周末,我决定深入FuelPHP,看到了很多东西,我非常喜欢里面的一些内容,它使用类似于CodeIgniter的方法但是完全两个不同的写法,同样实现许多CI能够做到的事情,因此,如果你是一个喜欢CI的朋友,可以在使用FuelPHP注意下CodeIgniter。

注意:这不是为了宣传让大家转换到FuelPHP,本文主要是概述FuelPHP的一些改变,在设计思维和架构上CI开发者可以使用FuelPHP。

一个类就是一个类

在CodeIgniter你拥有models,controllers以及libraries,你可能会注意到,这些都是常规的PHP类,他们只是由CI来进行区分不同的。


在FuelPHP,所有的class都放在一个“classes”的文件夹,Controllers放到一个“controller”子目录,并且models放在一个“model”子目录。这里没有库,因为这里所有的类都存放在了classes文件夹,这是一个小的更改,but it may throw you off if you are used to having your controllers, models, and libraries lead separate lives.


PS:这里没有helpers,They were dumb anyways.…这提醒了我

没有helpers

大多数CI的helper的功能,你都能够在FuelPHP找到他,你仍然可以找到旧的,完全不友好的类似HTML类的br(),你说那时什么?你你使用helpers上一切,甚至是最简单的任务吗?嗯,FuelPHP有一个h标记函数,Shit just got real.

准备好使用静态函数和属性

你在CI中使用类库的方法和属性的时候,都需要在一开始定义他,在一个控制器或者模型中,到处看到$this,如果不在模型或者控制器中,你就需要使用一个CI实力化对象$CI =& get_instance().

在FuelPHP中,你可以使用静态类,这里有个例子:

在CI中:

$this->load->library('Uri');
$this->uri->segment(1);

而Fuel中则

Uri::segment(1);

(是的,CI默认就载入了Uri类,but you get the idea.)

在PHP一个完整的静态方法超出了本文的范围,但基本上允许使用类作为静态您访问属性和方法,而无需创建一个上下文对象。

在你载入CodeIgniter库的时候,你创建一个对象实力,然后你调用这些对象的当法,在FuelPHP大多数情况下,你直接使用::操作符来调用对象的静态方法,这样就不需要载入太多的类。

你可以,当然,你可以使用工厂方法初始化一个实力化的对象,然后通过这个唯一的对象来对数据进行操作,类似这样:

$val = Validation::factory();
$val->add('username', 'Your username')->add_rule('required');

您还会注意到如果你正在创建一个类,并使用它作为静态,都需要一个对象上下文工作(比如$ this - >)不会工作。你需要使用self::相反。

如果你从不使用双冒号之前,它是一个错误,那么这将是一个变化。然而,这是迫使你做一些PHP的self::educating。明白我在做什么吗?

使用命名空间

CI中是没有使用命名空间的,因为PHP5.3中才新加入了这个特性,FuelPHP中加入了命名空间。

在中你如果重复定义了一个类,会获得一个错误提示,或者你和已经存在的类库或者控制器存在重复命名,就破坏了你一天的好心情,是这样么?

命名空间很好的解决了这个问题,你可以将两个相同名称的类封装在不同的命名空间中。

FuelPHP核心文件都在Fuel的命名空间中,你担心什么?Well, you’ll care because you’ll start using core Fuel classes in your own classes with namespaces and they won’t work. You need to tell PHP that you want the root namespace, but putting a forward slash backslash in front of the method call:

\Auth::check();

可能会有更多内容,不过开始这就是你需要知道的。

更多的内容

在FuelPHP有很多很酷的东西等你去发现(HMVC建于、休息、命令行建成的集成等),但这些都是很大的罪孽,如果你是一个顽固的CI的家伙。记得——FuelPHP仍在发展中,所以如果你看不到有制定的文档,跳进了代码和论坛。例如,有一种形式的类,但它还没有被记录了,所以不是个孩子,只要看一下该死的类已经。

快乐的编码!

转载注明来源:http://www.cit.cn/tech/develop/fuelphp/2012/0814/433.html

本版积分规则