关于thinkphp:小编推荐ThinkPHP3x基础管理系统

CMS管理系统 介绍 这是一套应用ThinkPHP3.X开发的根底零碎,蕴含后盾用户权限管制,后盾用户分组治理、网站系统配置性能,可用他来衍生各种产品。网址:http://139.155.45.209:1024/admin 账号:admin 明码:admin 装置办法 1 创立MYSQL数据库,导入 cms.sql2 把根目录的config.php.bak文件名改成config.php3 依据你的数据库,配置config.php “db_host db_name db_user db_pwd db_port”4 后盾入口 http://domain/admin5 后盾帐号密码 admin admin6 后盾菜单设置办法请参考已有的那些菜单 目录构造 |-admin 后盾入口跳转门路|-Core 系统核心| ├Common 我的项目公共函数文件目录| ├Conf 我的项目配置目录| | ├Admin/config.php 我的项目后盾配置文件| | └Home/config.php 我的项目前台配置文件| || ├Lang 我的项目多语言包目录| | ├en-us 英文言包目录| | └zh-cn 中文言包目录| || ├Lib 我的项目类库目录| | ├Action 控制器| | └Model 模型| || ├config.php 我的项目配置文件| ├define.php 我的项目门路常量配置文件| └tags.php 我的项目扩大行为调用配置文件||-Public 公共动态文件目录| ├Admin 后盾公共动态目录| ├Home 前台公共动态目录| ├js 公共JS目录| └tips 信息提醒跳转页面||-Temp 零碎缓存目录|-Template 我的项目模板目录| ├Admin/default 后盾模板目录| └Home/default 前台模板目录||-config.php 网站配置文件└-index.php 零碎入口文件 ...

April 28, 2023 · 1 min · jiezi

关于thinkphp:20220204thinkphp源码详细阅读二

thinkphp源码具体浏览(二)申请流程实例化 http ,注入 app 和设置 routePath 执行 run 办法,首先初始化 initialize,初始化操作是在容器 app 中执行 初始化执行的是,记录初始化标记、开始工夫、开始内存、加载环境变量、配置文件后缀、设置调试模式、加载配置文件、加载语言配置、加载语言包、触发 AppInit 事件、设置时区、注册谬误和异样解决、注册零碎服务、启动零碎服务其中加载配置文件执行的是,引入自定义函数、零碎帮忙函数、配置文件、注册事件、注册服务初始化这个过程代码还是绝对较多的,不过浏览起来也是绝对简略的,有点急躁即可创立 request 对象,而后绑定到容器中,而后执行运行程序加载全局中间件,并给中间件放入执行队列触发 HttpRun 事件,而后调度管道 下一期管道剖析 pipeline

February 4, 2022 · 1 min · jiezi

关于thinkphp:20220202thinkphp源码详细阅读一

thinkphp源码具体浏览(一)申请流程从入口 index.php 开始实例化 App ,咱们看一下实例化所做的工作 设置 thinkPath、 rootPath 、 appPath 、 runtimePath加载服务文件 provider.php ,具体如何实现,咱们能够看绑定到容器实现局部代码 provider.php 中返回的数组,代码的执行就是先循环,而后调用 bind 传入标识和类名称,类名称不是闭包,也不是类对象,所以进入 else而后依据别名获取实在的类名称 绑定闭包和对象也须要理解,如果是闭包则间接绑定,如果是对象,则获取实在类名,而后绑定到实例上,目前暂未可知为什么闭包不应用实在类名? 设置以后容器实例最初把标识 app 和 think\Container 绑定到容器实例上实例化实现当前,获取 http 属性,这个时候发现 App 和它的父类 Container 中并没有这个属性,这个时候就会执行魔术办法 __get 判断容器中是否有 http ,有的话就创立实例,没有就抛出异样 下一期创立类实例 make 剖析

February 3, 2022 · 1 min · jiezi

关于thinkphp:20220202thinkphp源码无差别阅读三十五

thinkphp源码无差别浏览(三十五)ORM浏览model/relation/OneToOne.php属性:joinType、bindAttr、relation设置join类型:joinType预载于关联查问:eagerly预载于关联查问:eagerlySet预载于关联查问:eagerlyOne预载于关联查问:eagerlyResultSet预载于关联查问:eagerlyResult保留:save绑定属性:bind获取绑定属性:getBindAttr预查问拼装:match绑定属性:bindAttr预载于关联查问:eagerlyWherepaginator/driver/Bootstarp.php获取上一页按钮:getPreviousButton下一页按钮:getNextButton页码按钮:getLinks渲染:render生成一个可点击按钮:getAvailablePageWrapper生成一个不可点击按钮:getDisabledTextWrapper生成一个激活的按钮:getActivePageWrapper生成省略号按钮:getDots批量生产url按钮:getUrlLinks生成一般按钮:getPageLinkWrapper打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

February 2, 2022 · 1 min · jiezi

关于thinkphp:20220131thinkphp源码无差别阅读三十四

thinkphp源码无差别浏览(三十四)ORM浏览model/relation/MorphOne.php属性:morphKey、morphType、type、bindAttr构造方法:__construct提早获取关联数据:getRelation依据关联条件查问以后模型:has依据关联条件查问以后模型:hasWhere预载于关联查问:eagerlyResultSet预载于关联查问:eagerlyResult预载于关联查问:eagerlyMorphToOne保留:save创立关联对象实例:make根底查问:baseQuery绑定属性:bind获取绑定属性:getBindAttr绑定属性:bindAttrmodel/relation/MorphTo.php属性:morphKey、morphType、alias、relation构造方法:__construct获取以后关联模型类实例:getModel提早获取关联数据:getRelation依据关联条件查问以后模型:has依据关联条件查问以后模型:hasWhere解析模型残缺命名空间:parseModel设置多态别名:setAlias移除关联查问参数:removeOption预载于关联查问:eagerlyResultSet预载于关联查问:eagerlyResult关联统计:relationCount预载于关联查问:eagerlyMorphToOne增加关联数据:associate登记关联数据:dissociatemodel/relation/MorphToMany.php属性:morphType、morphClass、inverse构造方法:__construct预载于关联查问:eagerlyResultSet预载于关联查问:eagerlyResult关联统计:relationCount获取关联统计子查问:getRelationCountQuery关联查问:belongsToManyQuery预载于关联查问:eagerlyManyToMany附加关联的一个两头表数据:attach判断是否存在关联数据:attached解除关联的一个两头表数据:detach数据同步:sync根底查问:baseQuery打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

February 1, 2022 · 1 min · jiezi

关于thinkphp:20220131thinkphp源码无差别阅读三十三

thinkphp源码无差别浏览(三十三)ORM浏览model/concern/BelongsToMany.php属性:middle、pivotName、pivot、pivotDataName构造方法:__construct设置两头表模型:pivot设置两头表数据名称:name实例化两头模型;newPivot合成两头表模型:hydratePivot提早获取关联数据:getRelation重载select:select重载paginate:paginate重载find:find依据关联条件查问以后模型:has依据关联条件查问以后模型:hasWhere设置两头表查问条件:wherePivot预载于关联查问:eagerlyResultSet预载于关联查问:eagerlyResult关联统计:relationCount获取关联统计子查问:getRelationCountQuery关联模型预查问:eagerlyManyToMany关联查问:belongsToManyQuery保留:save批量保留:saveAll附加关联的一个两头表数据:attach判断是否存在关联数据:attached解除关联的一个两头表数据:detach数据同步:sync根底查问:baseQuerymodel/concern/HasMany.php构造方法:__construct提早获取关联数据:getRelation预载于关联查问:eagerlyResultSet预载于关联查问:eagerlyResult关联统计:relationCount关联统计子查问:getRelationCountQuery关联预查问:eagerlyOneToMany保留:save创立关联对象实例:make批量保留:saveAll依据关联条件查问以后模型:has依据关联条件查问以后模型:hasWhere根底查问:baseQuery打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 31, 2022 · 1 min · jiezi

关于thinkphp:20220130thinkphp源码无差别阅读三十二

thinkphp源码无差别浏览(三十二)ORM浏览model/concorn/SoftDelete.php属性:withTrashed判断以后实例是否被软删除:trashed查问软删除数据:withTrashed是否蕴含软删除数据:withTrashedData只查问软删除数据:onlyTrashed获取软删除的查问条件:getWithTrashedExp删除:delete删除:destroy复原:restore获取软删除字段:getDeleteTimeField排除软删除数据:withNoTrashedmodel/concern/TimeStamp.php属性:autoWriteTimeStamp、createTime、updateTime、dateFormat是否主动写入工夫戳:isAutoWriteTimestamp检测时间字段类型:checkTimeFieldType设置工夫字段名称:setTimeField获取主动写入的工夫字段:getAutoWriteTimestamp设置工夫字段格式化:setDataFormat获取主动写入工夫字段:getDateFormat主动写入工夫戳:autoWriteTimestamp获取主动类型的工夫字段值:getTimeTypeValue工夫日期格式化:formatDateTime获取工夫字段值:getTimestampValuemodel/concern/Virtual.php获取查问对象:db获取字段类型信息:getFieldType保留数据:save删除以后记录:deletemodel/concern/BelongsTo.php构造方法:__construct提早获取关联数据:getRelation创立关联统计子查问:getRelationCountQuery关联统计:relationCount依据关联条件查问关联模型:has依据关联条件查问关联模型:hasWhere预载于关联查问:eagerlySet预载于关联查问:eagerlyOne增加关联数据:associate登记关联数据:dissociate执行根底查问:baseQuery打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 30, 2022 · 1 min · jiezi

关于thinkphp:20220129thinkphp源码无差别阅读三十一

