## 自動加載
```
$composer dumpautoload -o
```
會生成:`vendor/composer/autoload_namespaces.php` 文件,方便自動加載。
## 擴展類庫
框架根目錄下的`extends`目錄稱為`擴展類庫目錄`,用于存放一些自定義的類,只要符合自動加載的規范(命名空間、類名、文件名),就可以直接使用。
### 1.`extend`目錄
假設在`extend`目錄下創建一個`Upload.php`文件,不需要添加命名空間。
~~~
<?php
class Upload
{
}
~~~
此時可以在控制器中直接使用`\Upload`類。
### 2\. 帶層級的類
假設在`extend/file`目錄下創建一個`Upload.php`文件,此時需要添加命名空間。
~~~
<?php
namespace file;
class Upload
{
}
~~~
此時可以在控制器中直接使用`\file\Upload`類。
## 公共函數
在公共函數文件中定義的函數在任何地方可以用,也可以理解為自定義助手函數
> 公共函數文件位置
* 全局公共函數文件:在所有應用中都可以使用
~~~
app/common.php
~~~
* 應用公共函數文件
~~~
app/應用名稱/common.php
// index 應用的公告函數文件 只能在index應用下使用
app/index/common.php
~~~
## 常用的助手函數
### input
> input( ) 助手函數語法格式
~~~
input('請求類型.]參數名[/變量修飾符]', '默認值', '過濾方法');
~~~
> 獲取某個請求類型的所有請求參數
~~~
// 獲取get請求類型的所有參數及其參數值
// 返回值:一維數組
// 鍵名:參數名,鍵值:參數值
$array = input('get.');
// 獲取post請求類型的所有參數及其參數值
// 返回值:一維數組
// 鍵名:參數名,鍵值:參數值
$array = input('post.');
// 獲取全部變量
$array = input('param.');
~~~
> 獲取某個請求參數的值
~~~
// 獲取任何請求類型的name參數值
$name = input('name');
//或者
$array = input('param.name');
~~~
> 變量修飾符
~~~
// 獲取指定參數的值并將轉為數字
$id = input('id/d');
~~~
> 參數默認值
~~~
// 獲取指定參數的值 沒有獲取到將返回默認值
// 示例:如果id參數不存在,返回 666
$id = input('id', 1);
~~~
> 過濾方法
~~~
// 獲取指定參數的值再經過intval函數進行過濾
$id = input('id','', 'intval');
~~~
### 構造url
```
// /admin/index/index.html
echo url('admin/index/index') . PHP_EOL;
// /admin/index/index.html?id=10
echo url('admin/index/index', ['id' => 10]) . PHP_EOL;
// /admin/index/index.html?id=10
echo url('index/index', ['id' => 10]) . PHP_EOL;
// /index/index.html?id=10
echo url('/index/index', ['id' => 10]) . PHP_EOL;
```
### redirect
> redirect 重定向助手函數
~~~
public function index()
{
// 重定向之前,會檢查可用性
return redirect('index/login');
}
~~~
### 調用 `view` 視圖
如果使用`view`助手函數,格式如下:
~~~
return view('index', [
'name' => 'foo bar',
'email' => 'foo@bar.com'
]);
~~~
等同于:
~~~
// 或者批量賦值
return View::fetch('index', [
'name' => 'foo bar',
'email' => 'foo@bar.com'
]);
~~~
或:
~~~
View::assign('name','foo bar');
View::assign('email','foo@bar.com);
return View::fetch('index');
~~~
### 獲取本地的環境變量`env`
獲取本地的環境變量,常常在配置文件中使用。
```
//讀取 `.env` 文件的配置,如果不存在,用 `root` 代替
Env::get('database.username', 'root'),
//使用助手函數
env('APP_DEBUG');
env('APP.Default_timezone');
```
- 第1章 搭建ThinkPHP的開發環境
- 第2章 配置ThinkPHP
- 第3章 必要的基礎知識(basic)
- 第4章 MVC開發模式
- 第5章 控制器(controller)
- 第6章 數據庫(database)
- 第7章 模型(model)
- 第8章 模型關聯(relation)
- 第9章 視圖(view)
- 第10章 Session
- 第11章 Cookie
- 第12章 緩存(cache)
- 第13章 上傳(upload)
- 第14章 驗證器(validate)
- 第15章 驗證碼(captcha)
- 第16章 命令行(command)
- 第17章 服務器部署(deploy)
- 第18章 數據備份(backup)
- 第19章 數據同步(synchronization)
- 第20章 訂閱服務(subscribe)
- 附錄 1 PHP 易混淆知識點
- 附錄 2 助手函數
- 附錄 3 MySQL 規范
- 附錄 4 Redis 規范
- 附錄 5 office插件 phpoffice
- 附錄 6 拼音插件 pinyin
- 附錄 7 日期插件 datetime
- 附錄 8 消息插件 amqp
- 附錄 9 產品部署環境的搭建
- 附錄 10 PDF 等雜項處理