1: 全面使用 yaf.library 来实现类的自动加载
2: 使用 setErrorHandle 来实现自定义错误输出, 方便 debug
1: 安装YAF 扩展, 然后在 php.ini 里加入如下内容, 重启 WEB 服务
[YAF]
extension = yaf.so
yaf.environ = dev
2: 配置好 application.ini 里的MySQL参数并将 dym.sql 导入自己的数据库 [导入前记得设置导入编码为UTF8]
3: 配置虚拟主机, 写对应的HOSTS
4: 解压文件至指定目录,运行
5: WEB 服务器开启 URL Rewrite 功能, Apache 下有 .htaccess [该文件默认为隐藏文件], Nginx 的虚拟主机需要加如下代码
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
}
}
6: Nginx 下配置文件示例 [请将 root 指向 public 目录]
server {
listen 80;
server_name dev.yof.com;
root /usr/www/YOF/public;
index index.php;
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
}
2: php.ini 中或调用 ini_set('yaf.environ') 来设置运行环境, 目前支持 dev, test, product
A: 开发环境请设置为 dev, 此时所有错误将打印出来方便调试
B: 线上测试环境设置为 test,
此时 PHP 的错误将记录在 APP_PATH.'/log/php/' 下的 $当天日期.log
SQL 的错误将记录在 APP_PATH.'/log/sql/' 下的 $当天日期.log
C: 正式生产环境设置为 product
此时 PHP 的错误将记录在 APP_PATH.'/log/php/' 下的 $当天日期.log
SQL 的错误将记录在 APP_PATH.'/log/sql/' 下的 $当天日期.log
注:正式生产环境千万不能设置为 dev, 切记!!!
3: 配置网站域名, 图片域名, 静态文件域名等, 避免硬编码
applicatoin => 程序主目录
controllers => 不使用modules 情况下的控制器目录
extend => 第三方类库
library => 封装好的类库
modules => YAF 默认的模块文件
views => 视力文件默认目录
conf => 配置文件目录, application.ini
public => 公用文件, JS, CSS, IMG 等一般位于此
runtime => 缓存文件或日志文件
APP_PATH => 根目录
ENV => 运行环境
LIB_PATH => 类目录, 即 APP_PATH.'/application/library'
ADMIN_PATH => Admin 模块目录, APP_PATH.'/application/modules/Admin'
IMG_PATH => IMG 路径, 即 /img
CUR_DATE => 当前日期, 格式 Y-m-d
SERVER_DOMAIN => 网站域名
STATIC_DOMAIN => 静态文件域名
IMG_DOMAIN => 图片域名
一: 控制器
A:不是模块下的情况: 在 APP_PATH.'/controllers' 目录下按 YAF 规则创建控制器, 如示例中的 Article.php
B: 模块下的情况: 在 APP_PATH.'/modules/模块/controllers' 目录下按 YAF 规则创建控制器, 如示例中的 User/controllers/User.php
C: 基本控制器 APP_PATH.'/controllers/core/C_Basic.php', 对 request, session, cookie 中的方法进行了简易封装, 令业务控制器可以少写不少的代码!
二: 模型
A: 常规模型: 在 APP_PATH.'/model' 目录下按 M_$模型名称.php 规则创建, 指定对应的表, 如示例中的 M_Admin, M_Role.php等
B: 不创建模型, 使用默认模型, 这种情况下不需要创建模型文件. 如示例中并没有 M_Articles.php,也可以操作 article 表, 按默认模型的方式调用即可
A: 常规模型: $this->m_role = $this->load('Role');
B: 默认模型: $this->m_article = $this->load('Article');, 示例中并没有 M_Articles.php 也可以加载, 但参数 Article 必须与表名对应, 即对应的表名必须是 TB_PREFIX.'article'
三: 视图
A: 在 YAF 指定的视图目录里创建与 Action 一样的文件名.php|.html
B: 控制器调用 $this->getView()->assign($buffer);
C: 视图文件里用模板引擎或原生PHP 展示数据就可以了
1: 先在 APP_PATH.'/conf/application.ini' 中添加模拟, DEMO 中有 Index,Api 四个模块. 注 Index模块 必不可少
2: 在 APP_PATH.'/application/modules' 中创建模块目录, 比如说DEMO 中的 Api
3: 建立 controllers, views 目录
4: 按 http://你的域名/模块名/控制器/方法 的规则调用, 如调用 Api 模块 Article 中的index
http://dev.yaf.com/api/article/index
DEMO 中处理方式是增加一个Module, 名为 Api, 按照基本的 MVC 模式去写就好了, 当然了别忘了给接口作安全验证
Q:如果又有网站, 又有 APP, 还要出手机端网站,如果只调用一次数据就能满足?
> 你可以使用 YOF 中的类来写得更优雅些 请点击这里查看强大的 SQL 拼接方法, 支持Where, ORR, Order 无限次数调用A: 借助 Library, 让其调用模型,出统一的数据. API,网站,手机网站的控制器调用 Library 中的方法即可