Yii 框架入口脚本示例分析_php实例

来源:脚本之家  责任编辑:小易  

这不是一篇评测文章。只是我的喃喃碎语,不计较真。而且,下面的内容真的会很杂,不全面,而且你不可能有和我一样的开发经历。所以对于某些我醉心的特性,你可能不会理解。同样的,我也不可能全部理解你为何对某一项特性十分喜欢。关于ThinkPHP(以下简称TP)和Yii Framework(以下简称Yii)的背景、作者和速度方面就不涉及了。因为速度是一个很复杂的问题,牵扯的因素很多。我不得不承认ThinkPHP是 一个是国内框架运营方面的榜样(当FleaPHP/QeePHP最火的那阵,我说过FleaPHP/QeePHP会倒的)。运行环境:Windows NT ACER 5.1 build 2600(Windows XP Professional Service Pack 3)i586Apache/2.2.14(Win32)DAV/2 mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1Mysql 5.1.4下载的代码:ThinkPHP 2.1,带扩展、示例和文档完整包,发布于2011年5月1日,下载地址是 http://thinkphp.cn/Down/download/178Yii 1.1.7,内含框架、实例和环境检测,下载地址 http://yii.googlecode.com/files/yii-1.1.7.r3135.tar.gz文档需要另外下载中文化方面,TP和Yii都可以满足中文用户的需求。但是由于Yii是国际化的项目,所以代码的注释仍旧是英文。不过两个框架的作者都是国人(没错,Yii作者的国籍仍旧是中国),所以交流起来还是很方便的。是Yii自带了一个环境检测脚本,可以告诉你当前的主机环境是否满足Yii的需求。检测的内容也比较详细。我觉得这点比较方便。TP最低需要PHP5.0支持,而Yii最低需要PHP 5.1.0支持。由于我使用PHP 5.3,所以对我来说没有什么区别。Yii是纯面向对象的的框架,而TP提供了一系列单字母函数。相比之下我更喜欢Yii的方式,因为可以避免项目之间的冲突。TP在以前的版本的基类Base类,当时就和一个整合Ucenter时的类冲突了,一度很苦恼。现在TP的各种基类仍旧是直接命名,如Think 类。在项目开发过程中就会体会命名冲突的痛苦之处。Yii则在框架的类都加上了C前缀(接口是I前缀),有效地避免了这个问题。Yii中的 CComponent是所有类的基类,可以看看CComponent的代码,很有用。说到命名问题了,就不得不说自动导入的问题。TP的类导入和Yii的代码风格差不多。但是Yii还支持PHP的命名空间和自定义autoload方法。TP有个特色叫项目编译。我觉得与其使用项目编译,还不如使用APC。在Yii中也有个yiilite.php文件,里面就包含了Yii的所有核心类。Yii作者表示在没有APC的情况下,还是不要使用这个“编译”好的文件,因为反而会增加系统开销。TP中还在第一次访问的时候自动生成项目,我觉得这一点和自动编译一样,都是我不喜欢的。我对每添加一个if都很敏感,这种判断让我很纠结。比如说 TP在每次运行的时候都要检测PHP版本,而Yii则单独做了一个内容更详细的环境监测脚本。我既然要用这个框架,我在第一次使用的时候,肯定就知道能不 能在当前环境上使用了,为什么要每次都要检测呢。当时我就说过,TP为用户做了太多事情。比如旧版本中的TopN函数。Yii的组件思路是非常不错的,用起来十分地舒服。从session到cache,你可以无缝地更换所有的组件而无需重构项目。而且Yii的延迟加 载也做得比较彻底,每个组件都是用到的时候才加载。比如,TP中,如果配置了session自动打开,则TP在应用初始化的时候执行 session_start()。而Yii则是你用到session的时候才打开session。说到项目的配置文件,TP要求是config.php,而Yii则比较灵活,支持多配置文件。当初TP很推崇自己的ThinkAjax,现在也改用JQuery。这一点是进步。TP做了很多小实例,这一点值得Yii学习。Yii在这一方面正在有一个叫yii playground的实例网站在开发中(http://code.google.com/p/yiiplayground/)。TP的动态模型可以实现不需要定义Model。但是在实际的项目中,我更倾向于使用Yii的方式。顺便说一句,将label定义在model中,为我的日常开发带来了许多方便之处。刚才提到TP的项目自动生成,Yii中也有这种工具。而且比起TP,Yii的工具更加强大而且可扩展。从TP的代码中,有人可以看出其作者熟悉JAVA。而从Yii的代码中,有人会发现其作者熟悉.Net。这常常是我身边人看到代码的时候发生的小插曲。Yii封装了大量的页面控件和类库,也是Yii如此吸引我的一点。这是TP短期无法比拟的,在TP的使用过程中总遇到这样那样的问题,让我感觉TP对我反而是阻碍。而Yii真的是,舒服,实在是太好用了!无论从代码规范、设计思路、类库丰富程度上来说,TP都远远不及Yii。有人说你看TP多简洁,Yii太臃肿了。错了!简单和简洁不是一回事。TP 那叫简单,你读读Yii的代码吧,那才叫简洁。至于臃肿,去看看Zend Framework就知道了。(顺便说一句,我很喜欢Zend Framework,它是学习设计的典范)说到读代码。对于程序员真的很难吗?读写得好的代码应该是一种享受才对。Yii的学习曲线是比TP高那么一点点,但是对比Yii的巨大优势而言不算什么了。而且,我认为在遇到学习困难就退缩或者认为Yii就像天书一样的人,还是转行吧。以上是应一篇评论所写的。对比TP1,现在的TP2的确有了很多进步,但是还是存在一些问题。对比Yii…,TP真的没有可比的能力。抱歉让TP的fans失望了。那就下定论了吗?不,不是的。从类库到框架,再到解决方案。什么是最好的?每一个人都有不同发说法,这是因为每一个人的思维习惯不同,遇到的问题不同,问题所在的环境也不同。怎么能奢求所有人都有同一个选择呢?还是那句,适合,就是最好的。对我来说,Yii是最好的www.zgxue.com防采集请勿采集本网。

