一起学Yii—-Hello world

注:题目是一起学!表示我不是什么高手,我说的也不一定对。我只是用博客的形式来记录一下个人学习的经历,希望对大家有所帮助。当然,如果你看了本系列文章,有什么想法,可以给我留言,或者给我发邮件。I will be very glad to hear from you !

Yii是什么?Yii是一个PHP的框架,如果在百度或者谷歌里搜一下,PHP的框架排名,应该可以搜到一篇叫做《国外十大最流行PHP框架排名》的文章,排在最前边的就是Yii,然后紧跟在他后边的是CodeIgniter(以后简称CI),作者以前用的是CI,如果大家有一些关于CI方面的问题,也可以联系我讨论一下。然后剩下的框架就没有用过了。

下边介绍一下个人对于CI和YII的看法。

CI中个人认为最好用而且做的最好的地方就是helper函数,只要加载一次,那么就可以直接运行了,不需要new出一个对象,然后调用他的方法。实际上helper就是一堆函数库,加载辅助函数也就是将函数库文件包含进来。还有很有意思的Loader机制,不管你的东西是什么,都可以通过load进来,类库也好,辅助函数也后,核心也好,数据库也好,总之所有的一切一切只要load进来就好了。CI是将所有的东西,用loader集中在了一起,然后彼此协作完成了整个的请求过程。可以说loader是整个框架的核心吧!有时间大家可以研究一下loader的源代码,一定会大有收获的。当然作者过段时间也许会写一些关于CI源码学习的文章,来和大家分享和讨论。

OK,说了这么多CI,有人要怀疑了吧!你的题目是Yii啊,别跑题哦!嘿嘿,跑回来了,毕竟对CI比较熟一点儿。

打开YII的官方网站,不管是中文的还是英文的吧!给人最大的震撼就是很强大的生成机制,可以通过一些组件gii或者命令行shell来生成几乎所有的东西。不过个人不喜欢那些东西,感觉不怎么舒服,感觉还是自己敲出来的比较舒服。然后给人印象最为深刻的就是他的类库了吧!能让人想到java的jdk类库帮助文档,或者微软C#的msdn,类库功能还是很强大的,几乎充斥了所有的功能。从数据库操作,到主题相关,到html代码,到ajax脚本,到数据验证,到数据提交与收集,还有很令人佩服的扩展机制。只要你有足够的基础,那么你可以把YII改成一个你自己的PHP框架,符合你自己的习惯。系列文章的关键只是沿着一条主线来学习一下YII。

然后,我觉得作为一个程序员应该会不怎么喜欢他那个用工具生成的hello world吧!虽然很酷,但是感觉有点儿不知所云了。没错吧!反正我是这么想的。所以,我带给大家的是一个一步一步写出来的Hello world。注意了哦!请不要嫌没有人家生成的好看,悬,酷。写完,我们就可以了解一下YII的简单执行流程了。

我们开始写吧!莫急,先下载源代码,从哪里下不用我告诉你吧!解压,我们会看到一个framwork的文件夹,只有这对于我们的应用程序是必要的,其他的大可以大胆的按动你的Delete,删除掉吧!不过建议你别删,有时间可以看看人家的代码。尤其是deoms里的代码都不是很难的。

将framework的路径记下来,这个一会儿需要用。比如说在/home/istrone/yii中吧。

然后我们得找一个入口文件,去demos中找就可以了,大致代码如下:

<?php
// change the following paths if necessary
$yii='/home/strone/yii/framework/yii.php';					//应该写相对路径但是为了方便写的绝对路径!只有framework是有用的
$config=dirname(__FILE__).'/protected/config/main.php';		              //包含不同的配置文件,将映射到不同的应用中去
// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);			//设置调试等级,发布以后将该值改为false
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
require_once($yii);
Yii::createWebApplication($config)->run();

yii变量就是刚才我们记下来的framework的地址,可以用相对路径也可以用绝对路径,两种各有优缺点。前者会使系统变得灵活,不在因为主机的环境而变化,不过相对路径就需

要将framework复制一起发布了。不爽吧!framwork我们是不需要的从网上哪里都可以下载,所以我们这里用绝对路径设置。这样设置以后,一个yii的路径可以被好多个应用程序所共享。
config变量是我们的应用的配置文件,按照Yii的习惯,我们在入口文件的同等路径内建立一个protected文件夹,这里将放置所有的我们写的代码文件。然后在其中建立一个config文件夹,建立一个main.php。这里我们没有什么配置,直接在其中写入如下代码,返回一个空数组就OK了。

    return new array();

好了,需要配置的就这么两个东西,然后是调试状态,我们就不改它了。
我们知道YII是遵循MVC的吧!我们的controller建在哪里呢?controller文件夹在protected文件夹下,名称固定为controllers文件夹。我们建立该文件夹。
然后新建一个controller文件,叫做SiteController.php,注意该文件名必须以Controller结尾,然后前边的部分叫做controllerid,以后会用到。叫做SiteController是因为他是Yii的
默认控制器,不传递任何参数将访问该控制器。当然也可以配置为其他控制器。
然后往其中写入PHP代码。Yii的Controller都继承自CControler,该类已经在入口中包含进来了。然后我们需要有一个默认执行的方法,通过浏览器可以响应的方法。这种方法名称一般为action加
上动作的名字,后半部分叫做actionid,例如有一个叫组hello的action则应该写入一个actionHello的函数。默认的执行的方法是actionIndex。我们就用默认的这个方法来实现好了。
我们在其中写入我们的echo “Hello istrone.com”;。整个代码如下:

<?php
class SiteController extends CController {

public function actionIndex(){
echo "Hello istrone.com";
}

}

好了,部署好你的apache服务器,然后通过http://yourip/index.php,看到Hello istrone.com了吧!
与此同时你还可以通过如下url来访问你的程序:http://yourip/index.php?r=site/index,或者http://yourip/index.php?r=site都将得到一样的结果。其中site的位置就
是controllerid,然后index的位置就是actionid的位置。Yii URL的格式如下:
http://yourip/index.php?r=controllerid/actionid/params。显示入口的URL,然后用get传值r,r的值是用/间隔的参数依次是controllerid和actionid,然后还有附加参数。



注:转载请注明文章来源:流影部落阁

一起学Yii—-Hello world》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注