- 博客(113)
- 资源 (9)
- 收藏
- 关注
原创 【2022/02/04】thinkphp源码详细阅读(二)
thinkphp源码详细阅读(二)请求流程实例化 http ,注入 app 和设置 routePath执行 run 方法,首先初始化 initialize,初始化操作是在容器 app 中执行初始化执行的是,记录初始化标记、开始时间、开始内存、加载环境变量、配置文件后缀、设置调试模式、加载配置文件、加载语言配置、加载语言包、触发 AppInit 事件、设置时区、注册错误和异常处理、注册系统服务、启动系统服务其中加载配置文件执行的是,引入自定义函数、系统帮助函数、配置文件、注册事件、注册服务
2022-02-04 07:00:00 570
原创 【2022/02/02】thinkphp源码详细阅读(一)
thinkphp源码详细阅读(一)请求流程从入口 index.php 开始实例化 App ,我们看一下实例化所做的工作设置 thinkPath、 rootPath 、 appPath 、 runtimePath加载服务文件 provider.php ,具体如何实现,我们可以看绑定到容器实现部分代码provider.php 中返回的数组,代码的执行就是先循环,然后调用 bind 传入标识和类名称,类名称不是闭包,也不是类对象,所以进入 else然后根据别名获取真实的类名称绑定闭包和对
2022-02-03 07:00:00 1154
原创 【2022/02/02】thinkphp源码无差别阅读(三十五)
thinkphp源码无差别阅读(三十五)ORM阅读model/relation/OneToOne.php属性:joinType、bindAttr、relation设置join类型:joinType预载于关联查询:eagerly预载于关联查询:eagerlySet预载于关联查询:eagerlyOne预载于关联查询:eagerlyResultSet预载于关联查询:eagerlyResult保存:save绑定属性:bind获取绑定属性:getBindAttr预查询拼装:match绑
2022-02-02 07:00:00 499
原创 【2022/01/31】thinkphp源码无差别阅读(三十四)
thinkphp源码无差别阅读(三十四)ORM阅读model/relation/MorphOne.php属性:morphKey、morphType、type、bindAttr构造方法:__construct延迟获取关联数据:getRelation根据关联条件查询当前模型:has根据关联条件查询当前模型:hasWhere预载于关联查询:eagerlyResultSet预载于关联查询:eagerlyResult预载于关联查询:eagerlyMorphToOne保存:save创建关联对
2022-02-01 07:00:00 287
原创 【2022/01/31】thinkphp源码无差别阅读(三十三)
thinkphp源码无差别阅读(三十三)ORM阅读model/concern/BelongsToMany.php属性:middle、pivotName、pivot、pivotDataName构造方法:__construct设置中间表模型:pivot设置中间表数据名称:name实例化中间模型;newPivot合成中间表模型:hydratePivot延迟获取关联数据:getRelation重载select:select重载paginate:paginate重载find:find根据
2022-01-31 07:00:00 494
原创 【2022/01/30】thinkphp源码无差别阅读(三十二)
thinkphp源码无差别阅读(三十二)ORM阅读model/concorn/SoftDelete.php属性:withTrashed判断当前实例是否被软删除:trashed查询软删除数据:withTrashed是否包含软删除数据:withTrashedData只查询软删除数据:onlyTrashed获取软删除的查询条件:getWithTrashedExp删除:delete删除:destroy恢复:restore获取软删除字段:getDeleteTimeField排除软删除数据
2022-01-30 09:45:55 6068
原创 【2022/01/29】thinkphp源码无差别阅读(三十一)
thinkphp源码无差别阅读(三十一)ORM阅读model/concern/ModelEvent.php属性:event、、withEvent设置事件:setEvent设置事件是否需要响应:withEvent触发事件:triggermodel/concern/OptimLock.php未知:getOptimLockField数据检查:checkData记录乐观锁:recordLockVersion更新乐观锁:updateLockVersion获取更新条件:getWhere
2022-01-29 07:00:00 439
原创 【2022/01/27】thinkphp源码无差别阅读(三十)
thinkphp源码无差别阅读(三十)ORM阅读model/concern/Attribute.php属性:pk、schema、field、type、disuse、readonly、data、origin、json、jsonType、jsonAssoc、strict、get、withAttr获取主键:getPk判断是否主键:isPk获取主键:getKey设置允许写入字段:allowField设置只读字段:readOnly获取实际字段名:getRealFieldName设置数据对象值:
2022-01-28 07:00:00 307
原创 【2022/01/27】MediaStore模糊查询、分页、排序
MediaStore模糊查询、分页、排序安卓10以上就有了分区存储的概念,相关的查询就有了一些改变,下面我们介绍一下MediaStore经常使用的查询。常用的查询项:QUERY_ARG_LIMIT:查询条数QUERY_ARG_OFFSET:数据偏移量QUERY_ARG_SORT_DIRECTION:排序方向,也就是正序还是倒序QUERY_ARG_SORT_COLUMNS:排序字段QUERY_ARG_SQL_SELECTION:where语句实际例子,page和limit需要全局定义
2022-01-27 10:32:13 754
原创 【2022/01/26】RecyclerView上拉和下拉
RecyclerView上拉和下拉最近为了写一个简易的多选列表功能,使用了RecyclerView,发现如果数据太多的话会发生卡顿,所以决定使用分页,也就是大家常见的上拉加载数据,也有下拉刷新数据,我们这里使用滚动事件addOnScrollListener来完成这个功能。上拉加载在RecyclerView上添加监听事件recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override
2022-01-26 07:00:00 357
原创 【2022/01/25】thinkphp源码无差别阅读(二十九)
thinkphp源码无差别阅读(二十九)ORM阅读db/Where.plhp属性:where、enclose构造方法:__construct设置是否添加括号:enclose解析query对象为数组:parse分析查询表达式:parseItem修改器:__set获取器:__get检测数组对象的值:__isset销毁:__unset数组式访问:offsetSet、offsetExists、offsetUnset、offsetGetfacade/Db.php获取当前facade
2022-01-25 07:00:00 251
原创 【2022/01/24】thinkphp源码无差别阅读(二十八)
thinkphp源码无差别阅读(二十八)ORM阅读db/Query.php表达式方式指定排序:orderRaw表达式方式指定查询字段:fieldRaw指定field排序:orderField随机排序:orderRand使用表达式设置数据:exp表达式方式指定当前数据表:tableRaw获取执行的sql,而不进行查询:fetchSql批量执行:batchSqlusing支持:using存储过程调用:procedure指定group:group指定having:having指定
2022-01-24 07:00:00 250
原创 【2022/01/23】thinkphp源码无差别阅读(二十七)
thinkphp源码无差别阅读(二十七)ORM阅读db/PDOConnection.php常量:PARAM_FLOAT属性:config、PDOStatement、querySt、transTimes、reConnectTimes、fetchType、attrCase、info、queryStartTime、params、bindType、breakMatchStr、bind获取query类:getQueryClass获取builder类:getBuilderClass解析pdo链接的ds
2022-01-23 09:33:44 248
原创 【2022/01/22】thinkphp源码无差别阅读(二十六)
thinkphp源码无差别阅读(二十六)ORM阅读db/Fetch.php属性:query、connection、builder构造方法:__construct聚合查询:aggregate获取某个字段的值:value获取某列的值:column插入:insert获取插入的ID:insertGetId保存数据:save插入多条:insertAll通过select插入:selectInsert更新:update删除记录:delete查询记录:select查询一条:find查询
2022-01-22 16:36:23 5644
原创 【2022/01/21】thinkphp源码无差别阅读(二十五)
thinkphp源码无差别阅读(二十五)ORM阅读db/CacheItem.php属性:key、value、expire、tag、isHit构造方法:__construct为此缓存项设置键:setKey获取键:getKey获取有效期:getExpire获取tag:getTag获取缓存值:get是否命中:isHit设置值:set设置tag:tag设置有效期:expire设置准确的有效期:expireAt设置有效期:expireAfterdb/Connection.php
2022-01-21 10:32:56 4849
原创 【2022/01/20】uniapp和Android Studio无线真机调试
uniapp和Android Studio无线真机调试查找adb所在目录uniapp的adb路径是 HBuilderX\plugins\launcher\tools\adbsAndroid Studio的adb路径是 Android\Sdk\platform-toolsAndroid Studio的sdk目录可以通过as的setting查看如果你电脑上同时有HbuilderX和AS的话,可以用其中一个为了方便使用我们把adb目录设置为环境变量,如何设置这里就不做说明了,自行百度ad
2022-01-20 10:54:10 3836
原创 【2022/01/19】thinkphp源码无差别阅读(二十四)
thinkphp源码无差别阅读(二十四)ORM阅读db/Builder.php属性:connection、exp、parser、selectSql、insertSql、updateSql、deleteSql构造方法:__construct获取连接对象:getConnection注册查询表达式解析:bindParser数据分析:parseData数据绑定处理:parseDataBind字段名分析:parseKey查询额外参数分析:parseExtrafield分析:parseFiel
2022-01-19 10:08:26 116
原创 【2022/1/18】thinkphp源码无差别阅读(二十三)
thinkphp源码无差别阅读(二十三)ORM阅读Paginator.php属性:simple、items、currentPage、lastPage、total、listRows、hasMore、options、currentPageResolver、currentPathResolver、maker构造方法:__construct生成分页:make获取maker:maker设置当前页码:setCurrentPage获取页码对应的链接:url获取当前页面:getCurrentPage
2022-01-18 10:03:29 1154
原创 【2022/1/17】thinkphp源码无差别阅读(二十二)
thinkphp源码无差别阅读(二十二)ORM阅读DbManager.php属性:instance、config、event、listen、dbLog、queryTimes、cache、log构造方法:__construct注入模型对象:modelMaker监听sql:triggerSQL初始化配置参数:setConfig设置缓存对象:setCache设置日志对象:setLog记录sql日志:log获取查询日志:getDbLog获取配置参数:getConfig创建或者切换数据库
2022-01-17 09:59:38 147
原创 【2022/1/16】thinkphp源码无差别阅读(二十一)
thinkphp源码无差别阅读(二十一)Helper阅读contract/Arrayable.php转换为数组:toArraycontract/Jsonable.php转换为数组:toJsonhelper/Arr.php判断是否可以数组式访问:accessible添加元素:add未知:collapse未知:crossJoin分割数组,一个是键名,一个是键值:divide未知:dot排除指定key的数组:except判断是否存在ken:exists返回第一个元素:fi
2022-01-16 10:14:07 483
原创 【2022/1/15】thinkphp源码无差别阅读(二十)
thinkphp源码无差别阅读(二十)Helper阅读helper.php抛出异常:throw_if抛出异常:throw_unless调用闭包:tap默认值:value数据集:collect未知:data_fill未知:data_get未知:data_set获取trait引用的trait:trait_uses_recursive获取类名(不包含命名空间):class_basename获取类中用到的所有trait:class_uses_recursiveCollection.
2022-01-15 10:41:14 344
原创 【2022/1/14】thinkphp源码无差别阅读(十九)
thinkphp源码无差别阅读(十九)framework阅读think/validate/ValidateRule.php属性:title、rule、message添加验证因子:addItem获取验证规则:getRule获取验证字段名称:getTitle获取验证提示信息:getMsg设置验证字段名称:title未知:__call未知:__callStaticthink/view/driver/Php.php属性:config构造方法:__construct检测是否存在模板
2022-01-14 15:09:00 122
原创 【2022/1/13】thinkphp源码无差别阅读(十八)
thinkphp源码无差别阅读(十八)framework阅读think/route/dispatch/Callback.php执行:execthink/route/dispatch/Controller.php属性:controller、actionName初始化:init执行:exec使用反射机制注册控制器中间件:registerControllerMiddleware实例化访问控制器:controllerthink/route/dispatch/Url.php构造方法:
2022-01-13 09:58:51 296
原创 【2022/1/12】think-swoole使用教程
think-swoole使用教程核心思想是swoole只是作为一个消息转发器,业务逻辑还是通过接口来实现,发送消息也是使用接口,客户端websocket只负责创建和监听接受消息即可。环境centos8PHP7.4thinkphp6.0.10think-swoole4.0.6开发过程安装think-swoole扩展为了方便我们安装think-view扩展配置swoole.php文件server.host 服务器IPserver.port 服务器端口server.opti
2022-01-12 14:27:20 2729
原创 【2022/1/11】thinkphp源码无差别阅读(十七)
thinkphp源码无差别阅读(十七)framework阅读think/route/RuleGroup.php属性:rules、rule、miss、fullName、alias构造方法:__construct设置分组路由规则:setFullName获取所属域名:getDomain获取分组别名:getAlias检测分组路由:check分组url匹配检查:checkUrl设置分组别名:alias延迟解析分组路由规则:lazy解析分组规则及绑定:parseGroupRule检测分组路
2022-01-11 16:45:57 510
原创 【2022/1/10】thinkphp源码无差别阅读(十六)
thinkphp源码无差别阅读(十六)framework阅读think/route/Dispatch.php属性:app、request、rule、dispatch、param构造方法:__construct初始化:init执行调度:run响应:autoResponse检查路由后置操作:doRouteAfter路由绑定过模型:createBindModel验证数据:autoValidate获取调度:getDispatch获取参数:getParam执行:exec休眠:__sle
2022-01-10 13:04:54 629
原创 【2022/1/9】thinkphp源码无差别阅读(十五)
thinkphp源码无差别阅读(十五)framework阅读think/middleware/AllowCrossDomain.php属性:cookieDomain、header构造方法:__construct允许跨域请求:handlethink/middleware/CheckRequestCache.php属性:cache、config构造方法:__construct设置当前地址的请求缓存:handle读取当前地址的请求缓存:getRequestCache读取当前地址的请求
2022-01-09 09:54:14 112
原创 【2022/1/8】thinkphp源码无差别阅读(十四)
thinkphp源码无差别阅读(十四)framework阅读think/initializer/BootService.php初始化:initthink/initializer/Error.php属性:app注册异常处理:init异常处理:appException错误处理:appErrorshutdown处理:appShutdown是否致命:isFatal获取异常处理器:getExceptionHandlerthink/initializer/RegisterService
2022-01-08 11:35:14 572
原创 【2022/1/7】Android平台启动图制作.9.png图片
Android平台启动图制作.9.png图片可以先了解4条黑边的意义,当然如果不了解也是可以的,我们制作.9.png使用android studio顶部:水平拉伸时,只有这一部分进行拉伸左边:竖直拉伸时,只有这一部分进行拉伸右边:竖直拉伸时,显示的区域底部:水平拉伸时,显示的区域如果对这个不是太理解,可以让底部和右边全选,顶部和左边选中没有内容的区域制作流程将图片start.png复制到drawable右键图片选择Create 9-Patch file...,点击确认即可
2022-01-07 10:29:27 2323
原创 【2022/1/6】thinkphp源码无差别阅读(十三)
thinkphp源码无差别阅读(十三)framework阅读think/facade/App.php属性:getFacadeClassthink/facade/Cache.php属性:getFacadeClassthink/facade/Config.php属性:getFacadeClassthink/facade/Console.php属性:getFacadeClassthink/facade/Cookie.php属性:getFacadeClassthink/
2022-01-06 10:09:02 481
原创 【2022/1/5】thinkphp源码无差别阅读(十二)
thinkphp源码无差别阅读(十二)framework阅读think/event/AppInit.phpthink/event/HttpEnd.phpthink/event/HttpEnd.phpthink/event/LogRecord.php属性:type、message构造方法:__constructthink/event/LogWrite.php属性:channel、log构造方法:__constructthink/event/RouteLoaded.php构造
2022-01-05 11:28:02 362
原创 【2022/1/4】TCP和websocket通讯
TCP和websocket通讯使用场景:通过网页控制硬件设备,或者硬件设备的信息显示到网页上所用技术PHP环境workerman实现原理启动一个websocket服务端,进程启动的时候启动tcp,把tcp设置为websocket的一个属性上socketArray,然后在websocket接受消息的回调里获取socketArray,循环取出tcp链接,发送消息代码<?phpuse Workerman\Worker;require_once __DIR__ . '/ve
2022-01-04 13:27:21 1758
原创 【2022/1/3】thinkphp源码无差别阅读(十一)
thinkphp源码无差别阅读(十一)framework阅读console/command/output/Formatter.php属性:decorated、styles、styleStack转义:escape初始化命令行输出格式:__construct设置外观标识:setDecorated获取外观标识:isDecorated添加一个新样式:setStyle是否有这个样式:hasStyle获取样式:getStyle使用所给的样式格式化文字:format未知:getStyleSta
2022-01-03 09:51:08 350
原创 【2022/1/2】thinkphp源码无差别阅读(十)
thinkphp源码无差别阅读(十)framework阅读console/command/optimize/Route.php配置:configure执行:execute生成路由缓存:buildRouteCacheconsole/command/optimize/Schema.php配置:configure执行:execute未知:buildModelSchema未知:buildDataBaseSchemaconsole/command/input/Argument.php
2022-01-02 10:59:38 367
原创 【2021/12/31】thinkphp源码无差别阅读(九)
thinkphp源码无差别阅读(九)framework阅读console/Table.php常量:ALIGN_LEFT、ALIGN_RIGHT、ALIGN_CENTER属性:header、headerAlign、rows、cellAlign、colWidth、style、format设置表头信息:setHeader设置表格数据和对齐方式:setRows设置单元格对齐方式:setCellAlign检查列显示宽度:checkColWidth增加一行表格:addRow设置表格输出样式:se
2022-01-01 10:00:31 433
原创 【2021/12/31】uniapp之安卓原生插件开发教程
uniapp之安卓原生插件开发教程准备hbuilderX,下载app离线SDK,下载Andorid Studio,安卓官方或中文社区证书(可以自己准备,也可以使用android Studio生成)插件功能简介加法功能,我们把插件名称起名为leruge-add,方法是add,参数是a和b过程HbuilderX创建一个项目在pages/index/index.vue中随便写一个按钮,然后调用我们的原生插件leruge-add,代码如下<template> &
2021-12-31 08:58:57 2648
原创 【2021/12/30】thinkphp源码无差别阅读(八)
thinkphp源码无差别阅读(八)framework阅读console/Command.php属性:console、name、processTitle、aliases、definition、help、description、ignoreValidationErrors、consoleDefinitionMerged、consoleDefinitionMergedWithArgs、synopsis、usages、input、output、app构造方法:__construct忽略验证错误:ig
2021-12-30 09:55:59 362
原创 【2021/12/29】thinkphp源码无差别阅读(七)
thinkphp源码无差别阅读(七)framework阅读View.php属性:namespace、data、filter、获取模板引擎:engine模板变量赋值:assign试图过滤:filter解析和获取模板内容:fetch渲染内容输出:display获取模板渲染内容:getContent模板变量赋值:__set获取模板变量:__get监测是否有模板变量:__isset未知:resolveConfig获取默认驱动:getDefaultDrivercache/Drive
2021-12-29 09:52:26 317
原创 【2021/12/28】thinkphp源码无差别阅读(六)
thinkphp源码无差别阅读(六)framework阅读Service.php属性:app构造方法:__construct加载路由:loadRoutesFrom注册路由:registerRoutes添加指令:commandsSession.php属性:namespace设置驱动:createDriver获取配置:getConfig未知:resolveConfig获取默认驱动:getDefaultDriverValidate.php属性:type、alias、rul
2021-12-28 10:26:57 344
原创 【2021/12/27】thinkphp源码无差别阅读(五)
thinkphp源码无差别阅读(五)framework阅读Response.php属性:data、contentType、chatset、code、allowCache、options、header、content、cookie、session、初始化:init创建Response对象设置session对象:setSession发送数据到客户端:send处理数据:output输出数据:sendData设置输出的参数:options设置输出数据:data设置请求缓存:allowCa
2021-12-27 12:02:08 467
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人