thinkphp源码无差别浏览(三十一)ORM浏览model/concern/ModelEvent.php属性:event、、withEvent设置事件:setEvent设置事件是否须要响应:withEvent触发事件:triggermodel/concern/OptimLock.php未知:getOptimLockField数据查看:checkData记录乐观锁:recordLockVersion更新乐观锁:updateLockVersion获取更新条件:getWhere未知:checkResultmodel/concern/RelationShip.php属性:parent、relation、together、relationWrite设置父关联对象:setParent获取父关联对象:getParent获取以后模型的关联模型数据:getRelation设置关联数据:setRelation查问关联数据:relationQuery关联数据写入:together依据关联条件查问以后模型:has依据关联条件查问以后模型:hasWhere+预载于关联查问:eagerly预载于关联查问:eagerlyResultSet预载于关联查问:eagerlyResult绑定属性:bindAttr关联统计:relationCount关联定义:hasOne关联定义:belongsTo关联定义:hasMany近程关联定义:hasManyThrough近程关联定义:hasOneThrough关联定义:belongsToMany关联定义:morphOne关联定义:morphMany关联定义:morphTo关联定义:morphToMany关联定义:morphByMany解析模型:parseModel获取外键:getForeignKey查看是否是关联属性:isRelationAttr获取关联数据:getRelationData关联数据主动写入查看:checkAutoRelationWrite主动关联数据更新:autoRelationUpdate主动关联数据写入:autoRelationInsert主动关联数据删除:autoRelationDelete移除关联属性:autoRelationDelete打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 29, 2022 · 1 min · jiezi

关于thinkphp:20220127thinkphp源码无差别阅读三十

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设置数据对象值:data批量追加数据对象值:appendData获取原始数据:getOrigin获取以后对象数据:getData获取变动的数据:getChangedData设置数据对象值:set通过修改器批量批改对象值:setAttrs设置对象值:setAttr数据写入,类型转换:writeTransform获取器:getAttr获取器:getValue获取json字段值:getJsonValue获取关联属性值:getRelationValue数据读取,类型转换:readTransform设置获取器:withAttributemodel/concern/Conversion.php属性:visible、hidden、append、scene、mapping、resultSetType、convertNameToCamel是否主动驼峰:convertNameToCamel设置须要附加的输入属性:append设置输入层场景:scene设置附加关联对象属性:appendRelationAttr设置暗藏属性:hidden设置输入属性:visible设置属性的映射输入:mapping模型对象转数组:toArray追加值到数组:appendAttrToArray获取绑定属性值:getBindAttrValue模型转json:toJson转json:__toString转数组:JsonSerialize转换为数据集对象:toCollection打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 28, 2022 · 1 min · jiezi

关于thinkphp:20220125thinkphp源码无差别阅读二十九

thinkphp源码无差别浏览(二十九)ORM浏览db/Where.plhp属性:where、enclose构造方法:__construct设置是否增加括号:enclose解析query对象为数组:parse剖析查问表达式:parseItem修改器:__set获取器:__get检测数组对象的值:__isset销毁:__unset数组式拜访:offsetSet、offsetExists、offsetUnset、offsetGetfacade/Db.php获取以后facade对应的类名:getFacadeClassmodel/Collection.php提早预载于关联查问:load删除:delete更新:update设置暗藏:hidden设置显示:visible设置须要追加的属性:append设置模型输入场景:scene设置父模型:setParent设置获取器:withAttr关联属性到以后模型:bindAttr按指定键整顿数据:dictionary差集:diff交加:intersectmodel/Pivot.php属性:parent、autoWriteTimestamp构造方法:__constructmodel/Relation.php属性:parent、model、query、foreignKey、localKey、baseQuery、selfRelation、withLimit、withField、withoutField、default获取关联模型:getParent获取query:getQuery获取外键:getForeignKey获取主键:getLocalKey获取以后模型:getModel是否自关联:isSelfRelation封装关联数据集:resultSetBuild获取查问字段:getQueryFields获取查问字段:getRelationQueryFields获取查问条件:getQueryWhere限度关联数量:withLimit限度关联字段:withField排除关联字段:withoutField设置关联数据不存在时的默认:withDefault获取关联数据默认值:getDefaultModel判断闭包的参数类型:getClosureType执行根底查问:baseQuery动静调用:__call打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 25, 2022 · 1 min · jiezi

关于thinkphp:20220124thinkphp源码无差别阅读二十八

thinkphp源码无差别浏览(二十八)ORM浏览db/Query.php表达式形式指定排序:orderRaw表达式形式指定查问字段:fieldRaw指定field排序:orderField随机排序:orderRand应用表达式设置数据:exp表达式形式指定以后数据表:tableRaw获取执行的sql,而不进行查问:fetchSql批量执行:batchSqlusing反对:using存储过程调用:procedure指定group:group指定having:having指定district:district强制索引:force查问正文:comment设置是否replace:replace设置以后分区:partition设置duplicate:duplicate设置查问的额定参数:extra创立子查问sql:buildSql获取以后数据库的主键:getPk指定数据表自增主键:autoInc获取数据表的自增主键:getAutoInc自增字段值:inc自减字段值:dec获取以后查问标识:getQueryGuid获取PDOStatement:getPDOStatement应用游标查问:cursor分批解决:chunkdb/Raw.php属性:value、bind构造方法:__construct获取表达式:getValue获取参数绑定:getBind字符串化:toString打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 24, 2022 · 1 min · jiezi

关于thinkphp:20220123thinkphp源码无差别阅读二十七

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链接的dsn:parseDsn获取数据表的字段信息:getFields获取表信息:getTable对字段进行大小写转换:fieldCache获取字段类型:getFieldType获取字段绑定类型:getFieldBindType获取表信息缓存key:getSchemaCacheKey获取表信息:getSchemaInfo获取表信息:getTableInfo获取字段信息:getTableFieldInfo获取主键;getPk获取自增主键:getAutoInc获取字段信息:getTableFields获取字段类型:getFieldsType获取数据表绑定信息:getFieldsBind连贯数据库:connect试图查问:view创立pdo实例:createPdo开释查问后果:free获取pdo:getPdo执行查问,应用生成器返回后果:getCursor执行查问,返回数据集:query执行语句:execute执行查问,返回数据集:pdoQuery执行查问,返回PDOStatement:pdo获取PDOStatement:getPDOStatement执行语句:pdoExecute执行查问:queryPDOStatement查问单条语句:find应用游标查问记录:cursor查问记录:select插入:insert插入多条:insertAll通过select插入:selectInsert更新:update删除:delete查问某个字段的值:value聚合查问:aggregate查问一列:column依据参数绑定组装最初的sql:getRealSql参数绑定:bindValue存储过程的参数绑定:bindParam获取数据集数组:getResult获取存储过程数据集:procedure执行数据库事务:transaction启动事务:startTrans提交事务:commit事务回滚:rollback是否反对事务嵌套:supportSavepoint生成保留点的sql:parseSavePoint生成回盾到保留点的sql:parseSavePointRollback批处理执行sql:batchQuery敞开数据库:close是否断线:isBreak获取最近一次的查问sql:getLastSql获取最近的插入ID:getLastInsID获取最近的插入ID:autoInsIDType获取最近的错误信息:getError初始化数据库连贯:initConnect连贯分布式服务器:multiConnect执行数据库xa事务:transactionXa启动sa事务:startTransXa预编译xa:prepareXa提交xa:commitXa回滚xa:rollbackXa打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 23, 2022 · 1 min · jiezi

关于thinkphp:20220122thinkphp源码无差别阅读二十六

thinkphp源码无差别浏览(二十六)ORM浏览db/Fetch.php属性:query、connection、builder构造方法:__construct聚合查问:aggregate获取某个字段的值:value获取某列的值:column插入:insert获取插入的ID:insertGetId保留数据:save插入多条:insertAll通过select插入:selectInsert更新:update删除记录:delete查问记录:select查问一条:find查问多条,不存在就抛出异样:selectOrFail查问一条,不存在就抛出异样:findOrFail获取理论的sql:fetchcount查问:countsum查问:summin查问:minmax查问:maxavg查问:avg动静查问:__calldb/Mongo.php属性:connection执行指令,返回数据集:command执行指令:cmd指定distinct查问:getDistinct获取数据集:listCollectionscount查问:count聚合查问:aggregate多聚合查问:multiAggregate字段值增长:inc字段值缩小:dec指定以后的collection:tabletable别名:collection设置typeMap:typeMap未知:awaitData未知:batchSize未知:exhaust设置modifiers:modifiers设置noCursorTimeout:noCursorTimeout设置oplogReplay:oplogReplay设置partial:partial设置maxTimeMS:maxTimeMS未知:collation设置是否replace:replace设置返回字段:field指定排除字段:withoutField设置skip:skip设置slaveOk:slaveOk指定查问数量:limit排序:order设置tailable:tailable设置writeConcern:writeConcern获取主键:getPk获取getCursor:getCursor获取查问标识:getQueryGuid分页:paginate分批解决数据:chunk剖析表达式:parseOptions获取字段类型信息:getFieldsType打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 22, 2022 · 1 min · jiezi

关于thinkphp:20220121thinkphp源码无差别阅读二十五

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属性:queryStr、numRows、transTimes、error、links、linkID、linkRead、linkWrite、info、queryStartTime、builder、db、readMaster、config、cache构造方法:__construct获取builder:getBuilder创立查问对象:newQuery指定表名称:table指定表名称:name设置db对象:setDb设置缓存对象:setCache获取缓存对象:getCache获取配置:getConfigSQL监控:trigger缓存数据:cacheData获取缓存key:getCacheKey剖析缓存:parseCache获取返回或影响记录数:getNumRows析构办法:__destructdb/ConnectionInterface.php获取Query名称:getQueryClass指定表名称:table指定表名称:name连贯数据库:connect设置db:setDb设置缓存:setCache获取配置:getConfig敞开数据库:close查找单条记录:find查找记录:select插入:insert插入多条:insertAll更新:update删除:delete获取指定值:value获取指定列的值:column执行数据库事务:transaction启动事务:startTrans提交事务:commit事务回滚:rollback获取最近执行的sql:getLastSql打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 21, 2022 · 1 min · jiezi

关于thinkphp:20220119thinkphp源码无差别阅读二十四

