作者:拍友2502893767 | 来源:互联网 | 2020-09-12 08:31
有了swoole这样强大的扩展之后,越来越多的框架都是基于swoole被开发出来,Swoft就是其中一款不错的PHP框架,本文将与大家详细讨论微服务协程框架Swoft的使用方法。
https://www.swoft.org/documents/v2/dev-guide/dev-note/
Swoft框架 安装
安装环境要求:
1. gcc版本大于等于4.8。
2. PHP版本大于7.1。
3. Composer包管理工具。
4. 安装Redis异步客户端hiredis,在最新版本的Swoole4.2.6之后已经内置了,不需要安装。
5. Swoole扩展,这个是必须的。
6.链接迭代器依赖库pcre。
7. Swoole需要开启协程和异步redis。
安装
git clone https://github.com/swoft-cloud/swoft
cd swoft
composer install
cp .env.example .env #编辑 .env 文件,根据需要调整相关环境配置 如果出现下面错误说明redis扩展没有,因为swoft需要redis扩展。
root@880c142615c3:/var/www/swoft# tree -L 2
.
|-- CONTRIBUTING.md
|-- Dockerfile
|-- LICENSE
|-- README.md
|-- README.zh-CN.md
|-- app #应用目录
| |-- Annotation #定义注解相关目录| |-- Application.php
| |-- Aspect
| |-- AutoLoader.php
| |-- Common
| |-- Console
| |-- Exception
| |-- Helper #助手函数目录
| |-- Http
| |-- Listener #事件监听器目录| |-- Migration
| |-- Model #模型、逻辑等代码目录| |-- Process
| |-- Rpc #RPC服务代码目录| |-- Task #任务投递管理目录,这里可以做异步任务或者定时器的工作
| |-- Tcp
| |-- Validator
| |-- WebSocket #WebSocket服务代码目录| `-- bean.php
|-- bin
| |-- bootstrap.php
| `-- swoft #Swoft入口文件|-- composer.cn.json
|-- composer.json
|-- composer.lock
|-- config
| |-- base.php
| |-- db.php
| `-- dev
|-- database
| |-- AutoLoader.php
| `-- Migration
|-- dev.composer.json
|-- docker-compose.yml
|-- phpstan.neon.dist
|-- phpunit.xml
|-- public
| |-- favicon.ico
| `-- image
|-- resource #应用资源目录| |-- language
| `-- views
|-- runtime #临时文件目录(日志、上传文件、文件缓存等)| |-- logs
| |-- sessions
| |-- swoft.command
| `-- swoft.pid
|-- test #单元测试目录
| |-- apitest
| |-- bootstrap.php
| |-- run.php
| |-- testing
| `-- unit
`-- vendor
|-- autoload.php
|-- bin
|-- composer
|-- doctrine
|-- monolog
|-- myclabs
|-- nikic
|-- phar-io
|-- php-di
|-- phpdocumentor
|-- phpoption
|-- phpspec
|-- phpunit
|-- psr
|-- sebastian
|-- swoft
|-- symfony
|-- text
|-- theseer
|-- toolkit
|-- vlucas
`-- webmozart namespace App\Tcp\Controller;
use App\Tcp\Middleware\DemoMiddleware;
use Swoft\Tcp\Server\Annotation\Mapping\TcpController;
use Swoft\Tcp\Server\Annotation\Mapping\TcpMapping;
use Swoft\Tcp\Server\Request;
use Swoft\Tcp\Server\Response;
use function strrev;
/**
* Class DemoController
*
* @TcpController(middlewares={DemoMiddleware::class}) #这个就是注解
*/
class DemoController
{
/**
* @TcpMapping("list", root=true)
* @param Response $response
*/
public function list(Response $response): void
{
$response->setData('[list]allow command: list, echo, demo.echo');
} 注解是什么呢?有什么作用呢?
注解其实是通过反射把注释当成代码的一部分,PHP可以通过ReflectionClass来获取一个类的信息,从而了解类里的信息,比如获取类中的所有方法、成员变量,并包括私有方法等,并根据这些信息实现一些操作。像很多PHP框架,比如laravel框架就利用PHP的反射机制来实现依赖注入。
其实注解是配置的另一种方式,这里注解就可以起到一个配置作用。比如定义路由,定义配置定时任务,权限控制等。
在Swoft中要是使用注解,需引入相关注解(Annotation)类,且必须以 /**
开始并以 */
结束,否则会导致无法解析!
Aop切面编程
Aop介绍
1. Aspect(切面):通常是一个类,里面可以定义切入点和通知。
2. JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用。
3. Advice(通知):Aop在特定的切入点执行的增强处理,有before,after,afterReturning,afterThrowing,around。
4. Pointcut(切入点):就是嗲有通知的连接点,在程序中主要体现为书写切入点表达式。
Swoft新版的Aop设计建立在PHP Parser上面。
PHP-Parser的项目主页是:https://github.com/nikic/PHP-Parser
推荐教程:《php教程》
以上就是PHP之微服务协程框架Swoft的详细内容,更多请关注 第一PHP社区 其它相关文章!