## 创建helpers.php
![](https://img.kancloud.cn/2d/ea/2deaa9004e54abebc1fe15bdeda19f24_878x252.png)
## index.php调用
![](https://img.kancloud.cn/b6/52/b6521ab6554b10f44288565fa4183633_622x324.png)
## 不规范
直接 `include` 虽然可以,但是没有遵守规范。
`composer` 提供了 `include` 文件方式。
## 遵守规范
编辑 `composer.json`。
```
"files": [
"app/helpers.php"
]
```
![](https://img.kancloud.cn/1f/18/1f18fa5ad63dbeaad5c594848d06acb4_975x456.png)
执行 `compoer dump-autoload`
## index.php调用
![](https://img.kancloud.cn/40/7d/407dc60427be2602a58c9d3c846077f0_666x269.png)
## 补充
将这些函数添加到helpers.php,方便以后写代码。
```
<?php
function hello()
{
return "world";
}
if (! function_exists('response')) {
function response()
{
return App::getContainer()->get('response')
return App::getContainer()->getApp('response'); // 这是错误的
}
}
function app($name = null)
{
if( $name) // 如果选择了具体实例
return App::getContainer()->get($name);
return App::getContainer();
}
function endView()
{
$time = microtime(true) - FRAME_START_TIME;
$memory = memory_get_usage() - FRAME_START_MEMORY;
echo '<br/><br/><br/><br/><br/><hr/>';
echo "运行时间: ". round($time * 1000,2) .'ms<br/>';
echo "消耗内存: ". round($memory / 1024 / 1024,2) . 'm';
}
function config($key = null)
{
if( $key)
return App::getContainer()->get('config')->get($key) ;
return App::getContainer()->get('config');
}
```
- 前言
- 基础篇
- 1. 第一步 创建框架目录结构
- 2. 引入composer自动加载
- 3. php自动加载 (解释篇)
- 4. 创建容器 注册树模式
- 5. 关于psr规范解释
- 6. 关于"容器" "契约" "依赖注入" (解释篇)
- 7. 添加函数文件helpers.php
- 8. 初始化请求(Request)
- 9. 响应 (Response)
- 10. 路由一 (路由组实现)
- 11. 路由二 (加入中间件)
- 12. 配置信息 (类似laravel)
- 13. 数据库连接 (多例模式)
- 14. 查询构造器 (query builder)
- MVC实现
- M 模型实现 (数据映射 + 原型 模式)
- C 控制器实现 + 控制器中间件
- V 视图实现 (Laravel Blade 引擎)
- V 视图切换成 ThinkPhp 模板 引擎)
- 其他轮子
- 日志
- 自定义异常 (异常托管)
- 单元测试 (phpunit)
- 替换成swoole的http服务器
- 协程上下文解决request问题
- qps测试
- 发布到packagist.org