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
- 虚拟主机