介绍介绍福哥今天要带着大家给TFPHP框架的TFModel对象进行一次大的改造,福哥要给TFModel的数据读取环节增加一个缓存层,通过这一层缓存提高系统的整体运行效率。缓存层,其实就是数据副本,在开发里面我们称之为冗余数据,它就是将数据库里的数据取出来之后放到一个高速读写介质里面存储一份。这样以后再读取数据的时候可以优先从高速读写介...
介绍介绍今天福哥带着大家给TFPHP框架的TFDO对象添加一个很棒的方法——upsert。所谓的upsert其实是两个单纯融合到一起的一个伪单词,这两个单词分别为update和insert,这是两个完全不同的操作,那么upsert方法如何将这两个操作结合到一起的呢?首先我们了解一下upsert的最终目的,它的最终目的就是要保证数据表当...
介绍介绍今天福哥带着大家给TFPHP框架的TFModel对象添加一个很棒的方法——upsert。看过前一课的童鞋应该已经了解了,这里福哥再介绍一下。所谓的upsert其实是两个单纯融合到一起的一个伪单词,这两个单词分别为update和insert,这是两个完全不同的操作,那么upsert方法如何将这两个操作结合到一起的呢?首先我们了解...
介绍介绍福哥的TFUMS项目的配置文件其实就是一个PHP程序文件,使用PHP程序文件作为项目的配置文件虽然更加灵活,但是感觉上差一点。Java项目使用XML作为项目的配置文件,XML格式可以容纳更复杂的配置参数,阅读起来也很清晰,但是PHP读取XML格式的文档有点先天不足,XML格式无法转换为PHP的数组,而且PHP解析XML格式的效...
介绍介绍上一课福哥带着大家使用TFPHP框架给TFUMS项目的标签模块的增加了回收站功能,标签可以设置子级标签,子级标签又可以设置孙级标签,但是我们的标签管理列表无法体现这样的特点。今天福哥要给标签功能增加一个面包屑功能,当我们切换到子级标签、孙级标签的时候可以通过面包屑上面的标签信息知道当前所处的标签层级位置,这个功能需要用到标签的...
介绍介绍上一课福哥带着大家使用TFPHP框架给TFUMS项目增加了全套的标签模块的增、删、改、查功能,标签的删除功能福哥使用的是状态删除方式而不是物理删除方式,为的就是那些误删除的标签可以通过恢复功能找回来,今天福哥要带着大家来实现这个恢复功能。标签模块的恢复功能和删除功能相对的,删除功能是把标签状态改为T_STATE_LOCKED,...
介绍介绍福哥今天要把TFPHP框架开发的标准CRUD功能的方法整理一遍,我们以TFUMS系统为基础,给TFUMS项目增加一个标签功能,就是可以给用户打标签的功能。福哥会把标签模块的增、删、改查功能的开发方法逐个讲解给大家听~~结构模型WEB-APP/Model/tag.inc.php控制器WEB-APP/Controller/admi...
介绍介绍福哥在将TFLinux的PHP+Apache的组合转换成PHP+FPM+Nginx的过程里遇到了一个问题,就是无法通过默认方式安装GD库。通过上网去查询发现人家说php7.4开始编译GD库的方式变了,然后给出了一个错误的Dockerfile示例(福哥非常确定那个示例是错的),你大爷的你知道旧的方式不好使了,你丫倒是给一个好使的...
介绍介绍福哥在用Python去读PHP语言开发的项目的数据库的时候,发现一些字段里存储的居然是经过PHP的serialize函数序列化过的数据,这个要解开它通过json库是不行的了,怎么办呢?原来Python专门有个库用来模拟PHP语言的serialize和unserialize的功能,它就是phpserialize库。安装phpse...
介绍介绍福哥今天要带着大家完成修改个人资料表单的功能。修改个人资料表单和注册、登录表单不同,它不仅仅是将用户填写的数据提交到服务器,还要在进入修改个人资料表单的时候将上一次填写的内容展示到表单里面。也就是说,用户可以修改其中一部分,也可以什么都不修改,用户需要知道每个表单项自己曾经填写的数据是什么。将用户填写的表单数据提交到服务器这部...
介绍介绍今天福哥带着大家来把会员中心(就是开放给登录用户的功能集中管理模块)的基础框架搭建一下。所谓的基础框架包括了会员中心的导航菜单,还有每个已知功能页面的视图模型以及功能页面的基本权限控制。这里面有个问题,就是首页应该是公开的(任何人都可以访问),而会员中心里面的功能则必须有用户登录才能操作,并且有用户登录之后login和regi...
介绍介绍福哥今天要继续制作TFUMS系统的用户登录状态的功能,上一课我们已经完成了用户登录状态的接口的开发,今天我们的目的就是要在页面上根据这个用户登录状态显示不同的界面内容,让用户可以了解到自己当前是否已经登录了。用户登录状态有两种使用场景,第一种就是在后台进行判断的,这种场景属于在后端发现用户没有登录就会直接拦截并采取措施(例如:...
介绍介绍今天福哥要带着大家做一些系统级别的调整,我们带着一个问题去了解这个系统级别的调整需要做哪些事情,今天的课程有一定难度,大家要仔细听了~~首先,我们需要在每个用户网页上面判断当前浏览器有没有用户已经登录过了,如果有登录则显示登录才能看到的内容,否则就要显示未登录状态的信息。那么如果判断登录这个逻辑在每个页面都写一遍的话,想一想都...
介绍介绍福哥今天就带着大家完成TFUMS系统的登录功能,为什么登录功能不分几集?因为在注册功能开发的过程中我们已经把表单需要准备的工具和接口都弄好了,所以今天在制作登录功能的时候一集就可以做完了。登录功能就是检验用户输入的用户名和密码是否正确,如果用户名和密码是正确的,就建立一个token。这个token里包含这登录用户的信息,但是一...
介绍介绍今天福哥打算使用TFPHP框架的TFSafeCode对象给我们的TFUMS系统的注册功能增加验证码功能,大家可以通过这个注册功能的验证码功能了解到验证码是怎么一回事、验证码的工作原理以及验证码在表单当中的作用和价值。验证码简单说就是:防止机器人模拟用户操作表单的安全防护措施。也就是说,我们给表单增加验证码机制的目的仅仅是为了避...
介绍介绍福哥今天要带着大家给我们的TFPHP框架添加一个工具对象TFSafeCode,这个工具对象是用来生成验证码和校验验证码的。验证码大家都很熟悉了,就是在诸如:注册、登录等等重要的操作时候除了表单自有的项目之外还会有一个验证码项目,这个验证码五花八门什么样式的都有,其目的就是防止黑客使用机器人模拟用户来操作这个表单。今天福哥要在T...
介绍介绍福哥今天要带着大家开发TFUMS系统的注册功能的处理程序了。这个处理程序会调用模型user的add方法进行创建用户的操作,模型user的add方法会先检查用户名是否被占用了,如果没有被占用才能进一步完成创建用户的操作,否则会报错。如果处理程序报错的话,会返回错误码和错误信息。这个错误码需要我们定义好,一般情况下错误码一个是7位...
介绍介绍Redis是一款使用内存作为存储介质的数据库。大家应该都知道,计算机最快的单元是CPU,较次之的单元就是内存,再其次才是固态硬盘,最后是传统的物理硬盘。现如今大部分笔记本电脑和台式机都已经开始采用固态硬盘作为主要存储介质了,但是服务器领域传统的物理硬盘还是主流的(毕竟几百G、甚至几个T的巨大容量固态硬盘成本太高了)。所以,Re...
介绍介绍今天我们开始开发用户管理系统项目的第一课——需求分析。需求分析就是要得出用户管理系统都包括哪些模块,这些模块是由哪些模型组成的,这些模型又拥有哪些属性,这些模型同时具有哪些功能,最后这些模型之间的关系。首先用户管理系统的主体肯定是用户,那么用户模块是一定会有的了。而说到用户模块一定会有的模型就是用户模型。接着用户模型包括的属性...
介绍介绍今天福哥将带着大家完成日志对象TFLog的逻辑部分,这个TFLog对象的逻辑相对比较简单。首先通过系统配置设置日志保存路径、日志文件名称、日志格式等等。然后建立不同级别的专用方法用来保存这个级别的日志信息。最复杂的莫过于解析日志格式带入环境参数这一节了,要使用正则表达式进行模式匹配替换。最后就是通过写入文件的函数将解析过的日志...
介绍介绍福哥今天要给大家介绍的是web框架里面非常重要的一个部分——日志模块,在web项目开发过程中日志作为了解项目运行状况的工具是极其重要的。没有日志的话,系统运行出现问题我们无从下手去解决问题,只能盲猜或者重构,很显然我们不能这样做。有了日志我们就可以根据日志里记录的出现问题时候的“现场”情况进行问题的分析,从而快速找到诱使问题出...
介绍介绍福哥更新了TFPHP框架的TFModel模型对象的insert、update、delete、upsert逻辑,适应了改造过的TFDO对象对应方法。福哥将insert、update、delete、upsert几个主要方法的参数都设计成一样的了,都是通过实体对象数据来进行操作的了。TFModeladdTable参数$keystri...
介绍介绍福哥更新了TFPHP框架的TFDO数据库操作对象的insert、update、delete逻辑,优化了编译SQL语句的逻辑,执行速度会更快。同时福哥还重写了upsert方法的逻辑,改为先SELECT目标数据,再判断结果,有数据就UPDATE,没有数据就INSERT。TFDO这是TFPHP框架的数据库操作对象,名字空间是TFPH...
介绍介绍福哥在阅读一些“老外”写的PHP代码的时候发现了一些比较奇怪的语法,他们会使用self或static作为new关键字的对象名称,这个到底是什么意思啊??self()self字面意思是“自己”,那么是不是self()就是只代码所在的对象自己呢?普通对象代码class TFUser{
 ...
介绍介绍我们都知道使用ES搜索文档的时候可以通过from和size进行文档数据的“翻页”处理,但是如果你的索引里面的文档超过了10000个的话,再使用这样的方式去实现数据翻页就会得到如下的错误:Result window is too larg e, from + size must be less than or equal to:...
介绍介绍福哥为了提高前面通过Dockerfile制作的镜像的通用性,把配置文件的位置整理出来了。一个软件包括三大部分,1)数据;2)日志;3)配置;前面福哥已经把数据和日志都整理出来了,可以通过数据卷将软件的数据和日志映射到宿主机上面,现在福哥再把软件的配置文件也映射到宿主机上面,这样一来镜像里面就只剩下软件的运行环境了,我们可以把软...
介绍介绍大家根福哥学会了使用Dockerfile创建Docker镜像的技巧了,那么我们现在搭建服务器环境就不需要再去下载软件的源代码了,也不需要编译安装了,更加不用操心软件和操作系统的各种兼容问题了。今天福哥带着大家先安装php的环境,基于微服务思维一个Docker里面只安装最基本的软件即可,之所以要选择fpm版本的PHP环境是因为a...
介绍介绍福哥今天带着大家学习一下使用PHP操作Elasticsearch搜索引擎的方法,虽然我们的TFLinux早就安装了Elasticsearch搜索引擎了,但是还没有应用用到Elasticsearch搜索引擎,福哥打算先给TFPHP框架增加操作Elasticsearch搜索引擎的支持。从github上面搜了一下,发现官方提供了一个...
介绍介绍大家根福哥学会了使用Dockerfile创建Docker镜像的技巧了,那么我们现在搭建服务器环境就不需要再去下载软件的源代码了,也不需要编译安装了,更加不用操心软件和操作系统的各种兼容问题了。今天福哥带着大家先安装php的环境,基于微服务思维一个Docker里面只安装最基本的软件即可,而单独的php能做的事情不多,还是需要一个...
介绍介绍福哥打算使用Docker方式安装最新版本的PHP环境,从hub上面查到了几个版本,包括cli、fpm、apache和zts,这几个版本有什么区别呢?福哥应该如何选择呢?今天福哥就带着大家把这几种PHP的运行模式好好地属性一下。CLICLI就是Command Line Interface的简写,也就是说就是在命令行里使用PHP程...