lobtao/tp5helper
Composer 安装命令:
composer require lobtao/tp5helper
包简介
thinkphp5 helper
README 文档
README
composer require lobtao/tp5helper
Curl.php 使用示例
use lobtao\tp5helper\Curl; $curl = new Curl(); //get http://example.com/ $response = $curl->get('http://example.com/'); if ($curl->errorCode === null) { echo $response; } else { // List of curl error codes here https://curl.haxx.se/libcurl/c/libcurl-errors.html switch ($curl->errorCode) { case 6: //host unknown example break; } }
// GET request with GET params // http://example.com/?key=value&scondKey=secondValue $curl = new Curl(); $response = $curl->setGetParams([ 'key' => 'value', 'secondKey' => 'secondValue' ]) ->get('http://example.com/');
// POST URL form-urlencoded $curl = new Curl(); $response = $curl->setPostParams([ 'key' => 'value', 'secondKey' => 'secondValue' ]) ->post('http://example.com/');
// POST with special headers $curl = new Curl(); $response = $curl->setPostParams([ 'key' => 'value', 'secondKey' => 'secondValue' ]) ->setHeaders([ 'Custom-Header' => 'user-b' ]) ->post('http://example.com/');
// POST JSON with body string & special headers $curl = new Curl(); $params = [ 'key' => 'value', 'secondKey' => 'secondValue' ]; $response = $curl->setRequestBody(json_encode($params)) ->setHeaders([ 'Content-Type' => 'application/json', 'Content-Length' => strlen(json_encode($params)) ]) ->post('http://example.com/');
// Avanced POST request with curl options & error handling $curl = new Curl(); $params = [ 'key' => 'value', 'secondKey' => 'secondValue' ]; $response = $curl->setRequestBody(json_encode($params)) ->setOption(CURLOPT_ENCODING, 'gzip') ->post('http://example.com/'); // List of status codes here http://en.wikipedia.org/wiki/List_of_HTTP_status_codes switch ($curl->responseCode) { case 'timeout': //timeout error logic here break; case 200: //success logic here break; case 404: //404 Error logic here break; } //list response headers var_dump($curl->responseHeaders);
RpcController.php 远程调用示例
ServiceController.php 服务控制器类
namespace app\index\controller; use lobtao\tp5helper\RpcController; use lobtao\tp5helper\RpcException; use think\Session; class ServiceController extends RpcController { function index() { return $this->handle('app\\service\\', function ($func, $params) { if (in_array(strtolower($func), ['user_login', 'user_logout'])) //登录方法不判断 return; if(!Session::get('user')){ throw new RpcException('尚未登录,不能访问'); } }); } }
UserService.php 服务类
namespace app\service; use think\Session; class UserService { function login($params){ Session::set('user', ['name'=>'远思']); } function logout($params){ Session::delete('user'); Session::destroy(); } function test(){ return '恭喜,你可以正常访问此方法'; } }
web端js调用示例
js端调用server.js库 依赖jquery.js
function client(baseUrl){ var client = { ajax: function (func, args, dataType) { var _this = this; var def = $.Deferred(); $.ajax({ type: "POST", url: baseUrl, data: {f: func, p: JSON.stringify(args)}, success: function (ret) { if (ret.retid == 0) { if (_this.onerror) { _this.onerror(ret.retmsg) } def.reject(ret.retmsg); } else { def.resolve(ret.data); } }, dataType: dataType }); return def; }, onerror: null, invoke: function (func, args, callback) { var promise = this.ajax(func, args, 'json'); if (callback) { promise.then(callback); } return promise; }, invokep: function (func, args, callback) { var promise = this.ajax(func, args, 'jsonp'); if (callback) { promise.then(callback); } return promise; } }; //全局异常处理 client.onerror = function (err) { alert(err); }; return client; }
js调用后端PHP服务类示例,先引入server.js
var client = client("http://localhost/testpro/index.php/index/service/index");//服务控制类地址 client.invoke('test_hello',[]).then(function(ret){ console.log(ret) }); client.invoke('user_login',[{ name:'用户名', password:'密码', }]).then(function(ret){ console.log(ret); }); client.invoke('user_test',[]).then(function(ret){ console.log(ret); }); client.invoke('user_logout',[{ name:'用户名', }]).then(function(ret){ console.log(ret); });
小程序调用示例
小程序调用 client.js 库
var serviceUrl = 'http://localhost/testpro/index.php/index/service/index';//服务控制类地址 function invoke(func, args, callback) { wx.request({ url: serviceUrl, data: { f: func, p: JSON.stringify(args) }, header: { "Content-Type": "application/x-www-form-urlencoded" }, dataType: 'json', method: 'POST', success: function (ret) { if (ret.data.retid == 1) { callback(ret.data.data); } else { wx.showModal({ showCancel: false, confirmColor: '#ea644a', content: typeof ret.data == 'string' ? ret.data : ret.data.retmsg, }); } }, complete:function(){ }, }) } module.exports = { invoke: invoke }
调用示例
var client = require('client.js'); client.invoke('user_login', [{ name:'用户名', password:'密码', }], function (ret) { console.log(ret); }); client.invoke('user_test', [], function (ret) { console.log(ret); }); client.invoke('user_logout', [{ name:'用户名', }], function (ret) { console.log(ret); });
Workerman 提供Rpc服务
ServiceController.php 服务控制器类
/** * Created by lobtao. * User: Administrator * Date: 2017-7-26 * Time: 16:51 * workerman的性能是apache的239倍 */ namespace app\admin\command; use lobtao\tp5helper\WorkerRpc; use think\console\Command; use think\console\Input; use think\console\Output; use Workerman\Connection\TcpConnection; use Workerman\Protocols\Http; use Workerman\Worker; class Api extends Command { protected function configure() { $this->setName('api') ->addArgument('args') ->addArgument('daemon') ->setDescription('api接口调用'); } protected function execute(Input $input, Output $output) { global $argv; array_shift($argv);//弹出第一个参数 if ($argv[1] == 'startd') { $argv[1] = 'start'; $argv[2] = '-d'; } $worker->onMessage = function (TcpConnection $con, $data) { if($data['server']['REQUEST_URI'] == '/favicon.ico') return;//忽略favicon.ico请求 Http::header('Access-Control-Allow-Origin:*');//允许前端跨域请求 $rpc = new WorkerRpc(); $rpc->handle($con, 'app\\service\\'); }; Worker::runAll(); } }
./think api start //启动调试模式
./think api startd //启动后台运行
lobtao/tp5helper 适用场景与选型建议
lobtao/tp5helper 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.81k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2017 年 04 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「restful」 「extension」 「helper」 「curl」 「thinkphp5」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 lobtao/tp5helper 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 lobtao/tp5helper 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 lobtao/tp5helper 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A custom URL rule class for Yii 2 which allows to create translated URL rules
Datetime helpers for timezone handling
The Yii2 extension uses jQuery jquery.carousel-1.1.min.js and makes image carousel from php array of structure defined.
TYPO3 CMS extension to create gallery content element with preset crop ratios and pagination
UI Kit 3 Extension for Yii2
Adds more BBCode
统计信息
- 总下载量: 2.81k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 8
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-04-19