开源PHP开发框架Yii教程

Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。
在Yii入口脚本中,应用被创建为一个单例。它可以在任何位置通过 Yii::app() 来被访问。
应用配置
默认情况下, 应用是 CWebApplication 类的一个实例。 要对其进行定制, 通常是在应用实例被创建的时候提供一个配置文件 (或数组) 来初始化其属性值。另一个定制应用的方法就是扩展 CWebApplication 类。
配置是一个键值对的数组。 每个键名都对应应用实例的一个属性,相应的值为属性的初始值。举例来说,下面的代码设定了应用的 name 和 defaultController 属性。


array(
'name'=>'Yii Framework',
'defaultController'=>'site',
)

 

我们一般将配置保存在一个单独的PHP脚本中(如protected/config/main.php)。 在这个脚本中,我们按如下方式返回配置数组,

return array(...);

 

为应用这些配置,我们一般将这个文件的文件名作为一个参数,传递给应用的构造器。或者像下述例子这样传递给Yii::createWebApplication() ,就像我们经常在入口脚本里做的那样:

$app=Yii::createWebApplication($configFile);

 

如果应用配置非常复杂,我们可以将这分成几个文件,每个文件返回一部分配置参数。接下来,我们在主配置文件里用PHP 的include() 把其它配置文件加载进来并合并成一个配置数组。
应用的主目录
应用的主目录是指包含所有安全系数比较高的PHP代码和数据的根目录。在默认情况下,这个目录一般和入口脚本所在目录同级的一个子目录: protected 。这个路径可以通过在应用配置里设置 basePath属性来改变.
不应该让WEB用户访问应用文件夹里的内容。在 Apache HTTP 服务器里,我们可以在这个文件夹里放一个 .htaccess 文件来实现。.htaccess的文件内容是这样的:

deny from all

 

应用组件
我们可以很容易的通过组件(component)设置和丰富一个应用(Application)的功能。一个应用可以有很多应用组件,每个组件都执行一些特定的功能。比如说,一个应用可能通过CUrlManager 和 CHttpRequest组件来解析用户的访问请求。
通过配置应用的 components 属性 , 我们可以为应用中的每个应用组件,配置类名及其参数。例如,我们可以配置CMemCache组件以便用服务器的内存当缓存:

array(
......
'components'=>array(
......
'cache'=>array(
'class'=>'CMemCache',
'servers'=>array(
array('host'=>'server1', 'port'=>11211, 'weight'=>60),
array('host'=>'server2', 'port'=>11211, 'weight'=>40),
),
),
),
)


在上述例子中,我们将 cache 元素加在 components 数组里. 这个 cache 元素告诉我们这个组件的类是 CMemCache ,以及其 servers 属性应该如何初始化。
要调用组件,可以使用:Yii::app()->ComponentID,其中ComponentID是指这个组件的ID。 (比如 Yii::app()->cache).
我们可以在应用配置里,将 enabled 设置为false来关闭一个组件。当我们访问一个被禁止的组件时,系统会返回一个NULL值。
默认情况下,应用组件是根据需要而创建的。这意味着一个组件只有在被访问的情况下才会创建。 因此,系统的整体性能不会因为配置了很多组件而下降。有些组件,(比如CLogRouter) 是不管用不用都要创建的。在这种情况下,我们在应用的配置文件里将这些组件的ID加入到应用的preload属性中。
应用的核心组件
Yii预定义了一套核心应用组件提供Web应用程序的常见功能。例如,request组件用于解析用户请求和提供网址、cookie等信息。几乎在每一个方面,我们都可以通过配置这些核心组件的属性,来更改Yii的默认行为。
下面我们列出CWebApplication预先声明的核心组件。
assetManager: CAssetManager -管理发布私有asset文件。authManager: CAuthManager - 管理基于角色控制 (RBAC)。cache: CCache - 提供数据缓存功能。请注意,您必须指定实际的类(例如CMemCache, CDbCache ) 。否则,将返回空当访问此元件。clientScript: CClientScript -管理客户端脚本(javascripts and CSS)。coreMessages: CPhpMessageSource -提供翻译Yii框架使用的核心消息。db: CDbConnection - 提供数据库连接。请注意,你必须配置它的connectionString属性才能使用此元件。errorHandler: CErrorHandler - 处理没有捕获的PHP错误和例外。format: CFormatter - 为显示目的格式化数据值。已自版本 1.1.0 可用。messages: CPhpMessageSource - 提供翻译Yii应用程序使用的消息。request: CHttpRequest - 提供和用户请求相关的信息。securityManager: CSecurityManager -提供安全相关的服务,例如散列(hashing), 加密(encryption)。session: CHttpSession - 提供会话(session)相关功能。statePersister: CStatePersister -提供全局持久方法(global state persistence method)。urlManager: CUrlManager - 提供网址解析和某些函数。user: CWebUser - 代表当前用户的身份信息。themeManager: CThemeManager - 管理主题(themes)。
应用的生命周期
当处理一个用户请求时,一个应用程序将经历如下生命周期:
使用 CApplication::preinit() 预初始化应用。建立类自动加载器和错误处理;注册核心应用组件;载入应用配置;用CApplication::init()初始化应用程序。
注册应用行为;载入静态应用组件;
触发onBeginRequest事件;处理用户请求:
解析用户请求;创建控制器;执行控制器;
触发onEndRequest事件;
可信程度:

供应商可靠性:隐私:儿童安全性:

Need a translation service?

Please enter your personal details and we will contact you shortly

Words translated by CCJK

146,096,379

We are Certified

Our Client Satisfaction

rating for previous quarte

4.00

Over 95% of our clients recommend our language services to others

Copyright © CCJK Technologies Co., Ltd. 2000-2017. All rights reserved.
TOP