thinkphp源码无差别浏览(二十四)ORM浏览db/Builder.php属性:connection、exp、parser、selectSql、insertSql、updateSql、deleteSql构造方法:__construct获取连贯对象:getConnection注册查问表达式解析:bindParser数据分析:parseData数据绑定解决:parseDataBind字段名剖析:parseKey查问额定参数剖析:parseExtrafield剖析:parseFieldtable剖析:parseTablewhere剖析:parseWhere生成查问条件:buildWhere不同字段应用雷同查问条件:parseWhereLogic不同字段应用雷同查问条件:parseFieldsAnd不同字段应用雷同查问条件:parseFieldsOr闭包查问:parseClosureWhere符合条件查问:parseMultiWhereFieldwhere子单元剖析:parseWhereItem含糊查问:parseLike表达式查问:parseExp列查问:parseColumnnull查问:parseNull范畴查问:parseBetweenexists查问:parseExists工夫比拟查问:parseTime大小比拟查问:parseCompare工夫范畴查问:parseBetweenTimein查问:parseIn闭包查问:parseClosure日期工夫条件解析:parseDateTimelimit剖析:parseLimitjoin剖析:parseJoinorder剖析:parseOrder剖析Raw对象:parseRaw随机排序:parseRandorderField剖析:parseOrderFieldgroup剖析:parseGrouphaving剖析:parseHavingcomment剖析:parseCommentdistrict剖析:parseDistrictunion剖析:parseUnionindex剖析:parseForce设置锁机制:parseLock生成select语句:select生成insert:inseret生成insertall:insertAll生成select insert:selectInsert生成update:update生成delete:delete打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 19, 2022 · 1 min · jiezi

关于thinkphp:2022118thinkphp源码无差别阅读二十三

thinkphp源码无差别浏览(二十三)ORM浏览Paginator.php属性:simple、items、currentPage、lastPage、total、listRows、hasMore、options、currentPageResolver、currentPathResolver、maker构造方法:__construct生成分页:make获取maker:maker设置以后页码:setCurrentPage获取页码对应的链接:url获取以后页面:getCurrentPage设置以后页码闭包:currentPageResolver获取path:getCurrentPath获取门路闭包:currentPathResolver获取总条数:total获取每页数量:listRows获取以后页码:currentPage获取最初一页页码:lastPage判断是否足够分页:hasPages创立一组分页:getUrlRange设置锚点:fragment增加url数据:appends结构锚点字符串:buildFragment渲染分页html:render获取数据:items获取数据集:getCollection判断是否为空:isEmpty遍历:each数组式拜访和递归:获取总条数:count获取html字符串:__toString转换为数组:toArray转换为数组:jsonSerialize动静调用:__calldb/BaseQuery.php属性:connection、name、pk、autoinc、prefix、options构造方法:__construct动静调用:__call创立一个新的查问对相干:newQuery获取数据库连贯:getConnection指定以后数据库表名:name获取以后数据库表名:getName获取数据库配置参数:getConfig获取表名称:getTable设置字段类型信息:setFieldType获取最近一次的sql查问语句:getLastSql获取返回或者影响的记录条数:getNumRows获取最近插入的id:getLastID获取某个字段的值:value获取某列的值:columnunion:unionunionAll:unionAll指定查问字段:field排除查问字段:withoutField指定其它表的查问字段:tableField设置数据:data去除查问参数:removeOption指定查问数量:limit指定分页:page指定数据库表:table指定排序:order分页查问:paginate分页查问:paginateX查问更多:more查问缓存:cache指定查问lock:lock指定数据库表别名:alias设置主服务器读取数据:master设置严格查看字段:strict设置自增序列值:sequence设置json字段:json指定数据表主键:pk设置查问参数:options获取查问参数:getOptions设置查问参数:setOption设置表别名:via保留记录:save插入记录:insert插入记录并获取自增ID:insertGetID批量插入:insertAll通过select形式插入记录:selectInsert更新记录:update删除记录:delete查问记录:select查找单条记录:find剖析查问参数:parseOptions剖析更新条件:parseUpdateData把主键转为查问条件:parsePkWhere获取模型更新条件:getModelUpdateCondition打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 18, 2022 · 1 min · jiezi

关于thinkphp:2022117thinkphp源码无差别阅读二十二

thinkphp源码无差别浏览(二十二)ORM浏览DbManager.php属性:instance、config、event、listen、dbLog、queryTimes、cache、log构造方法:__construct注入模型对象:modelMaker监听sql:triggerSQL初始化配置参数:setConfig设置缓存对象:setCache设置日志对象:setLog记录sql日志:log获取查问日志:getDbLog获取配置参数:getConfig创立或者切换数据库连贯查问:connect创立数据库连贯实例:instance获取连贯配置:getConnectionConfig创立连贯:createConnection应用表达式设置数据:raw更新查问次数:updateQueryTimes重置查问次数:clearQueryTimes获取查问次数:getQueryTimes监听sql执行:listen获取监听sql执行:getListen注册事件:event触发事件:trigger动静调用:__callModel.php属性:exists、force、replace、suffix、updateWhere、connection、name、key、table、initialized、defaultSoftDelete、globalScope、lazySave、db、invoker、maker、macro设置服务注入:maker设置办法注入:macro设置db:setDb设置容器对象的依赖注入办法:setInvoker调用反射执行模型办法:invoke构造方法:__construct获取模型名称:getName创立新的模型实例:newInstance设置更新条件:setUpdateWhere设置数据库连贯:setConnection获取连贯:getConnection设置后缀:setSuffix获取后缀:getSuffix获取db:db初始化模型:initialize初始化解决:init未知:checkData未知:checkResult强制更新:force判断force:isForce应用replace:replace刷新模型数据:refresh设置数据是否存在:exists判断数据是否存在:isExists判断模型是否为空:isEmpty提早保留以后数据:lazySave保留以后数据对象:save检查数据是否容许写入:checkAllowFields保留写入数据:saveData新增写入数据:insertData获取以后更新条件:updateWhere保留多个数据到以后数据对象:saveAll删除以后记录:delete写入数据:create更新:update删除:destroy唤醒:__wakeup修改器:__set获取器:__get检测是否有:__isset销毁数据对象的值:__unset数组式拜访设置不实用全局查问范畴:withGlobalScope切换后缀进行查问:suffix切换数据库连贯进行查问:connect动静调用:__call、__callStatic析构办法:__destruct打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 17, 2022 · 1 min · jiezi

关于thinkphp:2022116thinkphp源码无差别阅读二十一

thinkphp源码无差别浏览(二十一)Helper浏览contract/Arrayable.php转换为数组:toArraycontract/Jsonable.php转换为数组:toJsonhelper/Arr.php判断是否能够数组式拜访:accessible增加元素:add未知:collapse未知:crossJoin宰割数组,一个是键名,一个是键值:divide未知:dot排除指定key的数组:except判断是否存在ken:exists返回第一个元素:first返回最初一个元素:last未知:flatten未知:forget未知:get未知:has判断是否关联数组:isAssoc返回指定的key:only未知:pluck未知:explodePluckParameters向数组结尾插入值:prepend移除值:pull随机:random未知:set打乱:shuffle排序:sort递归排序:sortRecursive数组转为query字符串:query过滤筛选:where强制转数组:wraphelper/Str.php属性:snakeCache、camelCache、studlyCache查看是否蕴含字符串:contains,PHP8的str_contains查看字符串以某些字符串结尾:endsWith,PHP8的str_ends_with查看字符串以某些字符串开始:startsWith,PHP8的str_starts_with获取指定长度的字符串:random字符串转小写:lower字符串转大写:upper获取字符串长度:length截取字符串:substr转下划线:snake转驼峰:camel转驼峰(首字母大写):studly转为首字母大写的题目格局:title打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 16, 2022 · 1 min · jiezi

关于thinkphp:2022115thinkphp源码无差别阅读二十

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.php属性:items构造方法:__construct创立数据集:make是否为空:isEmpty转化为数组:toArray获取数据:all合并:merge按指定键整顿数据:dictionary比拟数组,返回差集:diff比拟数组,返回交加:intersect替换数组中的键和值:flip返回数组中的键名:keys返回数组中的值:values删除数组中的最初一个:pop通过应用用户自定义函数,以字符串返回数组:reduce以相同的程序返回数组:reverse删除数组中首个:shift想数组结尾插入:push把一个数组分隔成新的数组快:chunk在数组结尾插入一个元素:unshift给每个元素执行回调:each用回调函数解决数组中的元素:map用回调函数过滤数组中的元素:filter依据字段条件过滤数组中的元素:wherelike过滤:whereLikenotlike过滤:whereNotLikein过滤:whereInnotin过滤:whereNotInbetween过滤:whereBetweennotbetween:whereNotBetween返回数据中指定的列:column排序:sort指定字段进行排序:order打乱数组:shuffle获取第一个单元数据:first获取最初一个单元数据:last截取数组:slice转换为json字符串:toJson转换为数组:convertToArray打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 15, 2022 · 1 min · jiezi

关于thinkphp:2022114thinkphp源码无差别阅读十九

thinkphp源码无差别浏览(十九)framework浏览think/validate/ValidateRule.php属性:title、rule、message增加验证因子:addItem获取验证规定:getRule获取验证字段名称:getTitle获取验证提示信息:getMsg设置验证字段名称:title未知:__call未知:__callStaticthink/view/driver/Php.php属性:config构造方法:__construct检测是否存在模板文件:exists渲染模板文件:fetch渲染模板内容:display主动定位模板内容:parseTemplate配置模板引擎:config获取模板引擎配置:getConfigframework无差别浏览实现,上面进行orm无差别浏览打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 14, 2022 · 1 min · jiezi

关于thinkphp:2022113thinkphp源码无差别阅读十八

thinkphp源码无差别浏览(十八)framework浏览think/route/dispatch/Callback.php执行:execthink/route/dispatch/Controller.php属性:controller、actionName初始化:init执行:exec应用反射机制注册控制器中间件:registerControllerMiddleware实例化拜访控制器:controllerthink/route/dispatch/Url.php构造方法:__construct解析url地址:parseUrl查看url是否曾经定义过路由:hasDefineRoutethink/service/ModelService.php启动:bootthink/service/PaginatorService.php注册:register启动:bootthink/service/ValidateService.php启动:bootthink/session/Store.php属性:data、init、name、id、handler、serialize构造方法:__construct设置数据:setData初始化:init设置name:setName获取name:getName设置id:setId获取id:getId获取所有数据:all设置:set获取:get获取并删除:pull增加:push判断是否有:has删除:delete清空:clear销毁:destroy从新生成id:regenerate保留:savesession设置,下次无效:flash将本次闪存推延到下次申请:reflash清空以后申请的session:clearFlashData序列化数据:serialize反序列化:unserializethink/session/driver/Cache.php属性:handler、expire、prefix构造方法:__construct读取:read删除:delete写入:writethink/session/driver/File.php属性:config构造方法:__construct初始化:initgc垃圾回收查找文件:findFiles获取文件名称:getFileName读取:read写文件(加锁):writeFile读文件(加锁):readFile写入:write删除:delete删除文件:unlink打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 13, 2022 · 1 min · jiezi

