PHP
蓝冰大侠
上个世纪遗存的老兵,转战PB,Java,Delphi,最后主攻PHP.自创屠龙术:icePHP框架,注重软件产品可扩展性,可持续维护性在产品功能与实现成本之间寻找平衡点通过合理的组织结构,整合初中级开发人员开发大型软件产品。.QQ:31008088
展开
-
[原] 关于PSR
总述,共0-18 个规范第一部分: 废弃或未通过的 包括 PSR 0, PSR 5, PSR 8, PSR 9, PSR 10, PSR 14第二部分: 关于编码风格 包括 PSR 1, PSR 2, PSR 4, PSR 12 . 一定要一起看. 这里的风格要求, 只要你使用了合适的代码编辑器,比如PHPStorm, 有自动代码格式化功能,就都可以. 如果...原创 2019-12-13 15:35:38 · 506 阅读 · 0 评论 -
icePHP框架使用文档-控制器提供的功能
说明所有控制器都应该直接或间接继承 SController $this->$header常用的 HTML头$this->$module当前模块名称$this->$controller当前控制器名称$this->$action当前动作名称原创 2018-02-01 09:42:31 · 257 阅读 · 0 评论 -
icePHP框架开发文档-调试信息类-SDebug
类名称:SDebug,调试功能类功能:为框架提供开发期的调试信息功能,如:运行时长,内存占用,SQL访问等.使用说明:禁止实例化,不单例依赖:SRequest::isAjax,判断当前是否是Ajax模式以便相应处理调试信息STemplate::display以显示调试信息模板SConfig读取配置start()记录开始时间原创 2018-01-29 14:37:56 · 293 阅读 · 0 评论 -
icePHP框架开发文档-缓存工厂类-SCache
类名称:SCache,调试功能类功能:生成具体缓存类的工厂使用说明:禁止实例化,不单例依赖:SConfiginstance($type)获取一个缓存实例$type类型:Page(页面缓存)/Data(数据缓存)/Must(必须)clearAll()清除所有缓存原创 2018-01-29 14:38:22 · 230 阅读 · 0 评论 -
icePHP框架开发文档-缓存基类-SCacheBase
类名称:SCacheBase,缓存基类功能:根据缓存介质的不同,有六个具体实现类:但功能都是一样的依赖:SCacheApc使用Apc共享内存作为缓存SCacheFile使用文件作为缓存SCacheNone无缓存,仅提供空的功能SMemcache使用memcache作为缓存SMemcached使用memcached作为缓存原创 2018-01-29 14:38:48 · 187 阅读 · 0 评论 -
icePHP框架开发文档-全局函数-global
文件名:global.function.php功能:定义一些常用的全局函数依赖:SDebug,SConfig,SCache,STable,SMongoSFrame,STemplate,SRouter,SLog,SMessagedump($vars,$label ='',$return=false)以可读格式显示变量内容lib(原创 2018-01-29 14:39:17 · 197 阅读 · 0 评论 -
icePHP框架开发文档-单一入口
说明 :框架采用单一入口模式本框架有三种使用方式一.Web请求Apache/Nginx会访问/public/index.php本文件实现:定义唯一一个常量DIR_ROOT调用SFrame::run()二.命令行执行使用PHP直接执行/system/program.php 本文件实现同样定义DIR_ROOT调用S原创 2018-01-29 14:39:44 · 180 阅读 · 0 评论 -
icePHP框架开发文档-框架核心类-SFrame
类名:SFrame,框架核心类功能:1.加载第三方类库2.定义默认加载程序3.引入全局函数库4.初始化系统配置类5.根据是否是调试模式调整是否显示错误信息6.根据是否是命令行模式,决定是否开启输出缓存7.路由解析,并派发说明:本类不被开发者使用禁止实例化,非单例要求PHP版本5.5或以上使用到$原创 2018-01-29 14:40:09 · 170 阅读 · 0 评论 -
icePHP框架开发文档-路由解析类-SRouter
类名称:SRouter,路由处理类功能:实现URL与Module/Controller/Action的双向映射使用说明:禁止实例化,非单例依赖:SConfiginit(array$mcaName,array $modules)初始化,由SFrame调用ignore($path)判断指定路径是否是需要忽略解码的路径u原创 2018-01-29 14:40:36 · 342 阅读 · 0 评论 -
icePHP框架开发文档-访问请求类-SRequest
类名称:SRequest,访问请求类功能:对一次访问请求进行分析,提供各种请求中的细节信息使用说明:禁止实例化,单例虽然有构造函数,但不应使用依赖:无,甚至不依赖于SFrameinstance()获取单例对象domains($offset =null)获取域名中的分段,可以指定下标language()判断浏览器原创 2018-01-29 14:37:32 · 238 阅读 · 0 评论 -
icePHP框架开发文档-文本日志类-SLog
类名称:SLog,系统日志类功能:提供文件日志功能,为框架本身和开发人员所使用使用说明:禁止实例化,无单例依赖:依赖SConfiginit($dirRoot)初始化,由SFrame调用,设置日志根目录exception(Exception$e)记录异常日志:被SFrame使用mca()记录MCA参数异常原创 2018-01-29 14:36:44 · 199 阅读 · 0 评论 -
icePHP框架开发文档-系统配置类-SConfig
类名称:SConfig,系统配置类功能用于读取PHP格式的配置文件,提供按模块配置,按运行模式配置能力.使用说明:禁止实例化,单例依赖:无,甚至不依赖于SFramesetConfigRoot($root)设置系统配置目录由SFrame在框架初始化过程中调用setModuleConfigRoot($root)设置当前模块配置原创 2018-01-29 14:36:00 · 378 阅读 · 0 评论 -
icePHP框架使用文档-模板的使用
说明 本框架使用自定义的轻量级模板系统原始模板文件位于/program/view// 目录下或/module//view// 目录下框架会对模块进行自动编译编译结果通常位于 /run/view_c目录 下 fragment($m,$c,$a,array $params= [],$cached =7200)显示一个页面片段display原创 2018-02-01 09:43:15 · 221 阅读 · 0 评论 -
icePHP框架使用文档-数据库访问
说明1.本框架仅支持MYSQL数据库, Redis, Mongo2.不支持SQL Server, Oracle3.框架支持同时访问多台服务器上的多个数据库连接源,并允许在不同的数据源之间建立一对一映射和一对多映射4.数据源的配置请参考配置文件5.数据库配置,每一种运行模式都应有一个配置文件,名称为 /program/config/运行模式>/database.c原创 2018-02-01 09:43:43 · 207 阅读 · 0 评论 -
icePHP框架使用文档-通用表对象
开发人员可以使用全局函数table('表名') 获取一个通用表对象 表对象的常用操作:query($sql)以SQL语句发起查询操作,将父类查询结果实例为SResult对象queryHandle(SStatement $statement)返回查询语句句柄,不需要事先读取全部数据,最节省内存quer原创 2018-02-01 09:44:15 · 159 阅读 · 0 评论 -
icePHP框架使用文档-通用行对象
对象来源开发人员通常不会自行创建本对象通过表对象的row方法获得一个通用行对象通过表对象的select方法可以获取一组通用行对象 动态属性:本对象根据表的不同,会有不同的动态属性(编辑器无法自动提示)可使用对象方式或数组方式访问字段 exists($name)检查字段是否存在toRecord($recordClass)将一个SROW对象转换成原创 2018-02-01 09:44:38 · 197 阅读 · 0 评论 -
icePHP框架使用文档-通用结果集对象
对象来源开发人员通常不会自行创建本对象通过表对象的select方法可以得到一个结果集对象使用说明:本对象可以当成数组使用,也可当成对象使用数组中的每一个元素都是SRow对象 count()获取结果集的行数isEmpty()判断结果集是否为空toRecords($recordClass)将结果集对象转换成记录对象数组all()原创 2018-02-01 09:45:02 · 216 阅读 · 0 评论 -
icePHP框架使用文档-特定表对象
对象来源:框架会使用脚手架功能自动生成每个表对应的特定表对象类和特定行对象类 使用说明:单例,开发人员使用TUser::instance()来获取一个特定表对象 以表user为例,脚手架会自动创建TUserBase基类,并在其中定义一些常用属性和常量.开发人员不要在T*Base类中书写代码,当再次运行脚手架时,本类会被覆盖.脚手架会同时创建TUser类(原创 2018-02-01 09:45:28 · 169 阅读 · 0 评论 -
icePHP框架使用文档-特定行对象
对象来源:框架会使用脚手架功能自动生成每个表对应的特定表对象类和特定行对象类开发人员可以自行创建指定表的行对象 使用说明:以表user为例,脚手架会自动创建RUserBase基类,并在其中定义本表中的每一个字段为属性.开发人员不要在R*Base类中书写代码,当再次运行脚手架时,本类会被覆盖.脚手架会同时创建RUser类(如果不存在的话), 开发人员可以在原创 2018-02-01 09:45:52 · 183 阅读 · 0 评论 -
icePHP框架使用文档-特定结果集对象
对象来源:当通用行对象进行一对多关联或多对多关联后得到。特定表对象的查询操作得到。(此处尚未实现) 使用说明:本对象是通用结果集(SResult)的子类,拥有相应功能。 使用示例:1.添加//主记录$branch=newRAtBranch();$branch->load(10001); //新创建一个关联记录$newBuild原创 2018-02-01 09:46:17 · 198 阅读 · 0 评论 -
icePHP框架开发文档-跨页消息类-SMessage
类名称:SMessage,跨页消息类功能:通过Session实现跨页显示消息使用说明:禁止实例化,非单例依赖:无setError($err)记录一条错误消息setSuccess($msg)记录一条成功消息setInfo($info)记录一条提示消息getErrors()获取所有错误消息getSucces原创 2018-01-30 14:41:20 · 188 阅读 · 0 评论 -
icePHP框架开发文档-控制器基类-SController
类名称:SController,控制器基类功能:所有控制器都要从这里继承提供流程控制功能提供常用参数获取功能提供模板显示功能使用说明:由SFrame进行实例化依赖:SDebug,SRequest,SRouterSTable$header常用的 HTML头$module当前模块名称$control原创 2018-01-30 14:41:49 · 416 阅读 · 0 评论 -
PHP中的设计模式-创建型-工厂方法模式
说明: 工厂方法模式, 简单工厂模式, 静态工厂模式 这三者 都是 抽象工厂模式的简化版本, 单独针对某一方面 本模式重点表述, 具体的工厂使用不同的方式 来生产产品实现代码:<?php/** * 工厂方法模式示例 * User: 蓝冰大侠 */class CFactoryMethod extends SController{ public fu原创 2018-02-06 16:52:28 · 221 阅读 · 0 评论 -
PHP中的设计模式-简单工厂,静态工厂,工厂方法,抽象方法的关系
再次陈述:所有设计模式的核心是要满足以下需求: 当业务扩展时, 尽可能不要修改原有代码. (尤其是原来的程序员没写注释和文档的时候)静态工厂: 这个最简单. 就是把创建对象这一过程封装到工厂类中, 不再直接生成对象,而是由工厂 来生成对象. 我们只对工厂提出创建要求.而且创建过程较为简单, 一个静态方法的调用即可创建产品对象的情况下, 我们就应该采用静态工厂原创 2018-02-06 17:45:47 · 410 阅读 · 0 评论 -
PHP实现的日志收集系统
最近业务中涉及到远程服务器的日志收集需求, 出于限制技术栈扩大的想法,使用PHP进行了实现. 实现过程中有些小小需要注意的点,记录如下:1. 主动获取. 由于服务器较多, 如果使用Flume之类的架构, 需要在每台服务器上安装软件, 这就产生了运维成本 . 所以我们使用 收集端主动获取的方式. 不需要在生产者(服务端)安装软件.2.SSH连接. 每台服务器都配置了SSH连接权限,使用...原创 2018-04-18 11:22:35 · 6340 阅读 · 1 评论 -
PHP分割WordPress导出的XML文件
//定义生成的XML的大小private const XML_SIZE = 500 * 1000;//定义需要分割的XML文件private const XML_SOURCE = DIR_ROOT . 'run/media.xml';//定义输出文件的前缀private const XML_TARGET = DIR_ROOT . 'run/media-';/** * 分割W...原创 2018-04-20 09:38:47 · 384 阅读 · 0 评论 -
最简版 PHP 查询 Elasticsearch 不需 插件,第三方接口
$url="http://localhost:9200/{$indexName}/_search?";$params=[ 'size'=>$count, 'source'=>json_encode(['query' => [ 'multi_match' => [ 'query' => $keyword, ...原创 2018-06-14 18:00:55 · 2779 阅读 · 3 评论 -
[原]PHP 7 中 由于 PDO版本问题导致 的 严格类型检查错误
近期项目开发 过程中遇到一个BUG项目采用了PHP 7.1 新功能.,并进行了强制类型约束本地开发(Windows环境+PHP7.1.*),代码运行正常测试环境(Linux+PHP7.2) 运行正常正式服务器(Linux+PHP7.1) 类型错误. 经过逐步追查, 在PDO::fetch 操作中, 两个环境结果 不同数据库中的整数字段, Fetch出的数据类型分别是 i...原创 2018-11-02 14:22:04 · 618 阅读 · 0 评论 -
[原] PHP 多子进程 pcntl_fork的初步实践
近期准备在项目中使用并发消息处理, 先试用fork多子进程, 以后再研究pthreads多线程 fork有一些坑,这里记录一下 1.返回PID>0的是主进程 , 返回值=0的是子进程 , 不要弄混了. (其实差别不大)2.子进程处理完成一定要加exit/die退出,否则会继续执行主进程的后继代码3.子进程会复制主进程的全部数据,包括局部变量,全局变量,对象,并对对象进...原创 2018-12-12 15:41:26 · 741 阅读 · 0 评论 -
[原] 框架中增加了表单验证及表单回填功能
本次增强包括以下内容:1.增加了表单项的定义功能,可以对表单项进行常规检查2.增加了表单的定义 功能,可以对整个表单进行常规检查3.表单项检查和表单检查中,都允许开发人员自行编写业务代码进行进一步的检查4.使用标准的错误处理方式,将表单中的全部错误返回给前端5.用户在表单填写过程中出现错误,再次显示表单时,数据将被回填(可选)以下是示例代码,以登录为例<?...原创 2019-06-13 06:48:49 · 444 阅读 · 0 评论 -
PHP中的设计模式-创建型-静态工厂
说明 : 本模式与简单工厂模式极为相似. 区别在于,不需要实例化一个工厂对象即可创建产品.应用场景: 当创建过程较为简单时, 就使用静态工厂方法. 当创建过程较为复杂时,使用简单工厂方法. 静态工厂: 静态方法本质上是一个过程化的实现, 当创建过程几句话就能说明白的时候,就可以使用. 简单工厂:创建过程需要工厂对象大量复杂操作,使用到工厂对象的实原创 2018-02-06 16:14:05 · 216 阅读 · 0 评论 -
PHP中的设计模式-创建型-简单工厂
适用条件: 简单的说,所有的设计模式的目标都是为了以后的扩展. 当业务扩展时,尽可能少的修改原有代码. 我们知道,修改原有代码就有可能出错,会担责任的. 本模式适用于只有一种产品,但本产品可以有多种型号(版本),而且以后可能还会增加新的型号. 我们在应用中需要根据实际的情况来创建不同版本的产品对象.限制条件: 1.产品: 只有一种产品, 但可以有多个型号,并且原创 2018-02-06 15:29:19 · 187 阅读 · 0 评论 -
icePHP框架开发文档-模板解析类-STemplate
类名称:STemplate,模板解析类功能:使用自有语法对模板进行编译使用说明:禁止实例化,非单例依赖:SFrame,SCachedisplay($view= null,array $params= [])显示视图,如果需要,智能编译开发人员通常使用全局函数display作为快捷入口recompile()检查所原创 2018-01-30 14:42:14 · 271 阅读 · 0 评论 -
icePHP框架开发文档-特定行对象基类-SRecord
类名称:SRecord,特定行对象基类功能:对指定表中的一行数据进行封装使用说明:本对象只能当成对象使用框架会使用脚手架功能自动生成每个表对应的特定表对象类和特定行对象类依赖:STable,SResultSet,SRecord,SRow字段属性:每个继承本类的具体行对象类都会定义每一个字段属性常量属性:每个继承本类的具体行对象类都会定义字段名原创 2018-01-30 14:44:53 · 195 阅读 · 0 评论 -
icePHP框架开发文档-PDO语句类-SStatement
类名称:SStatement,PDO语句类功能:对PDOStatement进行封装根据各种情况的输入参数,构造用于Prepare的语句及参数表,构造完整SQL用于日志及调试使用说明:会被STable相关类进行对象化依赖:SMysql生成MYSQL专属语句$distinct= false,$fields,$where,$orde原创 2018-01-30 14:43:10 · 196 阅读 · 0 评论 -
icePHP框架开发文档-通用表类-STable
类名称:STable,通用表类功能:对表操作进行封装使用说明:开发人员进行对象化依赖:STableBase提供表的基本操作STableCached对表操作及结果进行缓存STable增强访问能力STableHook为表对象增加钩子功能SConfig读取数据库配置SRow有些查询操作返回行对象 SResult有原创 2018-01-30 14:43:38 · 167 阅读 · 0 评论 -
icePHP框架开发文档-通用行类-SRow
类名称:SRow,通用行类功能:对表中查询出的一行数据进行封装使用说明:本对象可以当成数组使用,也可当成对象使用主要由通用表对象的 row方法和 select方法生成依赖:STable动态属性:可使用对象方式或数组方式访问字段,根据表的不同,字段动态生成__construct($table,$data)给定表名和一行数据,原创 2018-01-30 14:44:06 · 777 阅读 · 0 评论 -
icePHP框架开发文档-通用结果集类-SResult
17:56类名称:SResult,通用结果集类功能:对表中查询出的多行数据进行封装使用说明:本对象可以当成数组使用,也可当成对象使用主要由 通用表对象的 select 方法生成依赖:STable__construct($tableName,array$data)给定表名和多行数组,构造一个结果集对象count()获取结果集的行数isEmpty原创 2018-01-30 14:44:28 · 258 阅读 · 0 评论 -
icePHP框架开发文档-特定结果集对象基类-SResultSet
类名称:SResultSet,特定结果集对象基类功能:对指定表中的多行数据进行封装使用说明:本对象是通用结果集(SResult)的子类,拥有相应功能框架会使用脚手架功能自动生成每个表对应的特定表对象类和特定行对象类依赖:STable,SResult,SRecord,SRow字段属性:每个继承本类的具体行对象类都会定义每一个字段属性常量属性:每原创 2018-01-30 14:45:23 · 184 阅读 · 0 评论 -
PHP中的设计模式-创建型-抽象工厂
适用条件: 简单的说,所有的设计模式的目标都是为了以后的扩展. 当业务扩展时,尽可能少的修改原有代码. 我们知道,修改原有代码就有可能出错,会担责任的. 本模式适用于产品类型确定,但生产方式会发生变化的场景. 当业务变化时,可以通过增加具体工厂来生产新型号的产品.限制条件: 1.产品: 有多个不同类型的产品(对象), 如果只有一个产品,没必要使用此模式 2.原创 2018-02-06 11:52:41 · 263 阅读 · 0 评论