一周试用yii开发一个带各种该有功能的web程序(一)
既然你要用框架,就得做好效率不是很高,扩展性不是很好的准备。既然你不用框架,就得确认自己有这方面的实力处理各种情况。
web框架
web方面的框架,形如ruby on rails, python的django, cherry, flask, tornado, php的thinkphp, cakephp,yii, thinkphp,java的spring, strusts等等,他们都在做这些事:为程序员提供方便,提升自己的扩展性,提升网站的安全性等做努力。
本周使用yii,同时,大致分析其内部代码实现,希望能不同于简单的教人看了文章,却任然不知所谓的博文。
首先,yii是什么?
简单的说yii是一套php开发web项目的框架。
去官网下载:http://www.yiiframework.com/ 。下载后解压得到一个文件夹yii-1.1.10.r3566。先进入文件夹查看内容。内容有:
我这里主要需要framework文件夹。demo文件夹是4个简单式例。
到这里,我们还没有创建任何有关项目的情况。现在开始创建项目。
这里我使用的是phpstorm,当然项目开发和开发工具是没关系的,只是工具而已。这里其实只是建立了一个文件夹。
你可以看到,没有一丁点内容。那么现在将刚才解压的文件夹framework复制进入这个my_demo文件夹中。
到这一步,可以看到和半点php,yii有关的任何知识都没有,接下来就会有一丁点了。
开始创建我们的一个首页。
打开framework,根目录会有3个文件我们需要关注的文件:
此3个文件稍微看下内容就知道,yiic是linux下的shell脚本,yiic.bat是windows下的执行脚本,yiic.php是php写的逻辑程序。其实yiic和yiic.bat也就是在调用yiic.php,为保证大家不区分操作系统,我们直接将使用php脚本。
但是怎么使用?
进入到cmd窗口命令行。项目根目录
执行如下命令:
php framework/yiic.php
如果提示php命令不能执行,请执行确认php环境安装
会得到效果图:
表示我们需要输入参数,才能执行这个命令,参数给出的是message, migrate, shell, webapp.
这里我们使用webapp,其他参数需要使用时在给出。
任然提示我们有error,必须执行一个精确的webapp的路径。是路径吗?
先随便输入一个吧。
询问是否创建一个app,输入yes后会创建出很多东西:
主要就是在my_demo下创建了一个index目录,而我们刚才输入的index可以理解成在当前目录的index路径下。
那尝试换一个路径:
输入yes后,同样在c盘下创建了一个目录index,效果是同样的。这里以前面的方式为准。
这时,就可以配置apache了。
需要确认一下地方:
1. LoadModule 处是否有php_module载入:
LoadModule php5_module "c:/wamp/bin/php/php5.3.13/php5apache2_2.dll"
这里我使用的wampphp,mysql集成环境,很方便
2. DocumentRoot "D:/php/workspace/my_demo/index"
主要这里的路径/斜杠,而从windows拷贝过来的是D:\php\workspace\my_demo\index,需要修改。
3.
<Directory "D:/php/workspace/testdrive/src">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
配置完成后重启服务。浏览器访问127.0.0.1,可以看到页面有:
页面提示我们可以修改这2个文件来修改内容,测试一下。
修改main.php,内容有:
<li>View file: <tt><?php echo __FILE__; ?></tt></li> <li>Layout file: <tt><?php echo $this->getLayoutFile('main'); ?></tt></li> <li>hello: <tt>world</tt></li>
展现内容变为:
<li>View file: <tt><?php echo __FILE__; ?></tt></li>
<li>Layout file: <tt><?php echo $this->getLayoutFile('main'); ?></tt></li>
<li>hello: <tt>world</tt></li>
由此可见,yii框架在模版里也使用的是php,既然自己有很强的模版性,干嘛要在去创造另外的模版语言。其他语言的框架中,却不得不使用除本身以外的第二种辅助模版语言来进行展示,比如django的模版,虽然他不承认自己创造的是一门模版语言,但是给程序员增加了学习负担,比如学习表示式,控制语句,过滤器,甚至还说你可以用python来自己学过滤器,诶,对程序员来说不是难事,但是对中国的程序员来说,真的优点过分了,因为中国程序员虽然聪明,但每天完成的各种各样的需求,还要兼顾学习,没啥个人生活了,yii在这里说,你只要会使用php,就会用yii的template,不用在学习更多的东西,所以说django程序员很悲催。框架能做的一定要带给程序员轻松的感觉,而不是负担!
好的,现在创建的这个blog application其实根本不是我们自己的东西,我们要的是"自己的东西"
先看目录结构:
注意这里有一个protected文件夹,这个文件夹的意思是受保护,那表示这个文件夹里该有我项目所有的全部业务逻辑,数据库查询等,所以我们需要在比如使用操作系统部署项目的时候注意这个文件夹的使用权限。或者可以移动出去,将index.php的配置属性$yii,和$config修改为移动出去后的路径。当然,yii已经为我们做了处理,即放了一个名为.htacess文件,内容为deny from all.