thinkphp源码
文章平均质量分 75
梦中程序员系列
学历只是过去,学习决定未来
展开
-
【2022/02/04】thinkphp源码详细阅读(二)
thinkphp源码详细阅读(二)请求流程实例化 http ,注入 app 和设置 routePath执行 run 方法,首先初始化 initialize,初始化操作是在容器 app 中执行初始化执行的是,记录初始化标记、开始时间、开始内存、加载环境变量、配置文件后缀、设置调试模式、加载配置文件、加载语言配置、加载语言包、触发 AppInit 事件、设置时区、注册错误和异常处理、注册系统服务、启动系统服务其中加载配置文件执行的是,引入自定义函数、系统帮助函数、配置文件、注册事件、注册服务原创 2022-02-04 07:00:00 · 572 阅读 · 0 评论 -
【2022/02/02】thinkphp源码详细阅读(一)
thinkphp源码详细阅读(一)请求流程从入口 index.php 开始实例化 App ,我们看一下实例化所做的工作设置 thinkPath、 rootPath 、 appPath 、 runtimePath加载服务文件 provider.php ,具体如何实现,我们可以看绑定到容器实现部分代码provider.php 中返回的数组,代码的执行就是先循环,然后调用 bind 传入标识和类名称,类名称不是闭包,也不是类对象,所以进入 else然后根据别名获取真实的类名称绑定闭包和对原创 2022-02-03 07:00:00 · 1156 阅读 · 0 评论 -
【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 · 500 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 · 495 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 · 308 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 · 5646 阅读 · 0 评论 -
【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 · 4851 阅读 · 0 评论 -
【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 · 117 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 · 149 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 · 573 阅读 · 0 评论 -
【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 · 482 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 · 318 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【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 阅读 · 0 评论 -
【2021/12/26】thinkphp源码无差别阅读(四)
thinkphp源码无差别阅读(四)framework阅读Middleware.php属性:queue、app构造方法:__construct导入中间件:import注册中间件:add注册路由中间件:route注册控制器中间件:controller注册中间件到开始位置:unshift获取所有中间件:all调度广告:pipeline结束调度:end移除处理:handleException解析中间件:buildMiddleware中间件排序:sortMiddleware获取中原创 2021-12-26 17:51:07 · 563 阅读 · 0 评论 -
【2021/12/25】 thinkphp源码无差别阅读(三)
thinkphp源码无差别阅读(三)framework阅读Http.php属性:app、name、path、routePath、isBild构造方法:__construct设置应用名称:name获取应用名称:getName设置应用目录:path获取应用目录:getPath获取路由目录:getRoutePath设置路由目录:setRoutePath设置应用绑定:setBind判断应用是否绑定:isBind执行应用程序:run初始化应用:initialize执行用于程序:run原创 2021-12-25 10:54:15 · 600 阅读 · 0 评论 -
【2021/12/24】 thinkphp源码无差别阅读(二)
thinkphp源码无差别阅读(二)framework阅读Cookie.php属性:config、cookie、request、构造方法:__construct自定义实例化:__make获取cookie:get是否存在:has设置cookie:set报错cookie:setCookie永久保存:forever删除cookie:delete获取所有cookie:getCookie保存cookie:save保存cookie:saveCookieDb.php自定义实例化:_原创 2021-12-24 10:56:23 · 400 阅读 · 0 评论 -
thinkphp源码无差别阅读(一)
thinkphp源码无差别阅读(一)thinkphp的framework源码大概165个文件,我们不按照逻辑分析阅读源码,我们一个文件一个文件阅读,阅读完以后有个大概了解,然后在运行逻辑下进行阅读framework阅读App.php阅读常量:VERSION-定义框架版本号属性:$appDebug、envName、beginTime、beginRem、namespace、rootPath、thinkPath、appPath、runtimePath、routePath、configExt、ini原创 2021-12-18 13:28:41 · 872 阅读 · 0 评论