关于thinkphp:2022111thinkphp源码无差别阅读十七

thinkphp源码无差别浏览(十七)framework浏览think/route/RuleGroup.php属性:rules、rule、miss、fullName、alias构造方法:__construct设置分组路由规定:setFullName获取所属域名:getDomain获取分组别名:getAlias检测分组路由:check分组url匹配查看:checkUrl设置分组别名:alias提早解析分组路由规定:lazy解析分组规定及绑定:parseGroupRule检测分组路由:checkMergeRuleRegex获取分组miss路由:getMissRule注册miss路由:miss增加分组下的路由规定:addRule注册分组下的路由规定:addRuleItem设置路由分组前缀:prefix合并路由规定正则:mergeRuleRegex设置分组调度:dispatcher获取残缺分组名称:getFullName获取分组路由规定:getRule清空分组路由规定:clearthink/route/RuleItem.ph属性:miss、autoOption构造方法:__construct设置miss路由:setMiss判断miss:isMiss设置路由为主动注册为option:setAutoOptions判断是否主动注册option:isAutoOptins获取后缀:getSuffix路由规定预处理:setrule设置别名:name设置路由标识:setRuleName检测路由:checkRule检测路由:checkurl后缀以及slash查看:urlSlashCheck检测url和路由是否匹配:match设置路由所属分组:groupthink/route/RuleName.php属性:item、rule、group注册路由标识:setItem注册路由分组标识:setGroup注册路由规定:setRule依据路由规定获取路由对象:getRule获取路由分组:getGroup清空路由规定:clear获取路由列表:getRuleList导入路由标识:import依据路由标识获取路由信息:getName获取路由信息:getRuleItemInfothink/route/Url.php属性:app、route、vars、url、root、https、suffix、domain构造方法:__construct设置参数:vars设置后缀:suffix设置域名:domain设置url跟地址:root设置https:https检测域名:parseDomain解析后缀:parseSuffix解析地址:parseUrl剖析路由规定中的变量:parseVar匹配路由地址:getRuleUrl生成url:build字符串解决:__toStringdebug信息:__debugInfo打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 11, 2022 · 1 min · jiezi

关于thinkphp:2022110thinkphp源码无差别阅读十六

thinkphp源码无差别浏览(十六)framework浏览think/route/Dispatch.php属性:app、request、rule、dispatch、param构造方法:__construct初始化:init执行调度:run响应:autoResponse查看路由后置操作:doRouteAfter路由绑定过模型:createBindModel验证数据:autoValidate获取调度:getDispatch获取参数:getParam执行:exec休眠:__sleep唤醒:__wakeupdebug信息:__debugInfothink/route/Domain.php构造方法:__construct检测域名路由:check设置路由绑定:bind检测url绑定:checkUrlBind解析绑定参数:parseBindAppendParam绑定到类:bindToClass绑定到命名空间:bindToNamespace绑定到控制器:bindToControllerthink/route/Resource.php属性:resource、route、rest、model、validate、middleware构造方法:__construct生成资源路由规定:buildResourceRule设置资源容许:only设置资源排除:except设置资源路由的变量:vars绑定资源验证:withValidate绑定资源模型:withModel绑定资源中间件:withMiddlewarerest办法定义和批改think/route/Rule.php属性:name、domain、router、parent、rule、method、vars、option、pattern、mergeOptions查看:check设置路由参数:option设置路由参数:setOption注册变量规定:pattern设置标识:name获取路由对象:getRouter获取路由标识:getName获取以后路由规定:getRule获取以后路由地址:getRoute获取以后路由变量:getVars获取以后分组:getParent获取路由所在域名:getDomain获取路由参数:config获取变量规定:getPattern获取路由参数:getOption获取路由申请类型:getMethod设置申请类型:method查看后缀:ext查看禁止后缀:denyExt查看域名:domain设置参数过滤:filter绑定模型:model附加路由隐式参数:append绑定验证:validate指定路由中间件:middleware容许跨域:allowCrossDomain表单令牌验证:token设置路由缓存:cache查看路由分隔符:depr设置须要合并的路由参数:mergeOptions查看是否是https:https查看是否是json申请:json查看是否是ajax请去:ajax查看是否是pjax申请:pjax路由到模板地址:view设置路由残缺匹配:complateMatch是否去除url最初的斜线:removeSlash设置路由规定全局无限:crossDomainRule解析匹配到的路由规定:parseRule路由调度:dispatch解析url地址:dispatchController路由查看:checkOption解析url参数:parseUrlParams解析pathinfo:parseUrlPath生成路由正则规定:buildRouteRegex生成路由变量的正则规定:buildNameregex设置路由参数:__call睡眠:__sleep唤醒:__wakeupdebug:debugInfo打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 10, 2022 · 1 min · jiezi

关于thinkphp:202219thinkphp源码无差别阅读十五

thinkphp源码无差别浏览(十五)framework浏览think/middleware/AllowCrossDomain.php属性:cookieDomain、header构造方法:__construct容许跨域申请:handlethink/middleware/CheckRequestCache.php属性:cache、config构造方法:__construct设置以后地址的申请缓存:handle读取以后地址的申请缓存:getRequestCache读取以后地址的申请缓存:parseCacheKeythink/middleware/FormTokenCheck.php表单令牌检测:handlethink/middleware/LoadLangPack.php属性:app、lang、config构造方法:__construct路由初始化:handle主动侦测获取语言设置:detect保留以后语言到cookie:saveToCookiethink/middleware/SessionInit.php属性:app、session构造方法:__constructsession初始化:init保留session数据think/response/File.php属性:expire、name、mimeType、isContent、force构造方法:__construct解决数据:output设置是否为内容:isContent设置有效期:expire设置文件类型:mimeType设置文件强制下载:force获取文件类型:getMimeType设置下载时文件名称:namethink/response/Html.php属性:contentType构造方法:__constructthink/response/Json.php属性:options、contentType初始化:__construct解决数据:outputthink/response/Jsonp.php属性:options、contentType、request构造方法:__construct解决数据:outputthink/response/Redirect.php属性:request构造方法:__construct解决数据:output重定向传值:with记住以后url后跳转:remember跳转到上次记住的url:restorethink/response/View.php属性:options、vars、filter、contentType、view、isContent构造方法:__construct设置是否为内容:isContent解决数据:output获取试图变量:getVars模板变量赋值:assign试图内容过滤:filter查看模板是否存在:existsthink/response/Xml.php属性:options、contentType构造方法:__construct解决数据:outputxml编码:xmlEncode数据xml编码:dataToXml打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 9, 2022 · 1 min · jiezi

关于thinkphp:202218thinkphp源码无差别阅读十四

thinkphp源码无差别浏览(十四)framework浏览think/initializer/BootService.php初始化:initthink/initializer/Error.php属性:app注册异样解决:init异样解决:appException错误处理:appErrorshutdown解决:appShutdown是否致命:isFatal获取异样处理器:getExceptionHandlerthink/initializer/RegisterService.php属性:services初始化:initthink/log/Channel.php属性:name、logger、event、lazy、log、close、allow构造方法:__construct敞开通道:close清空日志:clear记录日志:record实时写入日志:write获取日志信息:getLog保留日志:save记录日志:emergency记录日志:alert记录日志:critical记录日志:error记录日志:warning记录日志:notice记录日志:info记录日志:debug记录日志:log动静调用:__callthink/log/ChannelSet.php属性:log、channels构造方法:__construct动静调用:__callthink/log/driver/File.php属性:config构造方法:__construct写入日志:save写入日志:write获取主日志文件名:getMasterLogFile获取独立日志文件名:getApartLevelFile查看日志大小并生成备份文件:checkLogSizethink/log/driver/Socket.php属性:app、config、css、allowForceClientIds、clientArg构造方法:__construct写入日志:save发送给指定客户端:sendToClient查看客户端受权:check获取客户端参数:getClientArg发送:send打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 8, 2022 · 1 min · jiezi

关于thinkphp:202216thinkphp源码无差别阅读十三

thinkphp源码无差别浏览(十三)framework浏览think/facade/App.php属性:getFacadeClassthink/facade/Cache.php属性:getFacadeClassthink/facade/Config.php属性:getFacadeClassthink/facade/Console.php属性:getFacadeClassthink/facade/Cookie.php属性:getFacadeClassthink/facade/Env.php属性:getFacadeClassthink/facade/Event.php属性:getFacadeClassthink/facade/FileSystem.php属性:getFacadeClassthink/facade/Lang.php属性:getFacadeClassthink/facade/Log.php属性:getFacadeClassthink/facade/Middleware.php属性:getFacadeClassthink/facade/Request.php属性:getFacadeClassthink/facade/Route.php属性:getFacadeClassthink/facade/Session.php属性:getFacadeClassthink/facade/Validate.php属性:getFacadeClassthink/facade/View.php属性:getFacadeClassthink/file/UploadedFile.php属性:text、originalName、mimeType、error构造方法:__construct是否是无效文件:isValid上传文件:move获取错误信息:getErrorMessage获取上传文件类型:getOriginalMime获取文件名称:getOriginalName获取文件扩展名:getOriginalExtension获取文件扩展名:extensionthink/filesystem/CacheStore.php属性:store、key、expire构造方法:__construct保留:save加载:loadthink/filesystem/Driver.php属性:cache、filesystem构造方法:__construct创立缓存存储:createCacheStore创立适配器:createAdapter创立文件系统:createFilesystem获取文件残缺门路:path门路转换为url:convertPathToUrl获取url:url保留文件:putFile指定文件名保留文件:putFileAs未知:__callthink/filesystem/driver/Local.php属性:config创立适配器:createAdapter获取文件url:url打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码

January 6, 2022 · 1 min · jiezi

