H5小游戏模板化方案 会展行业 (资源替换,分数记录,次数限制,排行榜) v20190321
流程 看具体游戏有哪些资源可以被替换 确定后,后端出模板配置 后端创建一个测试游戏的配置,给出游戏id 按以下步骤接入 把发布后的代码给我,充分保证你的劳动成果不被窃取 引入sdk如果是白鹭5.0需要在发布后引入 1<script src="//h5.iguojin.com/template/gamesdk/hudongsdk.js"></script> 实例化sdk1234// ts声明,防止报错declare var HudongSdkvar sdksdk = HudongSdk.getInstance() 替换资源以白鹭为例,可以在 1await RES.loadConfig("resource/default.res.json", "resource/"); 后面添加如下代码,并记录值,在需要时可以直接从里获取,而不用默认的值可以检测url上的gameid参数,正式交付客户都会加上这个参数 123await sdk.loadConfig().then((res)=>{ ...
ajax 中 request payload 和 form data 区别
在使用swoft时候发现ajax如果设置header 1xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 后端可以收到如果不设置,默认header是 1Content-Type:text/plain;charset=UTF-8 后端就接受不到参数
mysql 统计重复记录数量
123456SELECT COUNT(*) as total FROM ( SELECT count(openid) as t FROM user GROUP BY `openid` HAVING t > 1 limit 1000) as a 如果下面写法会很慢 123456SELECT COUNT(*) as total FROM form_user WHERE id IN( SELECT count(id) FROM form_user GROUP BY `openid` HAVING COUNT(openid) > 1 limit 1000)
swoft 控制器参数注入和 从 容器获取的不同点
经过测试控制器参数注入大致上和自己直接new没有区别,被实例化的类中的,注解内容没有起作用 只有通过类似 1BeanFactory::getBean("gameConfig"); 这样获取时候,用注解初始化的值才会有作用 123456789101112131415use Swoft\Bean\Annotation\Bean;use Swoft\Bean\Annotation\Scope;use Swoft\Bean\Annotation\Value;/** * 注入类 * @Bean(name="gameConfig",scope=Scope::SINGLETON) *//** * 注入属性值 * @Value(name="${config.loginkey}", env="${PFILE}") * @var string */public $val;
swoft 容器 注入 ioc 补充
在使用swoft注入时候,发现一些文档没有说明的条件 注解类Bean注入没有给定名字例如 12345/** * CacheRedisPoolConfig * @Bean() */class CacheRedisPoolConfig extends RedisPoolConfig{} 在使用时需要给定var注释也不能写名字 12345/** * @Inject() * @var CacheRedisPoolConfig */public $poolConfig; 注解时给定了名字 1234/** * CacheRedisPoolConfig * @Bean("CacheRedisPoolConfig") */ 使用时候 1234/** * @Inject("CacheRedisPoolConfig") * @var CacheRedisPoolConfig */
swoft获取cookie和设置cookie
文档中没有介绍但经过分析,用法如下 获取12request()->cookie()request()->cookie("cookiename") 设置12use Swoft\Http\Message\Cookie\Cookie;$response->withCookie(new Cookie($key, $value, $expire, $path, $domain, $secure, $httponly)); 补充所有的方法封装在以下文件中swoft\http-message\src\Server\Request.phpswoft\http-message\src\Server\Concerns\InteractsWithInput.php 12Swoft\Http\Message\Server\RequestSwoft\Http\Message\Server\Concerns\InteractsWithInput
swoft 中间件 传递数据 request
经过查看源码 1request() 方法会获取当前请求上下文,并在请求结束时销毁,所以可以安全使用他传递数据例如中间件获取用户信息结束后可以 123$req = request();$req->user = $udata;$req->openid = $openid;
swoft 支持 OPTIONS 请求
如果路由中不明确设置,swoft默认只使用了post get请求只要在控制器中明确声明OPTIONS请求即可
swoft 中间件 基本使用
swoft中间件在请求到达控制器之前拦截请求,主要有两种写法 1. 不合法请求12// 直接返回response对象return response() 2. 合法请求12$response = $handler->handle($request);return $response;
easywechat4 开放平台 第三方平台 调用 公众号 jssdk 接口
从微信官方文档中,我们可以知道做这个事情需要一个authorizer_access_token,获取这个需要三个参数component_appid authorizer_appid authorizer_refresh_token默认情况下,你从sdk里传1个appid参数就好了,但是这还不够实际上,sdk没有维护authorizer_refresh_token,这个参数是在用户同意授权时,一起发给我们的,我们需要自己维护,并在调用时传到sdk大致上形如: 12$refresh = (new Component)->getRefreshToken($appid);$app = $open->officialAccount($appid, $refresh);