本文实例讲述了Yii 框架入口脚本。分享给大家供大家参考,具体如下:

入口脚本

框架柱:板把自重及其它荷载传给次梁、次梁把荷载(百包括自重)传给框架主梁、度主梁把荷载传给框架柱,所以说框架柱是承担房子上面结构上的所有荷载,是主要承重构件!构造柱问:构造柱是为了

入口脚本是应用启动流程中的第一环, 一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。 终端用户的请求通过入口脚本实例化应用并将请求转发到应用。

不同的理论有不同的理论框架,写法有所不同。常见的主要有三种方式: 纵向分析:沿着时间脉搏,将理论的zd缘起、发展、成熟及展望归类整理;横向分析:理论国内外研究现状分析、归纳与整理;从大

Web 应用的入口脚本必须放在终端用户能够访问的目录下, 通常命名为 index.php, 也可以使用 Web 服务器能定位到的其他名称。

如仍有一个试样不合格则该批钢筋为不合格,热轧钢筋在加工过程中发生脆断、焊接性能不良或机械性能显著不正常等现象,应进行化学成分分析和其它专项检验。成品 钢筋混凝土用余热处理钢筋余热处理钢筋:

控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php), 该文件需要有执行权限, 这样用户就能通过命令 ./yii <route> [arguments] [options] 来运行控制台应用。

一是加强和改进立法工作,不断提高立法质量。只有让每个公民都树立了正确的法制观念,自觉在法制框架内行使权利、履行义务,才能够真正把依法治国基本方略真正落到实处,建成社会主义法治国家。

入口脚本主要完成以下工作: 定义全局常量; 注册 Composer 自动加载器; 包含 Yii 类文件; 加载应用配置; 创建一个应用实例并配置; 调用 yii\base\Application::run() 来处理请求。

Web 应用

主要包括以下几方面:性能监控、性能分析、Java HotSpot VM 调优、高效的基准测试以及Java EE 应用的性能调优。学习过程中精品开发工具推荐: JDK(Java开发工具包)、SparkJava、jClarity、Eclipse、

以下是基础应用模版入口脚本的代码:

<?php defined('YII_DEBUG') or define('YII_DEBUG', true);defined('YII_ENV') or define('YII_ENV', 'dev'); // 注册 Composer 自动加载器require __DIR__ . '/../vendor/autoload.php'; // 包含 Yii 类文件require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; // 加载应用配置$config = require __DIR__ . '/../config/web.php'; // 创建、配置、运行一个应用(new yii\web\Application($config))->run();

控制台应用

以下是一个控制台应用的入口脚本:

#!/usr/bin/env php<?php/** * Yii console bootstrap file. * * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */ defined('YII_DEBUG') or define('YII_DEBUG', true);defined('YII_ENV') or define('YII_ENV', 'dev'); // 注册 Composer 自动加载器require __DIR__ . '/vendor/autoload.php'; // 包含 Yii 类文件require __DIR__ . '/vendor/yiisoft/yii2/Yii.php'; // 加载应用配置$config = require __DIR__ . '/config/console.php'; $application = new yii\console\Application($config);$exitCode = $application->run();exit($exitCode);