关于thinkphp:202215thinkphp源码无差别阅读十二

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构造方法:__constructthink/exception/ClassNotFoundException.php属性:class构造方法:__construct、getClassthink/exception/ErrorException.php属性:severity构造方法:__construct获取谬误级别:getSeveritythink/exception/FailException.php获取谬误级别:getSeveritythink/exception/FuncNotFoundException.php属性:func构造方法:__construct获取办法名:getFuncthink/exception/Handle.php属性:app、ignoreReport、isJson构造方法:__construct上报或者记录异样:report是否疏忽:isIgnoreReport渲染异样:render渲染异样renderForConsole渲染http异样:renderHttpException收集异样数据:convertExceptionToArray收集异样数据:convertExceptionToResponse渲染异样:renderExceptionContent获取报错编码:getCode获取报错信息:getMessage读取出错文件内容:getSourceCode获取异样扩大数据:getExtendData获取常量:getConstthink/exception/HttpException.php属性:statusCode、headers构造方法:__construct获取状态码:getStatusCode获取header:getHeadersthink/exception/HttpResponseException.php属性:response构造方法:__construct获取响应:getResponsethink/exception/InvalidArgumentException.phpthink/exception/RouteNotFoundException.phpthink/exception/ValidateException.php属性:error构造方法:__construct获取验证错误信息:getError打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

January 5, 2022 · 1 min · jiezi

关于thinkphp:202214TCP和websocket通讯

TCP和websocket通信应用场景:通过网页管制硬件设施,或者硬件设施的信息显示到网页上所用技术PHP环境workerman实现原理启动一个websocket服务端,过程启动的时候启动tcp,把tcp设置为websocket的一个属性上socketArray,而后在websocket承受音讯的回调里获取socketArray,循环取出tcp链接,发送音讯代码<?phpuse Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';$websocket = new Worker('Websocket://0.0.0.0:8888');$websocket->count = 1;$websocket->onWorkerStart = function ($websocket) { // 启动第一个tcp过程 $tcp1 = new Worker('tcp://0.0.0.0:6000'); // 设置到socketArray属性上 $websocket->tcpArray[] = $tcp1; $tcp1->listen(); // 启动第二个tcp $tcp2 = new Worker('tcp://0.0.0.0:6001'); $websocket->tcpArray[] = $tcp2; $tcp2->listen();};// 承受websocket音讯后转发给tcp$websocket->onMessage = function ($conn, $data) { global $websocket; foreach($websocket->tcpArray as $tcpItem) { foreach ($tcpItem->connections as $tcpConn) { $tcpConn->send($data); } }};Worker::runAll();

January 4, 2022 · 1 min · jiezi

关于thinkphp:202212thinkphp源码无差别阅读十

thinkphp源码无差别浏览(十)framework浏览console/command/optimize/Route.php配置:configure执行:execute生成路由缓存:buildRouteCache framework浏览console/command/optimize/Schema.php配置:configure执行:execute未知:buildModelSchema未知:buildDataBaseSchemaconsole/command/input/Argument.php常量:REQUIRED、OPTIONAL、IS_ARRAY属性:name、mode、default、description构造方法:__construct获取参数名:getName判断是否必须:isRequired判断是否是数组:isArray设置默认值:setDefault获取默认值:getDefault获取形容:getDescriptionconsole/command/input/Definition.php属性:arguments、requiredCount、hasAnArrayArgument、hasOptional、options、shortcuts构造方法:__construct设置指令的定义:setDefinition设置参数:setArguments增加参数:addArguments增加参数:addArgument获取参数:getArgument判断是否有参数:hasArgument获取所有参数:getArguments获取参数数量:getArgumentCount获取必填参数数量:getArgumentRequiredCount获取参数默认值:getArgumentDefaults设置选项:setOptions增加选项:addOptions增加选项:addOption获取选项:getOption判断是否有这个选项:hasOption获取所有选项:getOptions判断是否有短名称:hasShortcut依据短名称获取选项:getOptionForShortcut获取所有选项默认值:getOptionDefaults依据短名称获取选项名:shortcutToName获取该指令的介绍:getSynopsisconsole/command/input/Option.php常量:VALUE_NONE、VALUE_REQUIRED、VALUE_OPTIONAL、VALUE_IS_ARRAY属性:name、shortcut、mode、default、description构造方法:__construct获取短名称:getShortcut获取选项明:getName判断是否能够设置值:acceptValue是否必传参数:isValueRequired是否可选参数:isValueOptional是否数组:isArray设置默认值:setDefault获取默认值:getDefault获取形容:getDecription查看所给选项是否是以后这个:equalsconsole/command/output/Ask.php属性:stty、shell、input、output、question构造方法:__construct执行:run未知:doAsk未知:autocomplate未知:getResponse未知:validateAttempts显示问题的提示信息:writePrompt未知:getShell未知:hasSttyAvailableconsole/command/output/Descriptor.php属性:output、形容:describe输入内容:write形容参数:describeInputArgument形容选项:describeInputOption形容输出:describeInputDefinition形容指令:describeCommand形容控制台:describeConsole输入:writeText格式化:formatDefaultValue未知:getColumnWidth未知:calculateTotalWidthForOptions打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

January 2, 2022 · 1 min · jiezi

关于thinkphp:20211231thinkphp源码无差别阅读九

thinkphp源码无差别浏览(九)framework浏览console/Table.php常量:ALIGN_LEFT、ALIGN_RIGHT、ALIGN_CENTER属性:header、headerAlign、rows、cellAlign、colWidth、style、format设置表头信息:setHeader设置表格数据和对齐形式:setRows设置单元格对齐形式:setCellAlign查看列显示宽度:checkColWidth减少一行表格:addRow设置表格输入款式:setStyle输入分隔行:renderSeparator输出表头:renderHeader获取输入款式:getStyle输入表格:renderconsole/command/Clear.php配置指令:configure执行:execute革除:clear判断缓存是否过期:cacheHasExpiredconsole/command/Help属性:command配置:configure设置要获取帮忙的指令:setCommand执行:executeconsole/command/Lists.php配置:configure获取定义:getNativeDefinition执行:execute创立定义:createDefinitionconsole/command/Make.php属性:type获取模板:getStub配置:configure执行:execute生成类内容:buildClass获取文件名称:getPathName获取类名称:getClassName获取命名空间:getNamespaceconsole/command/RouteList.php属性:sortBy配置:configure执行:execute获取路由列表:getRouteListconsole/command/RunServer.php配置:configure执行:executeconsole/command/ServiceDiscover.php配置:configure执行:executeconsole/command/VerdorPublish.php配置:configure执行:handleconsole/command/Version.php配置:configure执行:executeconsole/command/make/stubs下模板模板:自定义命令、api控制器、空控制器、资源控制器、事件、事件监听、中间件、模型、服务、事件订阅、验证器cosole/command/make/Command.php属性:type配置:configure生成类内容:buildClass获取模板:getStub获取命名空间:getNamespaceconsole/command/make/Controller.php属性:type配置:configure获取模板:getStub获取类名称:getClassName获取命名空间:getNamespaceconsole/lcommand/make/Event.php属性:type配置:configure获取模板:getStub获取命名空间:getNamespaceconsole/lcommand/make/Listener.php属性:type配置:configure获取模板:getStub获取命名空间:getNamespace获取命名空间:getNamespaceconsole/lcommand/make/Middleware.php属性:type配置:configure获取模板:getStub获取命名空间:getNamespace获取命名空间:getNamespaceconsole/lcommand/make/Model.php属性:type配置:configure获取模板:getStub获取命名空间:getNamespace获取命名空间:getNamespaceconsole/lcommand/make/Service.php属性:type配置:configure获取模板:getStub获取命名空间:getNamespace获取命名空间:getNamespaceconsole/lcommand/make/Subscribe.php属性:type配置:configure获取模板:getStub获取命名空间:getNamespace获取命名空间:getNamespaceconsole/lcommand/make/Validate.php属性:type配置:configure获取模板:getStub获取命名空间:getNamespace打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

January 1, 2022 · 1 min · jiezi

关于thinkphp:20211230thinkphp源码无差别阅读八

thinkphp源码无差别浏览(八)framework浏览console/Command.php属性:console、name、processTitle、aliases、definition、help、description、ignoreValidationErrors、consoleDefinitionMerged、consoleDefinitionMergedWithArgs、synopsis、usages、input、output、app构造方法:__construct疏忽验证谬误:ignoreValidationErrors设置控制台:setConsole获取控制台:getConsole设置app:setApp获取app:getApp是否无效:isEnabled配置指令:configure执行指令:execute用户验证:interact初始化:initialize执行指令:run合并参数定义:mergeConsoleDefinition设置参数定义:setDefinition获取参数定义:getDefinition获取以后指令的参数定义:getNativeDefinition增加参数:addArgument增加选项:addOption设置指令名称:setName设置过程名称:setProcessTitle获取指令名称:getName设置形容:setDescription获取形容:getDescription设置帮忙信息:setHelp获取帮忙:getHelp形容信息:getProcessedHelp设置别名:setAliases获取别名:getAliases获取简介:getSynopsis增加用户:addUsage获取用户:getUsage验证指令名称:validateName输入表格:tableconsole/Input.php属性:definition、options、arguments、interactive、tokens、parsed构造方法:__construct设置token:setTokens绑定实例:bind解析参数:parse解析短选项:parseShortOption解析短选项:parseShortOptionSet解析残缺选项:parseLongOption解析参数:parseArgument增加短选项:addShortOption增加残缺选项:addLongOption获取第一个参数:getFirstArgument判断是否有选项:hasParameterOption获取选项:getParameterOption验证输出:validate查看输出是否是交互的:isInterActive设置输出交互:setInterActive获取所有参数:getArguments获取参数:getArgument设置参数:setArgument判断是否有参数:hasArgument获取所有选项:getOptions获取选项:getOption设置选项:setOption判断是否有选项:hasOption本义指令:escapeToken返回传递给命令的参数:__toStringconsole/Output.php常量:VERBOSITY_QUIET、VERBOSITY_NORMAL、VERBOSITY_VERBOSE、VERBOSITY_VERY_VERBOSE、VERBOSITY_DEBUG、OUTPUT_NORMAL、OUTPUT_RAW、OUTPUT_PLAIN、属性:verbosity、handle、styles构造方法:__construct未知:ask、askHidden、confirm、choice、askQuestion输入空行:newLine输入信息并换行:writeln输入信息:write渲染异样:renderException设置输入信息级别:setVerbosity获取输入信息级别:getVerbosity判断是否不输入:isQuiet判断是否一般输入:isVerBose判断是否详情输入:isVeryVerbose判断是否调试:isDebug未知:describe、__call打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 30, 2021 · 1 min · jiezi

关于thinkphp:20211229thinkphp源码无差别阅读七

thinkphp源码无差别浏览(七)framework浏览View.php属性:namespace、data、filter、获取模板引擎:engine模板变量赋值:assign试图过滤:filter解析和获取模板内容:fetch渲染内容输入:display获取模板渲染内容:getContent模板变量赋值:__set获取模板变量:__get监测是否有模板变量:__isset未知:resolveConfig获取默认驱动:getDefaultDrivercache/Driver.php属性:handler、readTimes、writeTimes、options、tag获取有效期:getExpireTime获取理论缓存标识:getCacheKey读取缓存并删除:pull追加缓存:push追加缓存:append获取缓存,如果不存在则写入:remember获取缓存标签:tag获取标签蕴含的缓存标识:getTagItems获取理论标签名:getTagKey序列化:serialize反序列化:unserialize获取句柄对象:handler获取读取缓存次数:getReadTimes获取写入缓存次数:getWriteTimes读取缓存:getMultiple写入缓存:setMultiple删除缓存:deleteMultiple动静办法条用:__callcache/TagSet.php属性:tag、handle构造方法:__construct写入缓存:set追加缓存标识到标签:append写入缓存:setMultiple如果不存在则写入:remember革除缓存:clearcache/driver/File.php属性:options构造方法:__construct获取变量的存储文件名:getCacheKey获取缓存数据:getRaw判断缓存是否存在:has读取缓存:get写入缓存:set自增缓存:inc自减缓存:dec删除缓存:delete革除缓存:clear删除缓存标签:clearTag删除文件:unlink删除文件夹:rmdircache/driver/Memcache.php属性:options构造方法:__construct判断是否有缓存:has读取缓存:get写入缓存:set自增缓存:inc自减缓存:dec删除缓存:delete革除缓存:clear删除缓存标签:clearTagcache/driver/Memcached.php属性:options构造方法:__construct判断是否有缓存:has读取缓存:get写入缓存:set自增缓存:inc自减缓存:dec删除缓存:delete革除缓存:clear删除缓存标签:clearTagcache/driver/Redis.php属性:options构造方法:__construct判断是否有缓存:has读取缓存:get写入缓存:set自增缓存:inc自减缓存:dec删除缓存:delete革除缓存:clear删除缓存标签:clearTag追加缓存:append获取标签蕴含的缓存标识:getTagItemscache/driver/Wincache.php属性:options构造方法:__construct判断是否有缓存:has读取缓存:get写入缓存:set自增缓存:inc自减缓存:dec删除缓存:delete革除缓存:clear删除缓存标签:clearTag打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 29, 2021 · 1 min · jiezi

关于thinkphp:20211228thinkphp源码无差别阅读六

thinkphp源码无差别浏览(六)framework浏览Service.php属性:app构造方法:__construct加载路由:loadRoutesFrom注册路由:registerRoutes增加指令:commandsSession.php属性:namespace设置驱动:createDriver获取配置:getConfig未知:resolveConfig获取默认驱动:getDefaultDriverValidate.php属性:type、alias、rule、message、field、typeMsg、currentScene、defaultRegex、filter、scene、error、batch、failException、only、remove、append、regex、db、lang、request、maker构造方法:__construct设置服务注入:maker设置Lang对象:setLang设置Db对象:setDb设置Request对象:setRequest增加验证规定:rule注册验证规定:extend设置验证规定的默认提示信息:setTypeMsg设置提示信息:message设置验证场景:scene是否有验证场景:hasScene设置批量验证:batch设置验证失败抛出异样:failException指定须要验证的字段:only移除验证规定:remove追加验证规定:append测验数据:check依据验证规定验证数据:checkRule验证单个字段规定:checkItem获取以后验证类型及规定:getValidateType是否统一规定:confirm是否不同规定:diffrent大于等于规定:egt大于规定:gt小于等于规定:elt小于规定:lt相等规定:eq必须规定:must无效格局:is获取图片类型:getImageType验证表单令牌:token验证域名和ip:activeUrl验证ip:ip验证文件后缀:checkExt验证文件大小:checkSize验证文件类型:checkMime验证文件后缀:fileExt验证文件类型:fileMime验证文件大小:fileSize验证图片宽高以及类型:image验证工夫和日期格局:dateFormat验证唯一性:unique应用filter_var验证:filter验证等于某个值:requireIf应用回调验证:requireCallback验证某个字段有值的时候,必须:requireWith验证某个字段没有值的时候,必须:requireWithout验证在范畴之内:in验证不在范畴之内:notIn验证在之间:between验证不在之间:notBetween验证数据长度:length验证数据最大值:max验证数据最小值:min验证日期在之后:after验证日期在之前:before验证日期在之后:afterWith验证日期在之前:beforeWith验证有效期:expire验证容许的ip:allowIp验证禁止ip:denyIp应用正则验证:regex获取谬误:getError获取数据的值:getDataValue获取验证规定谬误提示信息:getRuleMsg获取验证规定谬误提示信息:parseErrorMsg错误信息数组解决:errorMsgIsArray获取验证场景:getScene动静办法,间接调用is办法进行验证:__call打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 28, 2021 · 1 min · jiezi

关于thinkphp:20211227thinkphp源码无差别阅读五

thinkphp源码无差别浏览(五)framework浏览Response.php属性:data、contentType、chatset、code、allowCache、options、header、content、cookie、session、初始化:init创立Response对象设置session对象:setSession发送数据到客户端:send解决数据:output输入数据:sendData设置输入的参数:options设置输入数据:data设置申请缓存:allowCache是否容许申请缓存:isAllowCache设置cookie:cookie设置响应头:header设置content:content设置状态码:code设置lastmodified:lastModified设置expires:expires设置eTag:eTag设置缓存管制:cacheControl设置页面输入类型:contentType获取头部信息:getHeader获取原始数据:getData获取输入数据:getContent获取状态码:getCodeRoute.php属性:rest、config、app、request、ruleName、host、group、bind、domains、cross、lazy、isTest、mergeRuleRegx、removeSlash构造函数:__construct初始化:init获取配置:config设置提早解析:lazy设置测试模式:setTestMode是否测试模式:isTest设置合并解析:mergeRuleRegx初始化默认域名:setDefaultDomain设置以后分组:setGroup获取分组:getGroup注册变量规定:pattern注册路由参数:option注册域名路由:domain获取域名:getDomains获取ruleName:getRuleName设置路由绑定:bind获取路由绑定:getBind读取路由绑定:getDomainBind获取路由标识:getName批量导入路由标识:import注册路由标识:setName保留理由规定:setRule读取路由规定:getRule读取路由列表:getRuleList清空路由规定:clear注册路由规定:rule设置无效跨域路由规定:setCrossDomainRule注册路由分组:group注册路由:any注册get路由:get注册post路由:post注册put路由:put注册delete路由:delete注册patch路由:patch注册options路由:options注册资源路由:resource注册试图路由:view注册重定向路由:redirectrest定义和批改:rest获取rest定义的参数:getRest注册miss路由:miss路由调度:dispatch检测路由:check获取pathinfo:pathurl解析:url监测域名路由规定:checkDomainurl生成:buildUrl设置全局路由分组参数:__call打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 27, 2021 · 1 min · jiezi

关于thinkphp:20211226thinkphp源码无差别阅读四

thinkphp源码无差别浏览(四)framework浏览Middleware.php属性:queue、app构造方法:__construct导入中间件:import注册中间件:add注册路由中间件:route注册控制器中间件:controller注册中间件到开始地位:unshift获取所有中间件:all调度广告:pipeline完结调度:end移除解决:handleException解析中间件:buildMiddleware中间件排序:sortMiddleware获取中间件优先级:getMiddlewarePriorityPipeline.php属性:passable、pipes、exceptionHandler初始数据:send调用栈:through执行:then设置异样处理器:whenException未知:carry异样解决:handleExceptionRequest.ph属性:pathinfoFetch、varPathinfo、varMethod、varAjax、varPjax、rootDomain、httpsAgentName、proxyServerIp、proxyServerIpHeader、method、domain、host、subDomain、panDomain、url、baseUrl、baseFile、root、pathinfo、path、realIp、controller、action、param、get、post、request、rule、route、middleware、put、session、cookie、env、server、file、header、mimeType、content、filter、input、secureKey、mergeParam构造函数:__construct自定义实例化:__make设置域名:setDomain获取域名:domain获取以后根域名:rootDomain设置子域名:setSubDomain获取子域名:subDomain设置泛域名:setPanDomain获取泛域名:panDomain设置url:setUrl获取url:url设置以后url:setBaseUrl获取url:baseUrl获取以后执行的文件:baseFile设置url拜访根地址:setRoot获取url跟地址:root获取url根目录:rootUrl设置以后pathinfo:setPathinfo获取以后pathinfo:pathinfo获取拜访后缀:ext获取以后请去工夫:time以后申请资源的类型:type设置资源类型:mimeType设置申请类型:setMethod获取申请类型:method是否get:isGet是否post:isPost是否put:isPut是否delete:isDelete是否head:isHead是否patch:isPatch是否options:isOptions是否cli:isCli是否cgi:isCgi获取申请参数:param获取所有参数:all设置路由:setRule获取路由:rule设置路由:setRoute获取路由:route获取get参数:get获取中间件参数:middleware获取post参数:post获取put参数:put获取参数:getInputData获取delete参数:delete获取patch参数:patch获取参数:request获取环境变量:env获取session:session获取cookie:cookie获取server:server获取上传文件:file解决上传文件:dealUploadFile抛出异样:throwUploadFileException设置或者获取header:header获取参数:input过滤数据:filterData类型转换:typeCast获取数据:getData设置或者获取过滤规定:filter获取过滤规定:getFilter递归过滤:filterValue判断是否有参数:has获取指定的参数:only排除指定的参数:except是否ssl:isSsl是否json:isJson是否ajax:isAjax是否pjax:isPjax获取客户ip:ip是否非法ip:isValidIpip转化为二进制:ip2bin是否手机拜访:isMobile获取scheme:scheme获取query参数:query设置host:setHost获取host:host获取port:port获取protocol:protocol近程端口:remotePort获取contentType:contentType获取以后平安key:secureKey设置以后控制器:setController设置以后操作:setAction获取控制器:controller获取办法:action设置或者获取content:getContent获取以后的php://input:getInput生成申请令牌:buildToken查看申请令牌:checkToken设置中间件传递数据:withMiddleware设置get数据:withGet设置post数据:withPost设置cookie数据:withCookie设置session:withSession设置server:withServer设置header:withHeader设置env:withEnv设置input:withInput设置上传文件:withFiles设置路由变量:withRoute设置中间件传递数据:__set获取中间件传递数据:__get判断中间件数据:__isset数据式拜访:offsetSet、offsetGet、offsetExists、offsetUnset打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 26, 2021 · 1 min · jiezi

关于thinkphp:20211225-thinkphp源码无差别阅读三

【2021/12/25】thinkphp源码无差别浏览(三) framework浏览Http.php属性:app、name、path、routePath、isBild构造方法:__construct设置利用名称:name获取利用名称:getName设置利用目录:path获取利用目录:getPath获取路由目录:getRoutePath设置路由目录:setRoutePath设置利用绑定:setBind判断利用是否绑定:isBind执行应用程序:run初始化利用:initialize执行用于程序:runWithRequest路由调度:dispatchToRoute加载全局中间件:loadMiddleware加载路由:loadRoutes上报异样:reportException渲染异样:renderException申请完结:endLang.php属性:config、lang、range构造方法:__construct自定义实例化:__make设置以后语言:setLangSet获取以后语言:getLangSet获取默认语言:defaultLangSet加载语言:load解析语言文件:parse判断是否有语言配置项:has获取语言配置:get主动设置获取以后语言:detect保留以后语言设置到cookie:saveToCookieLog.php常量:emergency、alert、critical、error、warning、notice、info、debug、sql属性:namespace获取默认驱动:getDefaultDriver获取日志配置:getConfig获取渠道配置:getChannelConfig获取渠道实例:channel获取渠道类型:resolveType创立驱动:createDriver获取驱动配置:resolveConfig清空日志:clear敞开日志写入:close获取日志信息:getLog保留日志信息:save记录日志:record写入日志:write注册日志写入事件:listen记录日志:log记录emergency:emergency记录alert:alert记录critical:critical记录error:error记录warning:warning记录notice:notice记录info:info记录debug:debug记录sql:sql魔术办法:__callManager.php属性:app、drivers、namespace构造方法:__construct获取驱动实例:driver获取驱动实例:getDriver获取驱动类型:resolveType获取驱动配置:resolveConfig获取驱动类:resolveClass获取驱动参数:resolveParams创立驱动:createDriver移除驱动:forgetDriver获取默认驱动:getDefaultDriver动静调用:__call打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 25, 2021 · 1 min · jiezi

关于thinkphp:20211224thinkphp源码无差别阅读二

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自定义实例化:__make注入模型对象:modelMaker设置配置对象:setConfig获取配置:getConfig设置Event对象:setEvent注册事件:event触发事件:triggerEnv.php属性:data构造方法:__construct加载环境变量文件:load获取环境变量值:get获取环境变量值:getEnv设置环境变量值:set判断环境变量:has魔术办法:__set、__get、__isset数组式拜访:offsetSet、offsetExists、offsetUnset、offsetGetEvent.php属性:listener、bind、app构造方法:__construct批量注册事件监听:listenEvents注册事件监听:listen判断工夫监听:hasListener移除事件监听:remove指定事件别名:bind注册事件订阅:subscribe主动注册事件观察者:observe触发事件:trigger触发事件(只容许一个返回值):until执行事件调度:dispatchException.php属性:data设置异样额定数据:setData获取异样额定数据:getDataFacade.php属性:alwaysNewInstance创立实例:createFacade获取facade对应的类名:getFacadeClass实例化以后facade:instance获取类的实例:make调用实例类的办法:__callStaticFile.php属性:hash、hashName构造方法:__construct获取文件hash:hash获取文件md5:md5获取文件sha1:sha1获取文件类型信息:getMime挪动文件:move实例化一个新文件:getTargetFile获取文件名:getName文件扩展名:extension主动生成文件名:hasNameFilesystem.php属性:namespace获取磁盘:disk获取磁盘类型:resolveType获取磁盘配置:resolveConfig获取磁盘配置:getConfig获取磁盘配置:getDiskConfig获取默认驱动:getDefaultDriver打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 24, 2021 · 1 min · jiezi

关于thinkphp:thinkphp源码无差别阅读一

thinkphp源码无差别浏览(一)thinkphp的framework源码大略165个文件,咱们不依照逻辑剖析浏览源码,咱们一个文件一个文件浏览,浏览完当前有个大略理解,而后在运行逻辑下进行浏览framework浏览App.php浏览常量:VERSION-定义框架版本号属性:$appDebug、envName、beginTime、beginRem、namespace、rootPath、thinkPath、appPath、runtimePath、routePath、configExt、initializers、services、initialized、bind构造方法:__construct注册服务:register执行服务:bootService获取服务:getService设置调试模式:debug是否调试模式:isDebug设置利用命名空间:setNamespace获取利用命名空间:getNamespace设置环境变量标识:setEnvName获取框架版本:version获取利用根目录:getRootPath获取利用根底魔力:getBasePath获取以后利用目录:getAppPath设置利用目录:setAppPath获取利用运行目录:getRuntimePath设置利用运行目录:setRuntimePath获取框架外围目录:getThinkPath获取利用配置目录:getConfigPath获取配置后缀:getConfigExt获取用于开启工夫:getBeginTime获取利用初始内存占用:getBeginRem加载环境变量:loadEnv初始化利用:initialize是否初始化:initialized加载语言包:loadLangPack疏导援用:boot加载利用文件和配置:load调试模式设置:debugModeInit注册利用事件:loadEvent解析利用类名:parseClass是否在命令行下运行:runningInConsole获取利用根目录:getDefaultRootPathCache.php浏览属性:namespace获取默认驱动:getDefaultDriver获取缓存配置:getConfig获取驱动配置:getStoreConfirm未知:resolveType未知:resolveConfig连贯获取切换缓存:store清空缓存池:clear读取缓存:get写入缓存:set删除缓存:delete读取缓存:getMultiple写入缓存:setMultiple删除缓存:deleteMultiple判断缓存是否存在:has缓存标签:tagConfig.php浏览属性:config、path、ext构造方法:__construct未知:__make加载配置文件:load解析配置文件:parse判断配置是否存在:has获取一级配置:pull获取配置:get设置配置:setConsole.php浏览属性:app、commands、wantHelps、catchExceptions、autoExit、definition、defaultCommand、defaultCommands、startCallbacks构造方法:__construct初始化:initialize结构request:makeRequest增加初始化器:starting清空启动器:flushStartCallbacks设置执行用户:setUser启动:start加载指令:loadCommands未知:call执行以后指令:run执行指令:doRun设置输出参数:setDefinition获取输出参数:getDefinition获取帮忙:getHelp是否捕捉异样:setCatchException是否主动退出:setAutoExit获取残缺版本号:getLongVersion增加指令集:addCommands增加指令:addCommand获取指令:getCommand判断指令是否存在:hasCommand获取所有的命名空间:getNamespaces查找命名空间的名称或缩写:findNamespace查找指令:find获取所有指令:all配置输入输出:configurateIO执行指令:doRunCommand获取指令的根底名称:getCommandName获取默认输出:getDefaultInputDefinition获取倡议:getAbbreviationSuggestions返回命名空间局部:extractNamespace查找可代替倡议:findAlternatives返回所有命名空间:extractAllNamesapcesContainer.php属性:instance、instances、bind、invokeCallback获取以后容器实例:getInstance设置以后容器实例:setInstance注册一个容器对象回调:resolving获取容器中的对象实例:pull获取容器中的对象实例:get绑定类、闭包、对象、接口到容器:bind依据别名获取类实在的名字:getAlias绑定一个类实例到容器:instance判断容器中是否存在类和标识:bound判断容器中是否存在类和标识:has判断容器中是否存在类和标识:exists创立类实例,单例:make删除容器中的对象实例:delete执行函数或者闭包:invokeFunction执行反射类的办法:invokeMethod执行反射类的办法:invokeReflectMethod调用反射执行callable:invoke调用反射,执行类的实例化:invokeClass执行invokeClass回调:invokeAfter绑定参数:bindParams创立工厂对象实例:factory获取对象类型的参数值:getObjectParam魔术办法和数组是拜访:__set、__get、__isset、__unset、offsetExists、offsetGet、offsetSet、offsetUnset、count、getIterator打算浏览[ ] framework源码 [ ] orm源码 [ ] helper源码 留言点击留言

December 18, 2021 · 1 min · jiezi

关于thinkphp:独立thinkphp323中Image操作

参考thinkphp3.2.3中Image操作 https://www.kancloud.cn/manua... 不依赖任何框架 个别状况下都会装置gd库 须要Imagick请装置 https://pecl.php.net/package/... 装置composer require whereof/think-image实例化类库$image = new \whereof\ThinkImage\Image();默认应用GD库进行图像操作,如果须要应用Imagick库操作的话,须要改成: $image = new \whereof\ThinkImage\Image(\Think\Image::IMAGE_IMAGICK); // 或者采纳$image = new \whereof\ThinkImage\Image('Imagick');图像操作上面来看下根底的图像操作性能的应用办法。 关上图像文件假如以后入口文件目录上面有一个1.jpg文件 应用open办法关上图像文件进行相干操作: $image = \whereof\ThinkImage\Image(); $image->open('./1.jpg');也能够简化成上面的形式: $image = new \whereof\ThinkImage\Image(\whereof\ThinkImage\Image::IMAGE_GD,'./1.jpg'); // GD库// 或者$image = new \whereof\ThinkImage\Image(\whereof\ThinkImage\Image::IMAGE_IMAGICK,'./1.jpg'); // imagick库获取图像信息能够获取关上图片的信息,包含图像大小、类型等,例如: $width = $image->width(); // 返回图片的宽度$height = $image->height(); // 返回图片的高度$type = $image->type(); // 返回图片的类型$mime = $image->mime(); // 返回图片的mime类型$size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度裁剪图片应用crop和save办法实现裁剪图片性能。 //将图片裁剪为400x400并保留为corp.jpg$image->crop(400, 400)->save('./crop.jpg');反对从某个坐标开始裁剪,例如上面从(100,30)开始裁剪: //将图片裁剪为400x400并保留为corp.jpg$image->crop(400, 400,100,30)->save('./crop.jpg');生成缩略图应用thumb办法生成缩略图 // 依照原图的比例生成一个最大为150*150的缩略图并保留为thumb.jpg$image->thumb(150, 150)->save('./thumb.jpg');能够反对其余类型的缩略图生成,设置包含\whereof\ThinkImage\Image的下列常量或者对应的数字: ...

