1 / 46

yii framwork

yii framwork. Yii is a high-performance PHP framework best for developing Web 2.0 applications. 畅 捷通信息技术股份有限公司 张亮 2012 年 8 月 23 日. 目录. 环境需求 模型 - 视图 - 控制器 数据库操作 其它实践. 一、环境需求. 要运行一个 Yii 驱动的 Web 应用,你需要有一个支持 PHP 5.1.0 或以上版本的 Web 服 务器。

aria
Download Presentation

yii framwork

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. yiiframwork Yii is a high-performance PHP framework best for developing Web 2.0 applications. 畅捷通信息技术股份有限公司 张亮 2012年8月23日

  2. 目录 • 环境需求 • 模型-视图-控制器 • 数据库操作 • 其它实践

  3. 一、环境需求 • 要运行一个 Yii驱动的 Web 应用,你需要有一个支持 PHP 5.1.0 或以上版本的 Web 服 务器。 • 对于打算使用 Yii的开发者来说,懂得面向对象编程(OOP)会非常有帮助。因为 Yii是一 个纯 OOP 的框架。

  4. 二、模型-视图-控制器 (MVC)

  5. 2.1 Controller • 控制器 是 CController 或其子类的实例。它在当用户请求时由应用创建。 当一个控制器运行时,它执行所请求的动作,动作通常会引入所必要的模型并渲染相应的视图。动作 的最简形式,就是一个名字以 action 开头的控制器类方法。

  6. 2.1 Controller • 路由 • 控制器实例化 • 动作 • 过滤器

  7. 2.1.1 路由 • 原始路径 • http://hostname/index.php?r=[modules/][path/]controller[/action] • Path模式下路径 • http://hostname/[modules/][path/]controller[/action] • 其它情况 • 使用UrlManager,你可以任意去控制他的路径

  8. *2.1.2 控制器实例化 • 控制器实例在 CWebApplication 处理到来的请求时创建。

  9. 2.1.3 动作 • 如何实现一个动作 • Controller中以action开头的方法 • 实现一个CAction的子类,在Controller中的actions方法路由,或者直接根据路径访问 • 支持参数的绑定 • 控制器动作可以定义命名的参数,参数的值将由 Yii自动从 $_GET 填充

  10. 2.1.4过滤器 • 过滤器是一段代码,可被配置在控制器动作执行之前或之后执行。 • 过滤器可以是个Controller中的方法以filter开头,也可以是一个Cfilter的子类 • 通过重写filters方法进行配置

  11. 2.1.4过滤器

  12. 2.2 模型 • 模型是 CModel 或其子类的实例。模型用于保持数据以及与其相关的业务逻辑。

  13. 2.3 视图 • 布局 • 小物件 • 系统视图

  14. 2.3.1 布局 • 布局是一种用来修饰视图的特殊的视图文件.它通常包含了用户界面中通用的一部分视图.例如:布局可以包含header和footer的部分,然后把内容嵌入其间. • 可以嵌套

  15. *2.3.2 小物件 • 小物件是 CWidget 或其子类的实例.它是一个主要用于表现数据的组件.小物件通常内嵌于一个视图来产生一些复杂而独立的用户界面.例如,一个日历小物件可用于渲染一个复杂的日历界面.小物件使用户界面更加可复用.

  16. *2.3.3系统视图 • 系统视图的渲染通常用于展示 Yii的错误和日志信息.例如,当用户请求来自一个不存在的控制器或动作时,Yii会抛出一个异常来解释这个错误. 这时,Yii就会使用一个特殊的系统视图来显示此错误.

  17. 2.4 模块 • 模块是一个独立的软件单元,它包含 模型, 视图, 控制器 和其他支持的组件。 在许多方面上,模块看起来像一个 应用。主要的区别就是模块不能单独部署,它必须存在于一个应用里。 用户可以像他们访问普通应用的控制器那样访问模块中的控制器。 • 模块可以嵌套

  18. 2.5 路径别名与名字空间 • Yii中广泛的使用了路径别名。路径别名关联于一个目录或文件的路径。它以点号语法指定,类似于广泛使用的名字空间(namespace)格式:

  19. 2.5.1 Root Alias • system: 表示 Yii框架目录; • zii: 表示 Zii库 目录; • application: 表示应用的 基础目录; • webroot: 表示 入口脚本 文件所在的目录。此别名从版本 1.0.3 开始有效。 • ext: 表示包含了所有第三方 扩展 的目录。此别名从版本 1.0.8 开始有效。

  20. 2.5.2 Importing Classes • Yii::import('system.web.CController'); • Yii::import('system.web.*');

  21. *2.5.3 使用命名空间的类 • application.components.GoogleMap • PHP 5.3.0 以上有效

  22. 三、数据库操作 • Yii提供了强大的数据库编程支持。Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS)。使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码。Yii的Active Record( AR ),实现了被广泛采用的对象关系映射(ORM)办法,进一步简化数据库编程。按照约定,一个类代表一个表,一个实例代表一行数据。

  23. 3.1 访问数据 • Yii DAO 基于 PHP Data Objects (PDO)构建。它是一个为众多流行的DBMS提供统一数据访问的扩展,这些 DBMS 包括 MySQL,PostgreSQL等等。因此,要使用 Yii DAO,PDO 扩展和特定的 PDO 数据库驱动(例如 PDO_MYSQL) 必须安装。

  24. 3.1.1 配置数据库 • Yii::app()->db

  25. 3.1.2 执行 SQL 语句

  26. 3.1.3 获取查询结果

  27. 3.1.4 使用事务

  28. 3.1.5 参数绑定

  29. 3.2 Active Record • Active Record (AR) 是一个流行的 对象-关系映射 (ORM) 技术。 每个 AR 类代表一个数据表(或视图),数据表(或视图)的列在 AR 类中体现为类的属性,一个 AR 实例则表示表中的一行。 常见的 CRUD 操作作为 AR 的方法实现。因此,我们可以以一种更加面向对象的方式访问数据。 例如,我们可以使用以下代码向 tbl_post表中插入一个新行。

  30. 3.2.1 定义AR类 • 此处省略一万字

  31. 3.2.1 通过Gii生成AR

  32. 3.2.2 AR的使用

  33. 3.2.2 AR的使用

  34. 3.3 AR的关系

  35. 3.3.1 四种关系 • BELONGS_TO(属于): 如果表 A 和 B 之间的关系是一对多,则 表 B 属于 表 A (例如 Post 属于 User); • HAS_MANY(有多个): 如果表 A 和 B 之间的关系是一对多,则 A 有多个 B (例如 User 有多个 Post); • HAS_ONE(有一个): 这是 HAS_MANY 的一个特例,A 最多有一个 B (例如 User 最多有一个 Profile); • MANY_MANY: 这个对应于数据库中的 多对多 关系。 由于多数 DBMS 不直接支持 多对多 关系,因此需要有一个关联表将 多对多 关系分割为 一对多 关系。 在我们的示例数据结构中,tbl_post_category就是用于此目的的。在 AR 术语中,我们可以解释 MANY_MANY 为 BELONGS_TO 和 HAS_MANY 的组合。 例如,Post 属于多个(belongs to many) Category ,Category 有多个(has many) Post.

  36. 3.3.2 关系的配置 • 配置在AR的Relations方法里面,它以数组的形式从方法中返回 • 'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options)

  37. 3.3.3 关联查询 • AR默认情况下延迟加载 • 可以通过 with方法要求AR直接加载 • 渴求式加载

  38. 3.3.4 relations里可以配置更多 • select: 关联的 AR 类中要选择(select)的列的列表。 默认为 '*',即选择所有列。此选项中的列名应该是已经消除歧义的。 • condition: 即 WHERE 条件。默认为空。此选项中的列名应该是已经消除歧义的。 • params: 要绑定到所生成的 SQL 语句的参数。应该以 名-值 对数组的形式赋值。此选项从 1.0.3 版起有效。 • on: 即 ON 语句。此处指定的条件将会通过 AND 操作符附加到 join 条件中。此选项中的列名应该是已经消除歧义的。 此选项不会应用到 MANY_MANY 关系中。此选项从 1.0.2 版起有效。 • order: 即 ORDER BY 语句。默认为空。 此选项中的列名应该是已经消除歧义的。 • …

  39. 3.3.5 动态查询

  40. 3.3.6 查询域的使用

  41. 3.3.6 查询域的使用

  42. 四、其它实践 • Yii提供了大量的插件供开发者使用,开发者可以根据需求在yii的官网上搜索适合自己的插件。 • http://www.yiiframework.com/extensions/

  43. 4.1 path路径的使用

  44. 4.2 隐藏index.php路径 • 开启apache的mod_rewrite模块     去掉LoadModulerewrite_module modules/mod_rewrite.so前的“#”符号     确保<Directory "..."></Directory>中有“AllowOverride All”

  45. 4.3 restfullyii • 这个第三方插件可以快速实现rest方式的api开发 • 配合eoauth插件可以快速实现基于oauth1.0的rest接口实现。

More Related