标签 TP5 下的文章
Thinkphp5集成小米推送
作者:项羽 •
一、从小米开发者官网下载推送DEMO
二、解压DEMO,然后有以下文件
sdk----->android_example.php
----->autoload.php
----->ios_example.php
----->xmpush[核心文件]
复制SDK文件夹,至:ThinkPHPLibraryVendor
修改所有xmpush文件夹内的类的命名空间为: xmpush
然后再SDK文件夹内,新建一个push类 代码如下
<?php
/**
* Created by PhpStorm.
* User: wudi
* Date: 2019/3/4
* Time: 9:05
*/
namespace sdk;
use xmpush\Builder;
use xmpush\Sender;
use xmpush\Constants;
use xmpush\TargetedMessage;
use xmpush\IOSBuilder;
use xmpush\Stats;
use xmpush\Tracer;
include_once(dirname(__FILE__) . '/autoload.php');
class push
{
/*$style int 推送方式,1,安卓,2,苹果,3,安卓推送打开应用内的某个activity
* $aliasList array,格式为array("1,2,3,4,5,6"),也就是推送的目标别名
* $titlse String 推送标题
* $conent String 推送内容
* $payload String 暂时不用
* 注:因为写的比较仓促,可以将 3 内的跳转到指定activity的参数放在参数列表,以方便调用
* 也可以将if else 改为switch,此类为举例,完全可以自己构思这个类,我只是举个例子
*/
public function pushs($style,$aliasList,$titlse,$conent,$payload="")
{
$id = (int)$style;
$desc = $conent;
if($id == 1){
$secret = '填写参数';
$package = '填写参数';
Constants::setPackage($package);
Constants::setSecret($secret);
$title = $titlse;
$sender = new Sender();
$message = new Builder();
$message->title($title);
$message->description($desc);
$message->passThrough(0);
$message->payload($payload); // 对于预定义点击行为,payload会通过点击进 入的界面的intent中的extra字段获取,而不会调用到onReceiveMessage方法。
$message->extra(Builder::notifyEffect, 1); // 此处设置预定义点击行为,1 为打开app
$message->extra(Builder::notifyForeground, 1);
$message->notifyId(0);
$message->build();
$targetMessage2 = new TargetedMessage();
$targetMessage2->setTarget('tag', TargetedMessage::TARGET_TYPE_ALIAS );
$targetMessage2->setMessage($message);
$targetMessageList = array( $targetMessage2);
}else if($id == 2){
$secret = '填写参数';
$bundleId = '填写参数';
Constants::setBundleId($bundleId);
Constants::setSecret($secret);
$message = new IOSBuilder();
$message->description($desc);
$message->soundUrl('default');
$message->badge('4');
$message->extra('payload', $payload);
$message->build();
$sender = new Sender();
}else if($id == 3){
$secret = '填写参数';
$package = '填写参数';
Constants::setPackage($package);
Constants::setSecret($secret);
$title = $titlse;
$sender = new Sender();
$message = new Builder();
$message->title($title);
$message->description($desc);
$message->passThrough(0);
$message->payload($payload);
// 对于预定义点击行为,payload会通过点击进 入的界面的intent中的extra字段获取,而不会调用到onReceiveMessage方法。
$message->extra(Builder::notifyEffect, 2); // 此处设置预定义点击行为,1 为打开app,2为打开应用内的activity
$message->extra(Builder::notifyForeground, 1);
$message->extra(Builder::intentUri, "intent:#Intent;component=包名/ 完整的activity路径;end"); //打开应用内activity必须添加此参数
$message->notifyId(0);
$message->build();
$targetMessage2 = new TargetedMessage();
$targetMessage2->setTarget('tag', TargetedMessage::TARGET_TYPE_ALIAS );
$targetMessage2->setMessage($message);
$targetMessageList = array( $targetMessage2);
}
print_r($sender->sendToAliases($message,$aliasList)->getRaw());
}
}
然后呢,在方法内调用:
vendor('sdk.push');
$push = new \sdk\push();
$user = array("1,2");
$push->pushs(3,$user,"在游戏中消费100元","获得了奖励注意查收");
//至此,融合完成,调用即可进行推送,注意配置文件的写入
TP5小知识点锦集(长期更新)
作者:项羽 •
分页查询不丢失条件
Db::name("table")->where("XXXX")->paginate(10,false,['query'=>request()->param()]);
获取最新插入的id
$userId = Db::name('user')->getLastInsID();
thinkphp tp5 模板 引擎 字符串 截取 函数 省略 显示
{$d['title']|mb_substr=0,10,'utf-8'}
模版 时间截转换
{$time|date='Y-m-d H:i:s',###}
测试数据打印
error_log(time().'显示设置'.print_r(array(),true),3,dirname(__FILE__).'/error_log.php');
TP5 url链接(带参数)的写法
window.location.href="{:url('Index/index')}>"+"/ID/"+ID; //这样可以生成,但url模式改变则不能用
window.location.href="{:url('Index/index','ID=" + ID+ "')}" //解析不成功。
window.location.href="{:url('Index/detail',['id' => "+iD+"])}";//解析不成功
window.location.href='{:url("Index/detail")}?id='+ iD ;//解析成功
参考: 参考URL
php 正则替换图片url内容(这里是将URL路径改写了)
$suffix="http://q8adminx.keai8l.com";
$pregRule = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
$content = preg_replace($pregRule, '<img src="'.$suffix.'${1}" data-filename="filename"', $articleinfo['content']);
$articleinfo['content']=$content;
tp5 自定义命令脚本执行在宝塔
cd /www/wwwroot/xw.njagdl.com/xw/
php think task_wxcatch_all_history
一旦宝塔后台显示Inode占用比较大的时候
删除 /root/.anyproxy/cache
以及tp5的runtime里面的目录
TP5配置静态资源访问路径
作者:项羽 •
在这个地方添加你需要的配置路径
thinkphp/library/think/View.php
$baseReplace = [
'__ROOT__' => $root,
'__URL__' => $base . '/' . $request->module() . '/' . Loader::parseName($request->controller()),
'__STATIC__' => $root . '/static',
'__CSS__' => $root . '/static/css',
'__JS__' => $root . '/static/js',
];
在这个地方添加上面已经添加好的配置后就可以直接使用了
application/config.php
// 视图输出字符串内容替换,留空则会自动进行计算
'view_replace_str' => [
'__PUBLIC__' => '',
'__ROOT__' => '',
'__CDN__' => '',
'__CSS__' => '/static/css',
'__JS__' => '/static/js',
'__STATIC__' => '/static',
],
TP5控制器继承的问题
作者:项羽 •
凡是遇到问题不要想当然,以前就没出错的的代码不一定就没错,只是没到时候而已
回归正题,下面是tp5控制器继承的源码
//主控制器
<?php
namespace app\api\Controller;
use think\Controller;
use think\Request;
class Com extends Controller
{
}
//从控制器
<?php
namespace app\api\Controller;
use app\api\controller\Com;
use think\Request;
use app\api\model\hscontentModel;
class Search extends Com
{
}