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事件;

可信程度:

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

php yii开发工具,开源PHP开发框架Yii教程相关推荐

  1. wex5 转换 html5,WeX5开发工具(html5 app开发框架)V3.9 开源版

    WeX5开发工具(html5 app开发框架)是一套免费开源的wex5应用快速开发框架平台.非常不错的html5开发工具,用来开发安卓.苹果.web.微信服务号等等,采用Apache源码,所有的代码都 ...

  2. python 报表开发工具_测评8款热门的报表开发工具 开源

    阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...

  3. 全网最全Android开发工具,Android开发框架大全

    涵盖Android方方面面的技术, 目前保持更新. 时刻与Android开发流行前沿同步. 目录 一.工具 Android开发工具 在线工具宝典大全 二.框架 *缓存框架* DiskLruCache ...

  4. H7-TOOL多功能开发工具/开源/烧录器/示波器/仿真器/逻辑分析仪

    H7-TOOL的最终目标: 1.为单片机工程师提供一款实用的多功能开发调试工具. 2.相信很多人有带板子回家调试.或带板子出差调试的情况.因为产品问题是无法预知的,多半情况不可能带齐全套测试工具的.经 ...

  5. GitHub热门开发工具开源了,几分钟内上线一个网站

    目录 前言 ILLA Builder ILLA 的界面示意图 使用 ILLA 的组件和页面功能,搭建前端 UI 使用 ILLA 的 Action 功能,连接数据 如何本地安装 ILLA 前言 众所周知 ...

  6. 79款 C/C++开发工具开源软件

    参考网站:http://www.oschina.net/project/tag/118/c-development-tools 集成开发环境Eclipse Eclipse是著名的跨平台的自由集成开发环 ...

  7. Python开发工具之Pycharm最新安装教程

    Pycharm可以说是一款进行Python开发功能强大的编辑器.鉴于近期很少有关最新版本的Pycharm安装教程,为了能够帮助刚刚学习Python的朋友们.宋宋老师又给大家准备了一版,会介绍Pycha ...

  8. 加速 Web 开发的 23 款前端开发工具

    市面上有许多前端开发工具可以加速 Web 开发工作.本文是对 2019 年顶级 Web 开发工具的一次精选汇总,分别介绍了每款工具的关键特性,并已附上下载链接. Novi Builder Novi B ...

  9. Java开发工具idea

    ntelliJ IDEA是针对Java语言的集成开发环境(IDE).IntelliJ在业界被公认为是现在最好的Java开发工具,尤其在智能代码助手.代码自动提示.重构.JavaEE支持.各类版本工具( ...

最新文章

  1. 【vue-router②】使用导航守卫控制页面前进刷新,后退缓存
  2. python 协程、进程、线程_Python进程、线程、协程之间的关系
  3. python语言入门p-python初学者怎么入门
  4. Winform 系统调优
  5. (转载)浅析Hadoop文件格式
  6. 欢迎来到我的第一个个人laravel尝试论坛项目,给予评价和建议 谢谢。
  7. HTML和CSS面试问题总结,html和css面试总结
  8. Tomcat 项目代码上线步骤详解
  9. trunk口_南京课工场IT培训:VLAN、Trunk与三层交换机的相关理论知识
  10. MySQL的性能调优工具
  11. PostgreSQL在何处处理 sql查询之二十五
  12. linux分布式文件部署,Linux的企业-分布式文件系统mfs(moosefs)搭建与配置
  13. E-Prime1.1安装教程及软件下载
  14. Kaggle共享单车需求项目详解
  15. RationalDMIS 7.1 手动测量特征注意事项
  16. JETT(二)-Java简单实现
  17. MacBookPro你真的会使用吗?
  18. 趋势:固态存储打破传统存储的I/O瓶颈
  19. 浅谈 Fhq-Treap
  20. 20135108李泽源 Java实验一

热门文章

  1. python dataframe中缺失值处理
  2. ubuntu 16.04 手动安装Java过程
  3. C#将Access数据库导出为JSON
  4. 突击计划——银行利息
  5. 以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解
  6. ViewPager——基础知识和PagerAdapter必须重写的四个方法
  7. 分享17个网页设计中字体排版的优秀示例
  8. 08年新年快乐 :-)
  9. 在Window10下基于Anaconda安装Tensorflow以及Keras并基于Spyder进行验证
  10. sklearn训练模型、保存模型文件(文本、pkl)、模型文件转换(pkl2onnx)以及模型可视化