# 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 无限次数调用