
php
ltx06
这个作者很懒,什么都没留下…
展开
-
tp6多级控制器路由优化
项目需求:因为项目开发有版本控制。在tp5的时候,可以通过配置// 自动搜索控制器'controller_auto_search' => true来实现可以通过version/controller/action 来访问,并且不用每写一个功能都写一个路由但是,tp6的时候,不存在这样的设置了,在网上搜索了一圈,普遍的要么通过 version.controller/action 来访问,要么直接修改源码我感觉还是不满意,捣腾了下,终于解决了:思路:本质上就是将 v.原创 2021-08-21 12:23:22 · 1373 阅读 · 0 评论 -
字符串解析为if的判断条件(实现简单的字符串运算)
该方法适合所有的编程语言背景:想用字符串来当作if的条件,想用在auth权限管理里面虽然,php的evel()函数可以实现;但是,毕竟不安全,那就自己实现一个简单的吧!目标:支持以下运算符:>=><=<==!=&&||支持中文缺点:不支持括号,所以我称之为简单的实现<?php// $str就是要运算的字符串// $data就是数据库查询出来的数据数组// 如果只想要直接运算$str的,而原创 2021-08-02 11:42:19 · 1821 阅读 · 0 评论 -
在Windows命令行窗口中输入并运行PHP代码片段(不需要php文件)的方法
有时候只是简单的为了测试某个PHP函数的效果,以前总是需要建一个php文件,复制这个文件的路径,再通过web访问或者用php命令执行这个php文件。一直想要怎么才能不用创建文件,才能直接执行PHP代码片段呢?终于找到了方法,现在分享出来,给有需要的人。前提:1. 本文只是说Windows下的情况。其他操作系统也类似,但略有不同。2. 必需已经安装好了php,并设置好了环境变转载 2017-05-27 17:15:14 · 425 阅读 · 0 评论 -
PHP数组foreach逆序输出,php数组倒序
简单的一个php数组函数,之前没这个需要一直都不知道有这么一个函数,擦汗...php数组逆序输出代码foreach(array_reverse($array) AS $key=>$value){ echo $value.''; } array_reverse(PHP 4, PHP 5)array_reverse — 返回一个单元顺序转载 2017-05-10 10:46:06 · 12158 阅读 · 0 评论 -
浅谈PHP接收POST数据方式
通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP接收用户POST到服务器的数据,并进行适当的处理。但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用$_POST来识别,那又该如何处理呢?$_POST方式接收数据$_POST方式是通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。如使用$_POST['name']就转载 2017-08-18 11:05:26 · 768 阅读 · 0 评论 -
深入php-fpm的两种进程管理模式详解
php-fpm的两种进程管理模式php-fpm的进程数也是可以根据设置分为动态和静态的。一种是直接开启指定数量的php-fpm进程,不再增加或者减少;另一种则是开始的时候开启一定数量的php-fpm进程,当请求量变大的时候,动态的增加php-fpm进程数到上限,当空闲的时候自动释放空闲的进程数到一个下限。这两种不同的执行方式,可以根据服务器的实际需求来进行调整。这里先说一下涉及转载 2017-09-15 09:29:18 · 378 阅读 · 0 评论 -
PHP mcrypt加密扩展使用总结
在开发中,很多时候我们在前后端交互中需要对一些敏感数据进行一定的加密。PHP中有提供了mcrypt的这样一个加密扩展实现对数据的加密解密。一、mcrypt扩展的安装 在低版本的PHP中需要在配置文件php.ini中显式添加对扩展的引用,同时要保证扩展引用目录中有相应的扩展文件;在高版本的PHP中,Windows下似乎默认开启了mcrypt的扩展,既不需要在配置文件php.ini中做配置,转载 2017-11-18 16:00:48 · 2670 阅读 · 0 评论 -
windows上phpstudy配置memcache
总的来说,分两步:同时安装memcached软件服务和安装php_memcache扩展一、安装memcached软件服务1、下载服务端memcached软件32bit:memcached-win32-1.4.4-14.zip(单击直接下载)64bit: memcached-win64-1.4.4-14.zip(单击直接下载)下载解压,随便将文件夹放在什么位置,比如:D:原创 2017-11-21 02:50:23 · 7774 阅读 · 1 评论 -
PHP 命名空间与自动加载机制介绍
include 和 require 是PHP中引入文件的两个基本方法。在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 require 堆积。这样的代码既不优雅,执行效率也很低,而且维护起来也相当困难。为了解决这个问题,部分框架会给出一个引入文件的配置清单,在对象初始化的时候把需要的文件引入。但这只是让代码变得更简洁了转载 2017-12-11 17:02:27 · 2157 阅读 · 0 评论 -
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
大家可能都用过in_array来判断一个数据是否在一个数组中,一般我们的数组可能数据都比较小,对性能没什么影响,所以也就不会太在意。但是如果数组比较大的时候,性能就会下降,运行的就会久一点,那如果针对在大数组情况下做优化呢,下面说两种方法(都是通过自定义函数来实现):1.数组key与value翻转,通过isset判断key是否存在于数组中复制代码代码如下:转载 2017-04-24 17:24:04 · 1090 阅读 · 1 评论 -
PHP中in_array函数使用的问题与解决办法
先介绍一下需求背景:发票方式:0=捐赠(不要问我为什么,历史原因)1=对中寄送2=索取3=电子发票现在要对用户提交的数据进行检测:php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ throw new Exception('请选择转载 2017-04-24 17:20:15 · 346 阅读 · 0 评论 -
遭遇php的in_array低性能问题
PHP的性能一直在提高。然而,若是用的不恰当,或是一个不留神,还是可能会踩到PHP内部实现方面的坑的。我在前几天的一个性能问题上就碰到了。 事情是这样子的,一位同事反馈我们的一个接口每次返回需要5秒之久,我们一起review了代码,“惊喜”的发现居然在循环(大约900次)中调用了一个读缓存的操作,而这个缓存的key并没有改变,因此我们把这段代码移到了循环外面,再测,接口返回时间降到了2秒,转载 2017-04-24 17:18:12 · 501 阅读 · 0 评论 -
php socket 和 html5 websocket 通讯
window下 运行方式 将以下cmd命令 保存到文本 另存为 cli .bat 文件 ,双击运行。[plain] view plain copyD:\php7\php.exe E:\www\Server_socket.php PHP 服务器 代码转载 2017-05-03 17:58:27 · 4603 阅读 · 0 评论 -
PHP SOCKET编程
1. 预备知识 一直以来很少看到有多少人使用PHP的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实php的socket模块可以做很多事情,包括做ftplist,http post提交,smtp提交,组包并进行特殊报文的交互(如smpp协议),whois查询。这些都是比较常见的查询。特别是php的socket扩展库可以做的事情简直不会比转载 2017-05-03 17:52:19 · 449 阅读 · 0 评论 -
MD5 校验两个文件是否一样
1、简介MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。 在Linux或Unix上,md5sum是用来计算和转载 2017-04-13 21:09:06 · 16984 阅读 · 0 评论 -
php中判断某个IP地址是否存在范围内
其实真正实现判断IP地址范围很简单的,一行代码就搞定了,看如下我写的案例你就懂了:[php] view plain copy//案例:判断192.168.1.127是否在 (192.168.1.1--192.168.1.255)的范围里面 $ip_start = get_iplong('192.168.1.1');转载 2017-04-12 14:02:57 · 3782 阅读 · 0 评论 -
PHP 正则表达式 匹配 中文
if(preg_match("/[\x{4e00}-\x{9fa5}]+/u", $str)){ //提示:内容不允许出现中文!}另外,注意下preg_match 和 preg_match_all 的区别原创 2017-03-28 16:31:20 · 557 阅读 · 0 评论 -
PHP设置会话(Session)超时过期时间实现登录时间限制
最近某个PHP项目用到了限制登录时间的功能,比如用户登录系统60分钟后如果没有操作就自动退出,我搜索了网络收集了有以下方法可供参考。第一种方法即设置php.ini配置文件,设置session.gc_maxlifetime和session.cookie_lifetime节点属性值,当然也可以使用ini_set函数改变当前上下文环境的属性值:ini_set('session.gc_maxli转载 2017-02-27 23:12:21 · 36985 阅读 · 0 评论 -
php自定义排序uasort
项目需要风险排序,按 I(安全)由于H排在I的前面,所以不能直接用sort来排序,要自定义。用uasort()函数来自定义排序:/* * 二维数组按指定键值排须 */function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序//按 I<L<M<H 排序 $arr_nums=$arr原创 2017-02-09 15:55:58 · 1683 阅读 · 0 评论 -
php几点PSR基本代码规范
小驼峰法:第一个单词首字母小写,除第一个单词之外,其他单词首字母大写。(小写开头的驼峰命名规范)大驼峰法:相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。(大写开头的驼峰命名规范)类的命名必须遵循大写开头的驼峰命名规范;类中的常量所有字母都必须大写,单词间用下划线分隔;方法命名必须遵循小写开头的驼峰命名规范;变量(属性)可以采用小驼峰法或大驼原创 2017-12-11 22:32:00 · 1550 阅读 · 0 评论 -
php 命名空间 和 自动加载机制 的简单理解
namespace 只是创建并命名一个空间use 只是导入一个命名空间namespace 、use 和加载文件没有关联,和require、require_once、include、include_once没有关联namespace 是为了 use ,use 是为了 自动加载机制;而namespace命名必须符合PSR4规范,即命名空间和文件路径要相对应原创 2017-12-12 19:20:38 · 3108 阅读 · 0 评论 -
PHP自动加载功能原理解析
这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能、PHP的命名空间、PHP的PSR0与PSR4标准等内容。一、PHP自动加载功能PHP自动加载功能的由来在PHP开发过程中,如果希望从外部引入一个 class,通常会使用 include 和 require 方法,去把定义这个 class 的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型转载 2017-12-07 01:29:06 · 1716 阅读 · 0 评论 -
PHP strlen和mb_strlen的区别
先看案例:echo mb_internal_encoding();echo "<br/>";$str="D.C is 中国人"; //echo strlen($str);echo "<br>";echo mb_strlen($str,"utf-8"); echo "<br/>";echo mb_strlen转载 2018-11-19 15:33:36 · 2156 阅读 · 0 评论 -
array_walk_recursive把多维数组里面的所有键值和键名都取出来
取键名: array_walk_recursive($contentArr, function ($value, $key) use (&$result) { array_push($result, $key); });取键值: array_walk_recursive($contentArr, function ($value,...原创 2018-11-19 11:39:45 · 2468 阅读 · 0 评论 -
json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES
php格式化json的函数json_encode($value,$options)其中有2个比较常用到的参数JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256)JSON_UNESCAPED_SLASHES (不转义反斜杠,对应的数字 64)通常json_encode只能传入一个常量,如果同时使用2个常量怎么办?JSON_UNESCAPED_UN...转载 2018-10-08 11:42:53 · 5619 阅读 · 1 评论 -
PHP将上传图片自动放缩到指定分辨率,保持清晰度
class AutoImage{ private $image; public function resize($src, $width, $height){ //$src 就是 $_FILES['upload_image_file']['tmp_name'] //$width和$height是指定的分辨率 //如果想按指定比例放...原创 2018-08-13 11:42:09 · 3586 阅读 · 0 评论 -
PHP中this,self,parent三个关键字
this,self,parent三个关键字从字面上比较好理解,分别是指这、自己、父亲。this是指向当前对象的指针(姑且用C里面的指针来看吧)self是指向当前类的指针parent是指向父类的指针(我们这里频繁使用指针来描述,是因为没有更好的语言来表达) 根据实际的例子来看看(1) thisclass UserName{ //定义成员属性 ...转载 2018-07-30 20:25:17 · 1616 阅读 · 2 评论 -
Homestead 安装需要知道的一些信息
链接如果你看这篇文章的目的是 Homestead 安装加速的话,二话不说,到百度盘先找最新版本的下载:http://pan.baidu.com/s/1hrN55w4 ,一边下载一边再来看这个文章。Homestead 环境部署脚本 - 使用此脚本来构造 Homestead box 的Homestead 主项目 repo - Homestea 是一个 Vagrant 项目Homestead 文档Vag...转载 2018-02-26 09:50:32 · 1605 阅读 · 0 评论 -
PHP在定界符里用变量和常量
在定界符里用变量注意点:如果变量前有\号 或者 变量是在定界符里面新声明的,要在变量前多加一个\作转义符在定界符里用常量:先在定界符外,将要用的常量赋值给变量,然后在定界符里面用变量即可原创 2018-01-10 15:52:40 · 3682 阅读 · 0 评论 -
php 内置的 web 服务器
从 PHP 5.4.0 起,PHP内置了Web服务器,这对于认为需要Apache或Nginx才能预览PHP应用的开发者来说又是一个隐藏功能。这个内置的Web服务器不应该用于生产环境,但对于本地开发来说是个极好的工具。Laravel Valet 起初就是使用这个内置的服务器,但是在1.1.0版本后将其替换为Caddy(查看相关新闻)。1、启动这个内置的Web服务器很容易启动,转载 2017-12-29 17:21:49 · 12537 阅读 · 4 评论 -
phpstudy 自定义php版本
在有些时候,比如用laravel的时候,phpstudy上的php低版本(小于5.6)不支持,高版本(大于7.0)又要安装VC11或14运行库。。。这都不是最麻烦的,最麻烦的是,由于先前安装了vscode2017,附带安装了2017最新版的VC运行库(大概是安装了vscode2017才会附带的吧),然后我去官网下VC14(即Visual C++ Redistributable for Vi原创 2018-01-09 17:07:08 · 3829 阅读 · 3 评论 -
学习php反射(2)——不用new方法实例化类
上一篇简单介绍了 php 反射的几个常见类的使用方法,但是用反射能做些什么,你可能还是想象不到,下面我稍微应用反射类来做点东西,大家知道实例化一个类需要用new 关键字,不用 new 可以吗?答案是可以的,用反射就能实现:首先创建一个文件 student.php:class Student{ public $id; public $name; p转载 2017-12-29 16:52:08 · 6618 阅读 · 0 评论 -
学习PHP反射(1)—— 入门
今天开始学习php 的反射,许多人可能还没有听说过反射这个概念,简单点说反射的就是让你拥有剖析类、函数的能力。有的同学可能会问我剖析类有什么用,我为什么要学反射,我只能说不学反射并不会对你实现业务有任何影响,但是如果你想写出结构优雅的程序,想写出维护性和扩展性都很高的程序,学习反射是必不可少的。PHP 内置了一组反射类来实现类的反射,常用的有:ReflectionCla转载 2017-12-29 16:50:40 · 1570 阅读 · 0 评论 -
php的闭包(Closure)匿名函数详解
php的闭包(Closure)也就是匿名函数,是PHP5.3引入的。闭包的语法很简单,需要注意的关键字就只有use,use是连接闭包和外界变量。$a = function() use($b) {}简单例子如下:function callback($fun) {$fun();}$msg = "Hello, ev转载 2017-12-29 17:33:32 · 1964 阅读 · 0 评论 -
现代 PHP 新特性 —— 闭包和匿名函数
1、概述闭包和匿名函数在PHP 5.3.0中引入,这两个特性非常有用,每个PHP开发者都应该掌握。闭包是指在创建时封装周围状态的函数,即使闭包所在的环境的不存在了,闭包中封装的状态依然存在。匿名函数其实就是没有名称的函数,匿名函数可以赋值给变量,还能像其他任何PHP函数对象那样传递。不过匿名函数仍然是函数,因此可以调用,还可以传入参数,适合作为函数或方法的回调。转载 2017-12-29 17:30:10 · 1677 阅读 · 0 评论 -
学习php反射(3)——一个依赖注入的例子
先看代码:if (PHP_SAPI != 'cli') { exit('Please run it in terminal!');}if ($argc 3) { exit('At least 2 arguments needed!');}$controller = ucfirst($argv[1]) . 'Controller';$action = 'acti转载 2017-12-29 16:53:26 · 1525 阅读 · 0 评论 -
call_user_func 反射 new区别
使用call_user_func函数,通过传入字符串函数,可以调用自定义函数,并且支持引用。 1.mixed call_user_func ( callable callback[,mixedparameter [, mixed $… ]] )调用第一个参数提供的自定义函数,后面的参数为自定义函数的参数,返回自定义函数的结果function say($word) { ech转载 2017-12-29 16:48:45 · 1646 阅读 · 0 评论 -
composer 自动载入的简单理解
psr4 :结合命名空间自动加载(前提是要加载的类指定了命名空间,即有namespace,否则找不到)"APP\\":"application/"表示APP命名空间对应application目录(只针对类文件,类文件必须包含有命名空间,后缀必须是.php)classmap:自动加载指定文件(前提是后缀是.php或.inc) 或 自动加载指定文件夹里面所有.ph原创 2017-12-17 22:58:31 · 1611 阅读 · 0 评论 -
composer 自动载入的四种方式
Composer 是PHP的一个包依赖管理工具,类似Ruby中的RubyGems或者Node中的NPM,它并非官方,但现在已经非常流行。此文并不介绍如何使用Composer,而是关注于它的autoload的内容吧。对于第三方包的自动加载,Composer提供了四种方式的支持,分别是 PSR-0和PSR-4的自动加载,生成class-map,和直接包含files的方式。首先引转载 2017-12-16 15:25:26 · 5164 阅读 · 0 评论 -
PHP 二维数组 按任意键值排序
function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序,默认升序 $arr_nums=$arr=array(); foreach($array as $k=>$v){ $arr_nums[$k]=$v[$key]; } if($order=='asc'){原创 2016-12-20 16:42:15 · 469 阅读 · 0 评论