# LiveTrain
**Repository Path**: LiveStar/LiveTrain
## Basic Information
- **Project Name**: LiveTrain
- **Description**: LiveTrain
- **Primary Language**: PHP
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2017-09-12
- **Last Updated**: 2021-03-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
特点
> 1: 全面使用 yaf.library 来实现类的自动加载
> 2: 使用 setErrorHandle 来实现自定义错误输出, 方便 debug
安装 [建议在Linux下使用]
> 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;
}
}
###
设置
> 1: MySQL 参数 application.ini
> 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 表, 按默认模型的方式调用即可
>> 模型的调用: 控制器中调用基础控制器 C_Basic.php 的 load($模型名)
>> 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
###
API
> DEMO 中处理方式是增加一个Module, 名为 Api, 按照基本的 MVC 模式去写就好了, 当然了别忘了给接口作安全验证
> Q:如果又有网站, 又有 APP, 还要出手机端网站,如果只调用一次数据就能满足?
> A: 借助 Library, 让其调用模型,出统一的数据. API,网站,手机网站的控制器调用 Library 中的方法即可
事务支持
> 你可以使用 YOF 中的类来写得更优雅些
请点击这里查看强大的 SQL 拼接方法, 支持Where, ORR, Order 无限次数调用