Download the PHP package thefair/thefairlib without Composer

On this page you can find all versions of the php package thefair/thefairlib. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package thefairlib

Rpc Service 搭建说明文档

最新文档说明:https://github.com/thefair-net/thefairlib

[TOC]

安装

仅可运行于 Linux 和 Mac 环境下,Windows 下也可以通过 Docker for Windows 来作为运行环境或虚拟机,通常来说 Mac 环境下,推荐本地环境部署

composer create-project lmz/xxx-skeleton test_service

复制项目中的 .env.example.env 本地配置文件 .env

安装包 composer up

生产环境composer dump-autoload -o

项目文件结构

配置文件结构

开发必读

不能通过全局变量获取属性参数

PHP-FPM 下可以通过全局变量获取到请求的参数,服务器的参数等,在 HyperfSwoole 内,都 无法 通过 $_GET/$_POST/$_REQUEST/$_SESSION/$_COOKIE/$_SERVER$_开头的变量获取到任何属性参数。

通过容器获取的类都是单例

通过依赖注入容器获取的都是进程内持久化的,是多个协程共享的,所以不能包含任何的请求唯一的数据或协程唯一的数据,这类型的数据都通过协程上下文去处理,具体请仔细阅读 依赖注入协程 章节。

框架生命周期

Hyperf 是运行于 Swoole 之上的,想要理解透彻 Hyperf 的生命周期,那么理解 Swoole 的生命周期也至关重要。 Hyperf 的命令管理默认由 symfony/console 提供支持(如果您希望更换该组件您也可以通过改变 skeleton 的入口文件更换成您希望使用的组件),在执行 php bin/hyperf.php start 后,将由 Hyperf\Server\Command\StartServer 命令类接管,并根据配置文件 config/autoload/server.php 内定义的 Server 逐个启动。 关于依赖注入容器的初始化工作,我们并没有由组件来实现,因为一旦交由组件来实现,这个耦合就会非常的明显,所以在默认的情况下,是由入口文件来加载 config/container.php 来实现的。

禁止注入 model,实现单例方法

可以使用 UserInfoModel::xxxx 方法,或makenew

请求与协程生命周期

Swoole 在处理每个连接时,会默认创建一个协程去处理,主要体现在 onRequest、onReceive、onConnect 事件,所以可以理解为每个请求都是一个协程,由于创建协程也是个常规操作,所以一个请求协程里面可能会包含很多个协程,同一个进程内协程之间是内存共享的,但调度顺序是非顺序的,且协程间本质上是相互独立的没有父子关系,所以对每个协程的状态处理都需要通过 协程上下文 来管理。

路由

路由必须是三级,/m/c/a

http 服务使用 @AutoController Rpc 服务使用 @RpcService

* @RpcService(name="v2/test", protocol="jsonrpc-tcp-length-check", server="json-rpc")

自动生成 Request 文件

参数过滤

路由 /v2/test/get_test 对应 \App\Controller\V2\Test::getTest 方法

必须新建一个对应的 app/Request/V2/Test/GetTest.php 文件

生成命令:php bin/hyperf.php gen:request V2/Test/GetTest

input 可以获得GET|POST参数,相当于$_REQUEST

app/Request/V2/Test/GetTest.php 源码

新增验证规则

mobile 国内手机号验证

'phone' => 'required|mobile'

str或s 对字符串进行编码 'phone' => 'required|str' 'phone' => 'required|s'

i 对整数值进行强转,如果直接使用参数取值为字符串类型,主要解决当declare(strict_types=1);时,会报ust be of the type int, string given 使用方法'age' => 'required|i'

string、integer、int 被系统底层占用

http 服务

'phone' => 'required|s|post'

'phone' => 'required|s|get' // get 验证直接使用empty判断,不能传0、空、false

cookie

Model 模型

约束:只做数据库、缓存操作,不写业务逻辑,业务推荐写在 service 里面

分表自动创建模型

-w790

shardingId 方法

model 类中重写表名,原方法$this->db()->table($this->_getTableName($uid))

全局使用方式

分页

行数大于 50 会抛出异常。(无法直接修改,改动太大)

demo 方法

返回结果

全局 uuid

getUuid()

sql 注入

demo 用例

上面这条 sql 可以使用参数过滤做来,如强转 int

上面这条 sql 传入的是一个字符串,如果用参数过滤很容易误杀,必须使用预处理查询

系统底层会监控 sql 语句,发现原生 sql 语法,自动报警

Redis 使用