定义常量

入口脚本是定义全局常量的最好地方,Yii 支持以下三个常量: YII_DEBUG:标识应用是否运行在调试模式。当在调试模式下,应用会保留更多日志信息, 如果抛出异常,会显示详细的错误调用堆栈。 因此,调试模式主要适合在开发阶段使用,YII_DEBUG 默认值为 false。 YII_ENV:标识应用运行的环境,详情请查阅 配置章节。 YII_ENV 默认值为 'prod',表示应用运行在线上产品环境。 YII_ENABLE_ERROR_HANDLER:标识是否启用 Yii 提供的错误处理, 默认为 true。

当定义一个常量时,通常使用类似如下代码来定义:

defined('YII_DEBUG') or define('YII_DEBUG', true);

上面的代码等同于:

if (!defined('YII_DEBUG')) { define('YII_DEBUG', true);}

显然第一段代码更加简洁易懂。

常量定义应该在入口脚本的开头,这样包含其他 PHP 文件时, 常量就能生效。

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

http://www.yiiframework.com/doc/guide/1.1/zh_cn/quickstart.first-app你看完了看懂了那你基本算入门了内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • yii的入口文件index.php中为什么会有这两句
  • php的yii框架中yiibase入口类的扩展写法示例
  • yii入门教程之目录结构、入口文件及路由设置
  • yii 框架使用gii生成代码操作示例
  • yii 框架使用数据库(databases)的方法示例
  • yii 框架使用forms操作详解
  • yii 框架应用(applications)操作实例详解
  • yii框架应用组件用法实例分析
  • yii框架小部件(widgets)用法实例详解
  • yii框架安装简明教程
  • 深入理解php printf() 输出格式化的字符串
  • 使用 laravel sms 构建短信验证码发送校验功能
  • thinkphp在php7环境下提示cannot use ‘string’ as class name
  • php json转换相关知识(小结)
  • laravel + vue实现的数据统计绘图(今天、7天、30天数据)
  • php利用腾讯ip分享计划获取地理位置示例分享
  • zen_cart实现支付前生成订单的方法
  • php仿微信发红包领红包效果
  • 反射调用private方法实践(php、java)
  • yii2框架dropdownlist下拉菜单用法实例分析
  • 求php yii框架数据库CRUD操作简单示例
  • YII框架和THINKPHP的区别
  • 需求分析方法主要包括哪些
  • 定量分析的全过程主要包括哪些步骤?
  • 框架柱和构造柱的区别
  • 理论框架怎么写
  • 钢筋图纸怎么看
  • 结合实例谈谈如何建设社会主义法治国家?
  • 零基础学习Java的书籍有哪些,请推荐
  • java该怎么自学?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实例yii框架入门及常用技巧总结php优秀开发框架总结smarty模板入门基础教程php面向对象程序设计入门教程php字符串(string)用法总结php+mysql数据库操作入门教程php常见数据库操作技巧汇总php的yii框架中yiibase入口类的扩展写法示例yii入门教程之目录结构、入口文件及路由设置yii 框架使用gii生成代码操作示例yii 框架使用数据库(databases)的方法示例yii 框架使用forms操作详解yii 框架应用(applications)操作实例详解yii框架应用组件用法实例分析yii框架小部件(widgets)用法实例详解yii框架安装简明教程深入理解php printf() 输出格式化的字符串使用 laravel sms 构建短信验证码发送校验功能thinkphp在php7环境下提示cannot use ‘string’ as class name php json转换相关知识(小结)laravel + vue实现的数据统计绘图(今天、7天、30天数据)php利用腾讯ip分享计划获取地理位置示例分享zen_cart实现支付前生成订单的方法php仿微信发红包领红包效果反射调用private方法实践(php、java)yii2框架dropdownlist下拉菜单用法实例分析php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php从数组中删除元素的四种方法实php切割整数工具类似微信红包金额分配的思分页详解 从此分页无忧(php+mysql)thinkphp显示不出验证码的原因与解决方法php不使用递归的无限级分类简单实例浅谈laravel中的一个后期静态绑定thinkphp的c方法使用示例thinkphp框架实现的无限回复评论功能示例php截取字符串函数substr,iconv_substr,mphp实现的简单留言板功能示例【基于thinkzend framework教程之autoloading用法详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved