yii Yii Framework PHP 框架

news2024/11/27 12:36:36

基于组件、开发大型 Web 应用的PHP 框架

Yii Framework是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。Yii是最有效率的PHP框架之一。Yii是创始人薛强的心血结晶,于2008年1月1日开始开发。

中文名

Yii

外文名

Yii Framework

本    质

PHP 框架

用    途

开发大型Web应用

编    写

OOP编写

创始人

薛强

目录

  1. 1 软件简介
  2. 2 优点
  3. 3 软件特点
  4. ▪ 快速
  5. ▪ 安全
  6. ▪ 专业
  1. 4 特性
  2. 5 关于Yii
  3. ▪ 环境需求
  4. ▪ 适用范围
  5. ▪ 与同类产品比较
  6. 6 性能
  1. ▪ 标准设置
  2. ▪ 基准请求
  3. ▪ 标准工具和环境
  4. 7 发展历史
  5. 8 版本
  6. 9 Credits
  1. 10 许可
  2. 11 开发团队
  3. ▪ 成员
  4. ▪ 历史成员

软件简介

编辑 播报

Yii Framework

Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。

Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。 [1] 

优点

编辑 播报

Yii容易学习和使用。你只需要知道PHP和面向对象编程,便可以很快上手,而不必事先去学习一种新的架构或者模板语言。

用Yii的开发速度非常之快,除框架本身之外,需要为应用所写的编码极少。事实上这是最高效的开发框架之一。

Yii 具有高度的可重用性和可扩展性,是纯粹的面向对象的。Yii中的一切都是独立的可被配置,可重用,可扩展的组件。更重要的是Yii有着越来越多的扩展库。主要由使用者贡献出的组件组成,这可能有助于大大减少您的开发时间。

Yii 有着丰富的功能. 从 MVC, DAO/ActiveRecord, 到 主题化, 国际化 和本地化, Yii 提供了几乎所有今天的Web 2.0应用程序开发所需的功能。

在Yii参考手册是Yii完备的文档,有着你学习和掌握它所需要的任何信息。

Yii一开始就精心设计,以适应复杂的WEB应用开发。他不是一些项目的副产品或者第三方集成。而是融合了作者丰富的 Web 应用开发经验和其它热门 Web 框架和应用的优秀思想的结晶。

最后,但并非不重要,Yii是免费的,Yii遵循最新的BSD许可。它确保了它的第三方开发也循序和BSD相兼容的许可。这意味着无论从法律上还是财务上来说,您都可以自由的使用yii来开发任何一个开源的或者私有的应用。

软件特点

编辑 播报

快速

Yii 只加载您需要的功能。它具有强大的缓存支持。它明确的设计能与 AJAX 一起高效率的工作。

安全

Yii 的标准是安全的。它包括了输入验证,输出过滤,SQL 注入和跨站点脚本的预防。

专业

Yii 可帮助您开发清洁和可重用的代码。它遵循了 MVC模式,确保了清晰分离逻辑层和表示层。

特性

编辑 播报

Yii几乎拥有了当今Web 2.0应用发展的全部特性。下面是这些特性的一个简短的清单。

模型-视图-控制器(MVC)设计模式:Yii在WEB编程中采用这一成熟的技术从而可以更好的将逻辑层和表现层分开。

数据库访问对象(DAO)和Active Record:Yii允许开发者模型数据库中的数据对象,从而减少他们在写很长和重复的SQL语句上的精力。

与jQuery整合:作为最流行的JavaScript框架之一,jQuery可以编写高效而灵活的JavaScript接口。

表单输入和验证:YII使得收集表单输入非常容易和安全。 Yii拥有一套确保数据的有效性的验证器,它也有辅助方法和部件,显示验证失败时的错误。

Web 2.0部件:由jQuery的支持,YII配备了一套Web 2.0的部件,如自动完成输入字段,TreeView等等。

身份验证和授权:Yii具有内置的身份验证支持。它也支持通过分层的基于角色的访问控制(RBAC)的授权。

主题:它能够瞬间改变一个Yii应用的视图。

Web服务:Yii支持自动生成复杂的WSDL服务规范和管理Web服务请求处理。

国际化(I18N)和本地化(L10N):Yii支持消息转换,日期和时间格式,数字格式和界面本地化。

分层缓存方案:Yii支持数据缓存,页面缓存,片段缓存和动态内容。缓存的存储介质,可以轻松地更改而不触及应用程序代码。

错误处理和日志记录:错误的处理很好的呈现出来,日志信息可以分类,过滤并分配到不同的位置。

安全:Yii配备了许多安全的措施,以帮助安全的Web应用程序,以防止网络攻击。这些措施包括跨站点脚本(XSS)预防,跨站点请求伪造(CSRF)预防,Cookie篡改预防等。

