Lying可以讓你隨心所欲的加載第三方類,甚至是讓你擴展一個Lying的服務組件。
[TOC]
### 單類、多類加載
如果你有一個文件,里面有一個類或者多個類,那么你可以這樣加載到Lying:
~~~php
'classMap' => [
//完整類名 => 類文件絕對路徑
'PHPExcel' => ROOT . '/Excel/PHPExcel.php',
],
~~~
### PSR4加載
如果你有一個擴展類集,并且符合PSR4標準,那么你可以用PSR4標準來加載類:
~~~php
'psr-4' => [
//命名空間前綴 => 路徑
//路徑可以是一個數組,參見 http://www.php-fig.org/psr/psr-4/examples/
'module' => DIR_MODULE,
],
~~~
### PSR0加載
如果你手上有一個第三方類庫,但是很不幸它只符合PSR0規范,那么你就可以用PSR0來加載它:
~~~php
'psr-0' => [
//根目錄列表,參見 https://gist.github.com/jwage/221634
ROOT . '/extend'
],
~~~
### composer加載
如果你習慣使用composer,那么你可以用composer來加載你所需的擴展類:
~~~php
"require":{
"php": ">=5.5.0",
"ext-pdo": "*",
//你需要的擴展
}
~~~
定義完你需要加載的類后,執行`composer install`。到這邊,你會看到Lying目錄下多了一個`vendor`目錄,這個就是composer的目錄,現在就可以使用第三方類啦。
### 擴展服務類
如果你想像Lying的組件一樣,擴展一個自己的組件:
* 在框架根目錄創建一個文件夾,例如:`extend`。
* 定義一個服務類,文件名為`MyExt.php`并且放在`extend`目錄下,加載方式為PSR4:
~~~php
'psr-4' => [
'module' => DIR_MODULE,
'extend' => ROOT . '/extend'
],
~~~
* 定義服務類`MyExt`
~~~
<?php
namespace extend;
use lying\service\Service;
class MyExt extends Service
{
private $show;
protected $name;
protected $message;
protected function init()
{
$this->show = $this->name . $this->message;
}
public function show()
{
return $this->show;
}
}
~~~
這樣一個服務類就定義好了,現在畫一下重點:
> 1. 可配置屬性應設置為`protected`或者`public`,上面定義了兩個可配置屬性`name`和`message`,一個不可配置屬性`show`。
> 2. 上面定義了一個`protected`方法`init()`。這個方法就相當于服務類的構造函數了,因為你不能在服務類定義真正的構造函數,你可以在這個方法中做一些你想在構造函數做的事情。`init`方法不是必須的。
> 3. 上面定義了一個公開方法`show()`,這個就是你服務類可調用的方法了。
* 配置服務類
現在你可以在配置文件`service.php`中配置你的服務類:
~~~php
'me' => [
'class' => 'extend\MyExt',
'name' => 'lying',
'message' => 'hello',
],
~~~
如上:配置服務類`extend\MyExt`的ID為`me`,并且設置兩個可配置屬性`name`和`message`。
* 使用服務類
~~~php
$m = \Lying::$maker->get('me');
//或者
$m = \Lying::$maker->me;
//或者
$m = \Lying::$maker->me();
//調用方法
echo $m->show();
~~~
你可以看到輸出了`lyinghello`。
> 到此為止,一個自定義的服務類就完成啦。
- 序言
- 更新日志
- 安裝
- 規范
- 常量
- 配置
- 自動加載
- MVC
- 模塊
- 控制器
- 模型
- 視圖
- php原生模板
- 模板引擎
- 變量輸出
- 模板注釋
- 模板繼承
- 模板引用
- 流程控制
- 原樣輸出
- 服務組件
- Hook組件
- Request組件
- Router組件
- Cookie組件
- Encrypter組件
- Dispatch組件
- Response組件
- View組件
- Session組件
- Helper組件
- 數據分頁
- 數據驗證
- Logger組件
- Cache組件
- Redis組件
- Connection組件
- 執行sql語句
- 查詢生成器
- 查詢方法詳解
- Schema
- Captcha組件
- CLI
- CLI工具
- 事件
- 類事件
- 實例事件
- 全局事件
- 助手函數
- 擴展
- 異常
- 部署
- Apache
- Nginx
- IIS
- 虛擬主機