getPrefix 缓存前缀

getPrefix('Cache', 'hash')

全局用法

zset 全局分页

新增穿透缓存注解

异常

code 必须为 int,还不是 "0"

普通异常

code 异常

empty 异常

访问 rpc 服务

Elasticsearch 搜索

统一日志处理

全局方法:TheFairLib\Library\Logger::get()

level 日志等级

  1. DEBUG (100): 详细的debug信息。
  2. INFO (200): 关键事件。
  3. NOTICE (250): 普通但是重要的事件。
  4. WARNING (300): 出现非错误的异常。
  5. ERROR (400): 运行时错误,但是不需要立刻处理。
  6. CRITICA (500): 严重错误。
  7. EMERGENCY (600): 系统不可用。

其他日志处理

hyperf service 服务之间的访问

配置文件 config/autoload/services.php

新建 RpcClient

访问

文档同步

composer doc

使用 tips:
1.注意:默认会在对应的项目下生成与各个接口 Doc 注解中填写的 tag 字段的第一个值为准,

比如在 controller 下定义:

那么会在项目下创建一个 user 的分类:

image-20210304170520601

2.默认只会新增不存在的接口(以接口的 scheme 做唯一识别,如 /v1/test/test ),所以当你做了接口改动,需要覆盖现有接口文档时,你可以:
  1. 到文档中删除接口,然后重新在本地执行 composer gen_doc

  2. 或者在 config/autoload/docs.php 的 force_update 中添加配置,值为你要选择覆盖的接口 path,例如:

    那么每次执行文档命令,都会以你本地最新的结果为准同步到在线文档。

  3. 接口访问后的 response 文件默认是不覆盖的,可以在 runtime 下删除对应的 .json 文件来更新 response 结果,也可以在 docs.refresh_response_file 中加入配置项,保持 response 文件持续更新

线上服务启动

systemd 管理

用于 centos 7

在项目下新建:bin/push.service

使用ln -s /home/xxx/www/push_service/bin/push.service /usr/lib/systemd/system && systemctl daemon-reload && systemctl enable push.service

单元测试

格式化项目代码

静态语法检测

其他问题

rpc或http 返回结果 500404,请重试

常用方法,可全局调用

-w992


All versions of thefairlib with dependencies

PHP Build Version
Package Version
Requires php Version >=7.3
ext-swoole Version >=4.5
ext-json Version *
ext-redis Version *
ext-posix Version *
hyperf/cache Version ~2.1.0
hyperf/command Version ~2.1.0
hyperf/config Version ~2.1.0
hyperf/contract Version ~2.1.0
hyperf/database Version ~2.1.0
hyperf/db-connection Version ~2.1.0
hyperf/devtool Version ~2.1.0
hyperf/di Version ~2.1.0
hyperf/dispatcher Version ~2.1.0
hyperf/event Version ~2.1.0
hyperf/exception-handler Version ~2.1.0
hyperf/framework Version ~2.1.0
hyperf/guzzle Version ~2.1.0
hyperf/http-server Version ~2.1.0
hyperf/logger Version ~2.1.0
hyperf/memory Version ~2.1.0
hyperf/paginator Version ~2.1.0
hyperf/pool Version ~2.1.0
hyperf/process Version ~2.1.0
hyperf/redis Version ~2.1.0
hyperf/utils Version ~2.1.0
hyperf/json-rpc Version ~2.1.0
hyperf/rpc Version ~2.1.0
hyperf/rpc-client Version ~2.1.0
hyperf/rpc-server Version ~2.1.0
hyperf/constants Version ~2.1.0
hyperf/async-queue Version ~2.1.0
hyperf/model-cache Version ~2.1.0
hyperf/task Version ~2.1.0
hyperf/translation Version ~2.1.0
hyperf/validation Version ~2.1.0
hyperf/rate-limit Version ~2.1.0
hyperf/retry Version ~2.1.0
hyperf/crontab Version ~2.1.0
hyperf/filesystem Version ~2.1.0
hyperf/signal Version ~2.1.0
hyperf/service-governance Version ~2.1.0
hyperf/nacos Version ~2.1.0
yurunsoft/phpmailer-swoole Version ~1.0
xxtime/flysystem-aliyun-oss Version ^1.5
overtrue/flysystem-qiniu Version ~1.0
lmz/hyperf-config Version ~2.1.0
emojione/emojione Version ^4.5
overtrue/wechat Version ~4.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package thefair/thefairlib contains the following files

Loading the files please wait ....