符合XHTML:Yii的组件和命令行工具生成的代码符合XHTML标准。

自动代码生成:Yii提供了可以自动生成的代码的工具,根据你的需要,例如生成一个程序骨架,CRUD应用等等。

完全面向对象:Yii框架坚持严格的面向对象编程范式。它没有定义任何全局函数或变量。而且,它定义的类层次结构允许最大的可重用性和定制。

友好的使用第三方代码:Yii精心设计让它第三方代码非常好的工作。例如,你可以在你的Yii应用程序中使用PEAR或Zend Framework的代码。

详细的文档:每一个单一的方法或属性都非常清楚的记录着。同时提供了一个全面的教程和一些新手教程。

扩展库:Yii提供了一个组成用户提供组件的一个扩展库,这使得上述功能列表是永无止境的。

关于Yii

编辑 播报

Yii是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。在WEB开发中Yii可以最大限度的实现代码重用,极大的提高开发的速度。名字Yii(读音是Yee or [ji:],应该就是“易”的读音 )代表的是容易(easy),高效(efficient)和可扩展(extensible)

环境需求

要运行一个 Yii 驱动的 Web 应用,你需要有一个支持 PHP 5.1.0 或以上版本的 Web 服务器。

对于打算使用 Yii 的开发者来说,懂得面向对象编程(OOP)会非常有帮助。因为 Yii 是一个纯 OOP 的框架。

适用范围

Yii 是一个通用的 Web 编程框架,可以用于开发几乎所有的 Web 应用。由于它是轻量级的且具备了成熟的缓存解决方案,它特别适用于开发高流量的应用,例如门户,论坛,内容管理系统(CMS),电子商务系统等等。

与同类产品比较

和多数PHP框架类似,Yii 是一个 MVC 的框架。

Yii 以其优异的性能,丰富的功能和清晰的文档胜出其他框架。Yii 从一开始就仔细设计以适合严谨的 Web 应用开发。它既不是一个其他项目的衍生品,也不是一个第三方工作的组合。 它是作者丰富的 Web 应用开发经验和对大多数流行的 Web 编程框架与应用的研究与思考的成果。

性能

编辑 播报

yii性能

Yii是一个高性能的框架,以下的图表展示了与其他流行的PHP框架比较下Yii的高效率。在这个图表中, RPS代表“每秒请求”,描述了此框架每秒执行多少个请求。这个数字越大,此框架的性能越高,我们可以看到,在这个比较中 Yii 胜过其他框架。The performance advantage of Yii is especially significant when the widely used APC extension is enabled.

Performance alone is not the whole story (otherwise we should all use plain HTML or PHP). With such superior performance, Yii still provides a very rich feature setwhich can greatly improve your development efficiency.

为什么Yii如此之快

Yii如此快速是因为它广泛地使用lazy loading技术。比如, 直到第一次使用到这个类,才会包含进来;直到对象第一次访问,才会创造这个对象。Other frameworks suffer from the performance hit because they would enable a functionality (e.g. DB connection, user session) no matter it is used or not during a request.

标准设置

下面我们解释怎样设计基准应用并且得到上面的RPS结果.

基准请求

Since our goal is to compare the minimal overhead of each framework, the benchmark application for each framework should be the simplest one. We choose to display a "Hello World" text string by placing an echo statement in the default action of each application. Any additional framework features (e.g. session) are disabled to ensure fairness of the comparison. To obtain a copy of the benchmark applications, please check out the phpmark project.

为什么用“Hello World”

我们做“hello world”的测试主要是为了达到我们的目标,如:找出每个框架地最小代价。很多人抱怨说应用程序“hello world”很没意义,因为在真实世界的应用程序经常需要去涉及更复杂的任务,比如数据库查询。这是不对的。实际上,尤其是在一些大规模的web2.0应用程序中,我们经常遇到的情况通常是相当地接近“hello world”。例如:应用程序要响应ajax请求返回当前服务器的时间。页面有大部分内容在缓存,应用程序只需要抓取缓存的内容并显示之。

另一个用“hello world”的原因是当引用更复杂(如:数据库查询)的特征时,对照的清晰将很难保证。例如:框架可以在数据库查询执行得非常有效率,但缺少缓存方案。当另一个框架在数据库查询上稍慢,却有高级的缓存特征来缓和系统损耗。总而言之有包含了太多的因素来进行清晰的对比。

标准工具和环境

用ApacheBench工具的指令“ab –t 30 -c 10 URL”来获取RPS编号(如:在并发级数10运行test 30秒)。为了获得每个框架的编号,我们先停止再启动Apache WEB服务器来避免干扰。还要运行测试程序几次来“预热”测试环境。在phpmark project中,有个叫benchmark. sh的shell script使基准程序自动化。

发展历史

编辑 播报

Qiang 在开发和维护 Prado 超过三年并意识到需要一个简单,高效和扩展性框架,于是,在2008年1月1日开始了 Yii 项目。

在2008年10月经过十个月的独自开发,Qiang 发布了 Yii 的第一个试用版本并迅速得到广泛的关注,因为 Yii 在性能上的胜出其他主流的PHP框架,而且几乎拥有了所有的特性。 在2008年12月3日,Yii 1.0正式发布了。

版本

编辑 播报

Yii有两个主要的版本: 2.0 和 1.1。yii 最先发布稳定版本为:1.1.14 (2013年8月11日发布),yii 最新发布稳定版本为:2.0.0 (发布于 2014年10月12日发布)。

Credits

编辑 播报

Yii 的很多想法来自其他著名 Web 编程框架和应用程序。下面是一个简短的清单。

Prado:这是 Yii 的主要思想来源。Yii 采用了基于组件和事件驱动编程模式,数据库抽象层,模块化的应用架构,国际化和本地化,和许多它的其他特点和功能。

Ruby on Rails:Yii 继承它的配置的思想。还引用它的 Active Record的 ORM设计模式。

jQuery:这是集成在 Yii 为基础的 JavaScript 框架。

Symfony:Yii 引用它的过滤设计和插件架构。

Joomla:Yii 引用其模块化设计和信息翻译方案。

许可

编辑 播报

Yii的发布遵循BSD许可。这意味着你可以免费的使用Yii来开发开源或者不开源的WEB应用

开发团队

编辑 播报

成员

Александр Макаров (samdark)

俄罗斯

2010年3月加入

职责:核心框架开发

Jonah Turnquist (jonah)

美国加利福尼亚

2009年9月加入

职责:开发官方的扩展库

Sebastián Thierer (sebas)

阿根廷

2009年9月加入

职责:开发官方的扩展库和核心框架的发布

Wei Zhuo (wei)

澳大利亚 

2008年9月加入

职责:核心框架的开发和项目的网站

Qiang Xue (qiang)

美国华盛顿

创建者

职责:参与所有事物

历史成员

István Beregszászi (pestaa)

匈牙利

2009年9月加入

职责:维护论坛和核心框架的发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux LAMP(Linux Apache MySQL PHP)搭建 Discuz! 网络论坛

LAMP架构 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或P…

samba-3.3.16 在海思平台(SS528)交叉编译及问题解决

目录 <center>一、概述<center>二、编译步骤&#x1f449;2.1 解压缩&#xff0c;进入源码目录&#x1f449;2.2 配置&#x1f449;2.3 问题一&#x1f449;2.4 问题二&#x1f449;2.5 问题三 一、概述 远程开关机功能需要用到samba里面的一个工具net&#xff0c;…

APP UI自动化测试框架总结,各种项目实战加源码等你来拿

目录 开发语言选择 UI测试框架选择 单元测试框架选择 测试环境搭建 脚本编写 Jenkins集成 开发语言选择 通常用于自动化测试的编程语言有&#xff1a;Python、Java、Javascript、Ruby、C#、PHP等。一般我们会选择自己熟悉的编程语言来编写自动化脚本&#xff0c;但对于编…

spark安装

安装 su - root https://repo.anaconda.com/archive/ Anaconda3-2021.05-Linux-x86_64.sh sh ./Anaconda3-2021.05-Linux-x86_64.sh yes enter exit() exit() 重新登录 su - root 配置成功 (base) [rootnode1 ~]# python Python 3.8.8 (default, Apr 13 2021, 19:58:26) [GC…

SpringBoot集成slf4j日志和logback.xml配置详解

SpringBoot集成slf4j日志和logback.xml配置详解 一、Slf4j概述二、使用Slf4j打印日志1.代码方式使用Slf4j2.lombok使用注解引入Slf4j 三、项目如何配置logback.xml1. applicaiton.yml配置2. 日志级别及优先级3. logback.xml日志配置文件4. logback.xml日志配置的实现效果 四、l…

Coremail与中科曙光达成战略合作 紧抓数字经济大机遇

5月12日&#xff0c;广东盈世计算机科技有限公司&#xff08;以下简称&#xff1a;Coremail&#xff09;与曙光信息产业股份有限公司&#xff08;以下简称&#xff1a;中科曙光&#xff09;正式签约合作协议、达成战略合作伙伴关系。 Coremail技术副总裁林延中、中科曙光副总裁…

【高级语言程序设计(一)】第 10 章:文件

目录 一、文件概述 &#xff08;1&#xff09;文件定义 &#xff08;2&#xff09;文件命名 &#xff08;3&#xff09;文件分类 ① 按照文件的内容划分 ② 按照文件的组织形式划分 ③ 按照文件的存储形式划分 ④ 按照文件的存储介质划分 &#xff08;4&#xff09;文…

vulnhub dc-7

1.信息搜集 端口 22,80 存活主机 192.168.85.134 2.访问网站进行信息搜集 发现提示信息&#xff0c;大体意思&#xff0c;有一个新概念&#xff0c;爆破可能失败&#xff0c;跳出框思考 cms&#xff1a;drupal 8.0 msf尝试利用失败 3.对网站进行渗透测试 尝试弱口令 失败 试出…

MapReduce实现KNN算法分类推测鸢尾花种类

文章目录 代码地址一、KNN算法简介二、KNN算法示例&#xff1a;推测鸢尾花种类三、MapReduceHadoop实现KNN鸢尾花分类&#xff1a;1. 实现环境2.pom.xml 3.设计思路及代码1. KNN_Driver类2. MyData类3. KNN_Mapper类 4. KNN_Reducer类 代码地址 https://gitcode.net/m0_567453…

企企管理云是什么应用?如何自动同步数据至企企管理云

企企管理云是什么应用&#xff1f; 企企管理云&#xff0c;是企企科技依托创始团队30年企业级管理软件实践与服务经验&#xff0c;坚持技术和产品立业&#xff0c;逐步构建的企业经营管理一站式服务平台。企企管理云围绕「现代服务业」的业财一体化&#xff0c;聚焦于项目管理…

Sui网络更新计划

Sui主网已经上线&#xff0c;接下来一段时间&#xff0c;我们计划将对Sui网络每两周进行一次迭代。待网络稳定后&#xff0c;我们将减缓迭代的频率。 为了网络稳定切换&#xff0c;每个版本都有其分支&#xff0c;大多数情况下是两个实时分支&#xff0c;一个用于当前的主网版…

如何在华为OD机试中获得满分?Java实现【任务混部】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 公司创新实验室正在研究…

如何清理harbor的磁盘空间

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 registry garbage-collectharbor自带的清理工具docker image prune -a…

Flume系列:Flume通道拓扑结构

目录 Apache Hadoop生态-目录汇总-持续更新 1: 基础架构 2&#xff1a;简单串联 3&#xff1a;复制(Replicating)和多路复用(Multiplexing) 4&#xff1a;负载均衡和故障转移 5&#xff1a;聚合 Apache Hadoop生态-目录汇总-持续更新 系统环境&#xff1a;centos7 Java环境…

字符串---第一部分 序列、字串;上升,公共

第一部分 最长上升子序列&#xff0c;最长上升子串&#xff0c;最长公共子序列&#xff0c;最长公共子串--dp 第二部分 KMP&#xff0c;trie&#xff0c;双指针 第三部分 待定 动态规划&#xff1a;审题&#xff0c;状态确定&#xff0c;状态转移&#xff0c;边界条件 线性…

Redis客户端介绍

Redis客户端 命令行客户端 redis安装完成后有自带的命令行客户端&#xff0c;即redis-cli&#xff0c;使用方式如下 redis-cli [options][commonds]options——参数 -h 127.0.0.1&#xff1a;指定要连接的redis节点的ip地址&#xff0c;默认值127.0.0.1-p 6379&#xff1a;指…

[中间件漏洞]nginx漏洞复现

目录 文件解析漏洞 原理分析 复现过程 防御方法 目录遍历漏洞 原理分析 复现过程 防御方法 空字节代码执行漏洞 复现过程 防御方法 整数溢出漏洞&#xff08;CVE-2017-7529&#xff09; 复现过程 防御方法 文件名逻辑漏洞&#xff08;CVE-2013-4547&#xff09; 复现过程 防…

学习笔记 | 基于大模型的优质 Prompt 开发课

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 手把手带你构建高质量 Prompt&#xff0c;掌握以文心一言为代表的大模型对话技巧与高级用法&#xff0c;与大模型高效交流从而释放大模型强大的生成能…

震坤行平台商品详情页面数据

震坤行&#xff08; &#xff08;zkh.com&#xff09; 商品详情页面数据通常包括以下信息&#xff1a; 商品名称、型号、品牌、颜色、大小等基本属性商品主图和详细图集&#xff0c;包括多角度展示、细节展示等商品描述&#xff0c;包括功能介绍、使用方法、注意事项等商品价格…

如何在华为OD机试中获得满分?Java实现【简单的解压缩算法】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 现需要实现一种算法,能…