介绍介绍今天福哥将带着大家完成日志对象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程...
介绍介绍福哥今天带着大家学习一下使用PHP操作MongoDB数据库的方法,虽然我们的TFLinux早就安装了MongoDB数据库了,但是还没有应用用到MongoDB数据库,福哥打算先给TFPHP框架增加操作MongoDB数据库的支持。PHP操作MongoDB数据库有两个库,最早直接使用mongo扩展就可以操作MongoDB了,但是最新...
介绍介绍今天开始我们来学习各种语言操作数据库的技巧,根据福哥学习编程的顺序,我们先来将PHP语言操作数据库的技巧。因为相对强大又免费的数据库只有MySQL了,所以我们这里只讲解各种语言操作MySQL数据库的方法,其他数据库福哥会在后面给逐步给大家讲解。PHP有很多版本,在PHP4的时代大家一般是通过php_mysql库来操作MySQL...
介绍介绍php7.4.6是一个划时代的产品,它让php对于强类型编程的支持度提升到了前所未有的的高度,不仅仅支持函数参数强类型,还支持函数返回值强类型,甚至对象属性也都支持强类型了在这样的环境下编写php是非常舒服的,一写复杂的功能也可以通过php来实现了,可靠性比着前面的版本要强太多了基本信息安装环境CentOS:CentOS Li...
介绍介绍福哥最近在把一部分功能从PHP转入Java里面,在处理PHP的序列化(Serialize)数据的时候遇到了问题,经过一番折腾找到了一个在Java里实现序列化的功能的第三方库。现在,福哥将这个库的使用方法交给大家!!依赖首先导入phprpc的依赖库<dependency>
&nb...
介绍介绍福哥今天要教给大家学会给自己的程序代码签名,签名的作用通常情况下是为了告诉使用我们的代码的人这个程序的原作者是谁。除此之外,签名还会把程序代码的版权协议告诉使用代码的人,不过在国内基本上除了特别出名的框架、插件、库会引起使用者的注意外,其他开源的程序代码基本没有人会在意版权问题~~无论如何,给我们的程序代码增加签名,至少可以帮...
介绍介绍今天开始福哥要给大家讲解关于字符编码的知识,所谓字符编码就是将一个字符串或者是一个二进制字节数组里面的每一个字符根据一定的规则替换成一个或者多个其他字符的过程。字符编码的意义有很多种,有的是为了将一些不可见的字符以可见字符替代保证可见度;有的是为了以少数字符去描述更多的其他字符便于传递数据;还有的是为了将不定长的字符串转成定长...
介绍介绍上一课童鞋们和福哥学习了TFPHP的响应对象TFRespnose涉及到的一些知识,包括:响应状态、响应数据类型、响应数据长度等等,在响应对象里面我们要对这些数据进行管理控制。这里面响应状态包含非常多的可选状态信息,所以福哥将响应状态封装了一个新对象TFResponseStatus。然后响应数据类型和响应数据长度相对比较简单,福...
介绍介绍今天我们来讲讲响应对象TFResponse,它也是系统级别的对象,它负责视图的输出。也就是说用户在浏览器上看到的一些网页内容都是通过TFResponse响应对象输出出来的。输出数据包括很多属性,如:响应数据类型、响应数据大小、服务器信息、服务器指令等等。响应对象TFResponse首先我们先建立TFResponse这个响应对象...
介绍介绍上一课大家已经跟着福哥了解了用户请求的基本知识了,今天我们就来把这个用户请求对象的功能实现了。因为用户请求包含很多输入数据,我们需要对每一个数据进行实体化,也就是说为它们建立独立的实体对象。在PHP语言里面这些输入数据都是以全局数组形式存在的,所以我们在建立这些实体对象的时候又可以使用相同的基类。基于这些分析结果,福哥会建立这...
介绍介绍福哥今天要带着大家完成一个系统级别的对象——请求对象TFRequest,这个对象会完成所有根用户请求相关的功能。而从用户请求里我们主要是要获取“输入数据”,输入数据包括QUERY参数、POST参数、服务器环境参数、客户端环境参数等等。请求对象TFRequest首先我们先建立请求对象TFRequest,程序文件保存在System...
介绍介绍隔了几天时间,福哥终于有时间了继续推进我们的TFPHP框架的进程了。今天我们继续设计模型模块,上一课我们已经完成了TFDO对象的设计,有了数据连接能力之后就可以进行模型对象TFModel的基本架构的设计了。大家都知道,模型对象TFModel是用来读取/写入数据的,所以我们需要在TFModel里面进行TFDO对象的初始化操作。但...
介绍介绍我们的TFPHP已经实现了路由TFRouter、控制器TFController、模型TFModel的模块的实现,同时我们还将php的数据库操作对象PDO扩展封装到了我们自己的对象TFDO里面。目前的TFPHP已经可以足够支持完成一般网站、小型平台的开发框架了。今天福哥会解决TFPHP的加载问题,大家都发现了,每次我们建立了新的...
介绍介绍今天我们来完成数据库操作对象TFDO的设计和实现,TFDO是基于PDO扩展开发的,所以我们需要在环境里面配置PDO扩展,使用TFLinux的童鞋们就省去了这个步骤,因为福哥已经带着大家配置了PDO扩展了。有的童鞋可能会有疑问,既然PDO可以实现对数据库的操作,我们为什么不直接使用PDO对象而非要基于它封装一个TFDO对象呢?难...
介绍介绍上一课大家跟福哥学会了在我们的TFLinux系统上面安装Kafka软件,今天福哥要带着大家学习使用PHP去操作Kafka消息系统的方法。PHP操作Kafka需要借助rdkafka库,我们可以在github上面下载到源代码进行安装。因为rdkafka是作为PHP扩展部署的,所以我们不需要重新编译PHP环境。安装下载下载librd...
介绍介绍开发一个网站需要考虑几个问题,首先就是编程语言,其次就是开发框架,最后还需要考虑模板引擎。编程语言这里我们自然是PHP语言了;开发框架就是编写网站后端功能模块的基础框架,这里福哥选择的是TFPHP框架;最后的模板引擎,就是在制作用户界面所使用的处理模块,也就是MVC架构里面说的视图,这里福哥就要引出今天的主角Smarty了。S...
介绍介绍今天福哥要带着童鞋们设计TFPHP的模型模块TFModel对象的设计,模型模块的职能就是对数据进行存储和读取,存储数据都是在一些外部介质上进行的,诸如:数据库,文件,内存等等。也就是说,模型模块需要连接这些外部介质的能力,说直白些就是模型模块需要可以连接MySQL,可以连接Redis,可以连接ElasticSearch等等外部...
介绍介绍今天福哥会带着大家实现接口控制器的逻辑以及它和路由模块的结合部分的逻辑,实现了这部分功能之后,就可以开发响应AJAX请求的接口了。接口控制器一般情况下是采用JSON作为传输数据的格式的,所以这里面会用到php自带的两个函数json_encode和json_decode。当然,除了JSON格式外,接口还会有XML数据格式以及自定...
介绍介绍今天福哥会带着大家实现网页控制器的逻辑以及它和路由模块的结合部分的逻辑,实现了这部分功能之后,每个用户的请求就会映射到具体的程序文件上面了。上一课我们提到过网页控制器需要借助Smarty这个模板扩展实现,所以我们需要先下载最新版本的Smarty模板扩展包,把它安装到我们的TFPHP里面。由于Smarty是第三方的代码,福哥打算...
介绍介绍福哥今天要带着大家完成控制器模块TFController对象的设计,控制器模块是web框架的核心模块之一,它负责管理控制网站数据,需要高度的兼容性和高度的灵活性,便于开发者进行高效地开发工作。设计控制器模块比路由模块要复杂许多,因为控制器模块有很多能力需要我们一个一个实现,今天我们就先把这些能力一个一个地列出来,逐一的设计它们...