之前在sina博客写过yii的文章,来到博客园之后,没再写过关于yii的文章,正好端午假期没啥事,就结合以前的博客,yii的官方文档,再加上最近的关于yii的收获总结一下,写个系列~~
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应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。
%<span> cd Webroot/testdrive/framework
</span>% <span>yiic webapp ../../testdrive
Create a Web application under </span><span>'</span><span>/WebRoot/testdrive</span><span>'</span>? [Yes|<span>No]
Yes
</span><span>mkdir</span> /WebRoot/<span>testdrive
</span><span>mkdir</span> /WebRoot/testdrive/<span>assets
</span><span>mkdir</span> /WebRoot/testdrive/<span>css
generate css</span>/<span>bg.gif
generate css</span>/<span>form.css
generate css</span>/main.css你的应用已经成功创建到了/WebRoot/demo下。这个webapp命令的作用是创建一个全新的Yii应用。它只需要指定一个参数,无论是绝对还是相对路径都会创建应用程序。它所生成的目录及文件只是应用程序的一个骨架。
testdrive/<span>
index.php Web 应用入口脚本文件
index</span>-<span>test.php 功能测试使用的入口脚本文件
assets</span>/<span> 包含公开的资源文件
css</span>/<span> 包含 CSS 文件
images</span>/<span> 包含图片文件
themes</span>/<span> 包含应用主题
protected</span>/<span> 包含受保护的应用文件
yiic yiic 命令行脚本
yiic.bat Windows 下的 yiic 命令行脚本
yiic.php yiic 命令行 PHP 脚本
commands</span>/ 包含自定义的 <span>'</span><span>yiic</span><span>'</span><span> 命令
shell</span>/ 包含自定义的 <span>'</span><span>yiic shell</span><span>'</span><span> 命令
components</span>/<span> 包含可重用的用户组件
Controller.php 所有控制器类的基础类
Identity.php 用来认证的 </span><span>'</span><span>Identity</span><span>'</span><span> 类
config</span>/<span> 包含配置文件
console.php 控制台应用配置
main.php Web 应用配置
test.php 功能测试使用的配置
controllers</span>/<span> 包含控制器的类文件
SiteController.php 默认控制器的类文件
data</span>/<span> 包含示例数据库
schema.mysql.sql 示例 MySQL 数据库
schema.sqlite.sql 示例 SQLite 数据库
testdrive.db 示例 SQLite 数据库文件
extensions</span>/<span> 包含第三方扩展
messages</span>/<span> 包含翻译过的消息
models</span>/<span> 包含模型的类文件
LoginForm.php </span><span>'</span><span>login</span><span>'</span><span> 动作的表单模型
ContactForm.php </span><span>'</span><span>contact</span><span>'</span><span> 动作的表单模型
runtime</span>/<span> 包含临时生成的文件
tests</span>/<span> 包含测试脚本
views</span>/<span> 包含控制器的视图和布局文件
layouts</span>/<span> 包含布局视图文件
main.php 所有视图的默认布局
column1.php 使用单列页面使用的布局
column2.php 使用双列的页面使用的布局
site</span>/ 包含 <span>'</span><span>site</span><span>'</span><span> 控制器的视图文件
pages</span>/ 包含 <span>"</span><span>静态</span><span>"</span><span> 页面
about.php </span><span>"</span><span>about</span><span>"</span><span> 页面的视图
contact.php </span><span>'</span><span>contact</span><span>'</span><span> 动作的视图
error.php </span><span>'</span><span>error</span><span>'</span><span> 动作的视图(显示外部错误)
index.php </span><span>'</span><span>index</span><span>'</span><span> 动作的视图
</span><span>login</span>.php <span>'</span><span>login</span><span>'</span><span> 动作的视图
system</span>/ 包含系统视图文件这时不用写一行代码,我们就可以在浏览器中访问如下 URL 来看看我们第一个 Yii 应用:
http:<span>//</span><span>hostname/testdrive/index.php</span>
立即学习“PHP免费学习笔记(深入)”;
我们会看到的,这个应用包含三个页面:首页、联系页、登录页。首页展示一些关于应用和用户登录状态的信息,联系页显示一个联系表单以便用户填写并提交他们的咨询,登录页允许用户先通过认证然后访问已授权的内容。
在这个应用中,不管到那个页面url中都带有index.php,如果想把它去掉,怎么办。
1. 开启apache的mod_rewrite模块,去掉LoadModule rewrite_module modules/mod_rewrite.so前的"#"符号,确保'components'=><span>array</span><span>(
</span>...
'urlManager'=><span>array</span><span>(
</span>'urlFormat'=>'path',
'showScriptName'=><span>false</span>,<span>//</span><span>注意false不要用引号括上</span>
'rules'=><span>array</span><span>(
</span>'sites'=>'site/index',<span>
)</span>,<span>
)</span>,
...<span>
)</span>,
立即学习“PHP免费学习笔记(深入)”;
3.配置服务器,Yii可以在Apache和Nginx下配置
1)Apache
在Apache服务器下,Yii需要配置.htaccess文件。配置如下
<span>RewriteEngine on
# prevent httpd from serving dotfiles (.htaccess, .svn, .git, etc.)
RedirectMatch </span><span>403</span> /\..*<span>$
# </span><span>if</span> a directory or a <span>file</span><span> exists, use it directly
RewriteCond </span>%{REQUEST_FILENAME} !-<span>f
RewriteCond </span>%{REQUEST_FILENAME} !-<span>d
# otherwise forward it to index.php
RewriteRule . index.php</span>2)Nginx
Yii可以使用Nginx和PHP的FPM SAPI。配置如下
<span>server {
set $host_path </span><span>"</span><span>/www/mysite</span><span>"</span><span>;
access_log </span>/www/mysite/log/<span>access.log main;
server_name mysite;
root $host_path</span>/<span>htdocs;
set $yii_bootstrap </span><span>"</span><span>index.php</span><span>"</span><span>;
charset utf</span>-<span>8</span><span>;
location </span>/<span> {
index index.html $yii_bootstrap;
try_files $uri $uri</span>/ /$yii_bootstrap?<span>$args;
}
location </span>~ ^/(protected|framework|themes/\<span>w</span>+/<span>views) {
deny all;
}
#avoid processing of calls to unexisting static files by yii
location </span>~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|<span>zip</span>|<span>rar)$ {
try_files $uri </span>=<span>404</span><span>;
}
# pass the PHP scripts to FastCGI server listening on </span><span>127.0</span>.<span>0.1</span>:<span>9000</span><span>
#
location </span>~<span> \.php {
fastcgi_split_path_info </span>^(.+\.php)(.*<span>)$;
#let yii catch the calls to unexising PHP files
set $fsn </span>/<span>$yii_bootstrap;
</span><span>if</span> (-<span>f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
fastcgi_pass </span><span>127.0</span>.<span>0.1</span>:<span>9000</span><span>;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;
#PATH_INFO and PATH_TRANSLATED can be omitted, but RFC </span><span>3875</span> specifies them <span>for</span><span> CGI
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fsn;
}
# prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.)
location </span>~ /<span>\. {
deny all;
access_log off;
log_not_found off;
}
}</span>
立即学习“PHP免费学习笔记(深入)”;
使用如上配置,你可以在php.ini中设置cgi.fix_pathinfo=0,这样可以避免许多不必要的系统的stat()调用。
立即学习“PHP免费学习笔记(深入)”;
基本安装和配置就到这里~~
立即学习“PHP免费学习笔记(深入)”;
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号