December 11, 2021 · 1 min · jiezi

关于thinkphp:在-Thinkphp-应用程序中记录-HTTP-请求

这个包增加了一个中间件,能够将传入的申请记录到默认日志中。 如果在用户申请期间呈现任何问题,您依然能够拜访该用户发送的原始申请数据。 装置您能够通过 composer 装置软件包: composer require whereof/think-http-logger配置文件config/http-logger.php内容: <?phpreturn [ /* * The log profile which determines whether a request should be logged. * It should implement `LogProfile`. */ 'log_profile' => \whereof\think\HttpLogger\LogNonGetRequests::class, /* * The log writer used to write the request to a log. * It should implement `LogWriter`. */ 'log_writer' => \whereof\think\HttpLogger\DefaultLogWriter::class, /* * The log channel used to write the request. */ 'log_channel' => env('LOG_CHANNEL', 'file'),];控制器中应用use whereof\think\HttpLogger\Middlewares\HttpLogger;class Index extends BaseController{ protected $middleware =[ HttpLogger::class ]; public function index() { return 'test HttpLogger'; }}路由中应用Route::get('think', function () { return 'hello,ThinkPHP6!';})->middleware(\whereof\think\HttpLogger\Middlewares\HttpLogger::class);全局app/middleware.php<?php// 全局中间件定义文件return [ ...... \whereof\think\HttpLogger\Middlewares\HttpLogger::class];日志记录两个类用于解决传入申请的日志记录:LogProfile 类将确定是否应记录申请,LogWriter 类将申请写入日志。 ...

December 5, 2021 · 1 min · jiezi

关于thinkphp:thinkphp6速查手册

申请变量use think\facade\Request;Request::param('name');Request::param();全副申请变量 返回数组Request::param(['name', 'email']); 多个变量Request::param('a','1') $a不存在应用默认值1Request::param('username','','strip_tags'); 参数过滤 去掉html标签 htmlspecialchars转换成实体入库 strtolower小写Request::header(); 申请头数组,反对单个 cookieinput("name");Request::session();获取 $_SESSION 变量Request::cookie();获取 $_COOKIE 变量Request::server();获取 $_SERVER 变量Request::env();返回env数组Request::file();获取 $_FILES 变量Request::baseUrl(); /index/indexRequest::host(true); 域名:www.baidu.com,默认无参数蕴含端口:80Request::url(1); 残缺域名和地址 http://www.baidu.com:80/index/indexRequest::domain(1) http://www.baidu.comRequest::time() 申请工夫戳Request::app() 利用名 indexRequest::controller() 控制器 Index 参数true小写Request::action() 操作 index 参数true 小写Request::method(true); 申请类型获取 GETisGet isPost isPut isDelete isAjax isMobile isHead 判断是否某种类型Request::has('id','get'); 检测变量id是否存在响应$data=['code'=>200,'msg'=>'胜利','data'=>['中国']];json($data);jsonp($data);xml($data);redirect('http://www.thinkphp.cn');redirect('/index/hello/name'); //站内跳转download('./static/2.xlsx'); 下载路由Route::get('new/<id>','News/read'); // 定义GET申请路由规定Route::post('new/<id>','News/update'); // 定义POST申请路由规定Route::put('new/:id','News/update'); // 定义PUT申请路由规定Route::delete('new/:id','News/delete'); // 定义DELETE申请路由规定Route::any('new/:id','News/read'); // 所有申请都反对的路由规定->allowCrossDomain();跨域url生成url('index/hello', ['id'=>5,'name'=>'李白'],'do'); http://www.baidu.com/index/hello/李白.do?id=5url('index/hello#aa'); 锚点数据库操作use think\facade\Db;$rs =Db::name('user')->where('id',1)->find(); 查问一条记录 name不含前缀$rs =Db::table('ims_user')->where('sex', 2)->select(); 多条数据 table含前缀$rs1 =Db::name('user')->where('id', 1)->value('name'); 查问某个字段值$rs =Db::table('ims_user')->where('sex', 2)->column('name,id','id'); 返回name,id列,前面是key$userId = Db::name('user')->insertGetId($data);//插入数据返回idDb::name('user')->limit(100)->insertAll($data); 插入多条数据,分每次100Db::name('user')->where('id', 1)->update(['name' => 'thinkphp']); 更新Db::table('think_user')->delete(1);Db::table('think_user')->delete([1,2,3]);Db::table('think_user')->where('id',1)->delete();Db::name('user')->delete(true);//清空数据where('id','<>',1) 不等于1 > >= like where("id=:id and username=:name", ['id' => 1 , 'name' => 'thinkphp'])field('id,title,content') 指定字段limit(10,25) 第十条开始25条 单数字返回数据条数page(1,10) 第一页十条order(['id'=>'desc','sex'=>'desc']) 排序group('user_id,test_time') 分组count() max('id') min() avg() sum() 聚合函数whereTime('birthday', '>=', '1970-10-1') 反对< = whereTime('create_time','-2 hours') 查问2小时whereBetweenTime('create_time', '2017-01-01', '2017-06-30') 查问时间段whereYear('create_time') 往年 whereYear('create_time','2018') last year 去年whereMonth('create_time') last month上月 2018-06 具体月份whereWeek('create_time') last week 上周whereDay('create_time')明天 yesterday昨天 2018-11-1具体Db::query("select * from think_user where status=1"); 原生查问Db::execute("update think_user set name='thinkphp' where status=1");//更新插入删除Db::query("select * from think_user where id=? AND status=?", [8, 1]);//绑定$list = Db::name('user')->where('status',1)->paginate(10); 分页每页10条缓存操作Cache::set('name', $value, 3600); 1小时后过期Cache::get('name'); 获取缓存多缓存类型配置return [ // 缓存类型为File 'type' => 'redis', // 全局缓存有效期(0为永恒无效),开发下肯定要设置-1 否在刷新后 还在 'expire'=> -1, // 缓存前缀 'prefix'=> 'think', // 缓存目录 'host' => '127.0.0.1',];return [ // 应用复合缓存类型 'type' => 'complex', // 默认应用的缓存 'default' => [ // 驱动形式 'type' => 'file', // 缓存保留目录 'path' => '../runtime/default', ], // 文件缓存 'file' => [ // 驱动形式 'type' => 'file', // 设置不同的缓存保留目录 'path' => '../runtime/file/', ], // redis缓存 'redis' => [ // 驱动形式 'type' => 'redis', // 服务器地址 'host' => '127.0.0.1', ],];use think\facade\Cache;Cache::store('file')->set('name','123',0);$v = Cache::store('redis')->get('name'); Cache::store('default')->get('name');文件缓存Cache::delete('name');Cache::clear();Cache::set('name', [1,2,3]);Cache::push('name', 4);Cache::remember('start_time', time()); 不存在则创立Cache::inc('name',1); 自增1Cache::dec('name',1); 自减1$redis = Cache::handler(); redis对象配置redis sessionreturn [ 'type' => 'redis', 'prefix' => 'think', 'auto_start' => true, // redis主机 'host' => '127.0.0.1', // redis端口 'port' => 6379, // 明码 'password' => '',]session('name', ['thinkphp']); 设置反对字符串 数组session('name');获取session('name', null);删除session(null);清空cookie操作 设置不反对数组,序列化后存储cookie('name');cookie('name', null);cookie('think_lang','en-us');//设置语言类型数据验证think\facade\Validate$rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email',];$msg = [ 'name.require' => '名称必须', 'name.max' => '名称最多不能超过25个字符', 'age.number' => '年龄必须是数字', 'age.between' => '年龄只能在1-120之间', 'email' => '邮箱格局谬误',];$data = [ 'name' => 'thinkphp', 'age' => 10, 'email' => 'thinkphp@qq.com',];$validate = Validate::rule($rule)->message($msg);$result = $validate->check($data);if(!$result) { dump($validate->getError());}

July 24, 2021 · 2 min · jiezi

关于thinkphp:ThinkPHP里无法输出图片-设置响应头

明天写了一个PHP生成图片,想用浏览器查看,然而每次关上都是一串乱码,看样子是图片源二进制数据,而后查看了下响应头是text/html,那我明明设置了image/jpeg header("Content-type", "image/jpeg");这阐明TP默认设置了text/html,查了官网文档,啥也没说,去网上查,才晓得TP有个Response类,默认所有控制器输入text/html,官网文档啥也没说,只好本人去翻Response这个类了 ThinkPHP6\vendor\topthink\framework\src\think\Response.php基类Response被这几个类继承,我试了下File类,然而这个File是输入文件,浏览器间接下载了 $file = new File('123.jpg');$response = $file->mimeType('image/jpeg');throw new HttpResponseException($response);在看看基类Response /** * 创立Response对象 * @access public * @param mixed $data 输入数据 * @param string $type 输入类型 * @param int $code 状态码 * @return Response */ public static function create($data = '', string $type = 'html', int $code = 200): Response { $class = false !== strpos($type, '\\') ? $type : '\\think\\response\\' . ucfirst(strtolower($type)); return Container::getInstance()->invokeClass($class, [$data, $code]); }这里是主动找response目录下的响应类,但我只想设置一个响应头来显示我的图片,文档翻遍了没找到办法,而后看了看目录下的Html类,那咱们能够本人写一个自定义类来输入本人想要的响应格局 ...

August 22, 2020 · 1 min · jiezi