PHP
科比不来it
左手代码,右手篮球。酷爱编程,痴迷技术。关注我,不迷路
展开
-
php7版本开启强类型模式校验提升项目代码可读性
PHP是世界上最好的语言,开发快是它最大的优点,凡事有利必有弊。php众所周知,PHP是弱类型语言,在传递参数时,不会检查变量的类型,再加上动态语言的特性,若是写代码不注意,很容易形成类型不符,自动转换类型,而且程序不会报错,形成数据错误和不完整。在PHP7以后,经过在文件开头用 declare(strict_types = 1) 定义强类型检验后,当函数传参类型不符时,将会抛出错误。我们加入强类型模式来看一下输出结果,代码如下:<?phpdeclare(strict_types=1);//原创 2022-01-23 17:13:18 · 574 阅读 · 0 评论 -
PHP 使用非对称加密算法(RSA)代码演示
加密的类型:在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。目前主流加密手段大致可分为单向加密和双向加密。单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:Base64,MD5,SHA;双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就像彼此约定的一串暗号。算法代表:DES,3DES,AES,IDEA,RC4,RC5;非对称加密:原创 2021-10-21 15:29:29 · 305 阅读 · 0 评论 -
PHP常用设计模式(5)装饰器模式
模式定义通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类这种方式并不可取。在面向对象的设计中,我们也应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能。装饰器模式的本质就是动态组合。动态是手段,组合才是目的。装饰这两个字,我们暂且把他变成化妆。首先你得有一张脸,然后打底,然后上妆,可以早上来个淡妆上班,也可以下班的时候补成浓妆出去嗨。当然,码农们下班的时间原创 2021-09-02 17:10:13 · 177 阅读 · 0 评论 -
PHP常用设计模式(4)抽象工厂模式
PHP常用设计模式(3)抽象工厂模式原创 2021-08-31 14:34:08 · 193 阅读 · 0 评论 -
PHP常用设计模式(3)工厂方法模式
1、模式定义定义一个创建对象的接口,但是让子类去实例化具体类。工厂方法模式让类的实例化延迟到子类中。2、问题引出框架需要为多个应用提供标准化的架构模型,同时也要允许独立应用定义自己的域对象并对其进行实例化。3、解决办法工厂方法以模板方法的方式创建对象来解决上述问题。父类定义所有标准通用行为,然后将创建细节放到子类中实现并输出给客户端。 人们通常使用工厂模式作为创建对象的标准方式,但是在这些情况下不必使用工厂方法:实例化的类永远不会改变;或者实例化发生在子类可以轻易覆盖的操作中(比如初始化)。4、原创 2021-08-31 12:47:10 · 234 阅读 · 0 评论 -
PHP常用设计模式(2)简单工厂模式
PHP常用设计模式(2)简单工厂模式工厂模式,工厂方法或者类生成对象,而不是在代码中直接new。使用工厂模式,可以避免当改变某个类的名字或者方法之后,在调用这个类的所有的代码中都修改它的名字或者参数。如果某个类在很多的文件中都new ClassName(),那么万一这个类的名字发生变更或者参数发生变化,如果不使用工厂模式,就需要修改每一个PHP代码,使用了工厂模式之后,只需要修改工厂类或者方法就可以了先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式。毫原创 2021-08-31 12:23:54 · 124 阅读 · 0 评论 -
PHP命名空间和类的自动载入
PHP命名空间可以更好地组织代码,与Java中的包类似。Test1.php<?phpnamespace Test1;//命名空间Test1function test(){ echo __FILE__;}Test2.php<?phpnamespace Test2; //命名空间Test2function test(){ echo __FILE__;//打印当前文件所在的绝对路径。}Test.php<?phprequire 'Test1.php';原创 2021-08-31 11:02:23 · 218 阅读 · 0 评论 -
php实现简单的二分查找
<?php// 待查找区间$arr = [1, 3, 7, 9, 11, 57, 63,55, 99];// 非递归查找57所在的位置$find_key = binary_search($arr,0,count($arr),3);echo('要查找的数索引位置是'.$find_key).PHP_EOL;echo('值是'.$arr[$find_key]);function binary_search($l,$a,$b,$x){ if($a>$b) reurn -原创 2021-05-28 20:43:47 · 434 阅读 · 0 评论 -
深入php模式与对象第五版
参考文献:深入php模式与对象第五版翻译 2021-08-23 15:14:51 · 323 阅读 · 0 评论 -
不用crontab实现php 原生代码执行定时任务
<?php/*** * 不用crontab实现php 原生代码执行定时任务 * /usr/local/php/bin/php test.php * Class Timer */class Timer extends SplMinHeap{ /** * 比较根节点和新插入节点大小 * @param mixed $value1 * @param mixed $value2 * @return int */ protected转载 2021-05-17 18:05:22 · 251 阅读 · 0 评论 -
mysql 命令,超级强悍的总结
一:数据库启动/停止启动service mysqld start/etc/init.d/mysqld start关闭service mysqld stop/etc/init.d/mysqld startmysqladmin -u root -p shutdown二:mysql数据库修改用户密码,赋权2.1 修改mysql用户密码方法1mysqladmin -u用户名原创 2016-12-23 09:44:29 · 2099 阅读 · 0 评论 -
位运算在 PHP 实际项目当中的运用
来回顾一下这些基础知识,同时也会讲位运算在 PHP 实际项目当中的高级技巧。一、位运算知识回顾PHP 手册当中,专门对位运算及位运算符进行了使用介绍。https://www.php.net/manual/zh/language.operators.bitwise.php按位与运算符:&之所以称为位运算,指的是在运算过程中,我们会把两组需要位运算的数值进行二进制化,然后两组二进制的数字从低位向左对齐。这里的位指的是二进制数字的位置。而按位与运算符指的是两组数值每一位相与,同为 1 则 结果转载 2021-02-20 17:30:44 · 219 阅读 · 0 评论 -
PHP常用设计模式(1)单例模式
PHP命名空间可以更好地组织代码,与Java中的包类似。Test1.php<?phpnamespace Test1;//命名空间Test1function test(){ echo __FILE__;}Test2.php<?phpnamespace Test2; //命名空间Test2function test(){ echo __FILE__;//打印当前文件所在的绝对路径。}Test.php<?phprequire 'Test1.php';原创 2021-02-13 21:35:25 · 178 阅读 · 0 评论 -
PHP 处理并发场景时的3种解决方案
在秒杀,抢购等并发场景下,可能会出现超卖的现象,在 PHP 语言中并没有原生提供并发的解决方案,因此就需要借助其他方式来实现并发控制。列出常见的解决方案有:使用rabitmq,redis等实现队列,额外起一个进程处理队列,并发请求都放到队列中,由额外进程串行处理,并发问题就不存在了,但是要额外进程支持以及处理延迟严重。利用数据库事务特征,做原子更新,此方法需要依赖数据库的事务特性。借助文件排他锁,在处理下单请求的时候,用 flock 锁定一个文件,成功拿到锁的才能处理订单。...原创 2021-02-09 17:15:45 · 186 阅读 · 0 评论 -
phalcon基础
phalcon: 获取参数的方法原创 2020-07-01 19:23:09 · 227 阅读 · 0 评论 -
phalcon基本操作
1.控制器加目录,需在路由中做map原创 2020-09-03 18:43:27 · 224 阅读 · 0 评论 -
WSL里Nginx+PHP,反映慢,卡住等问题
在wsl里搭建lnmp环境时,访问简单的PHP 文件 (例如Hello world)没有问题,但访问多数 PHP 文件卡死,有的(例如phpinfo()),虽然可以加载出来但浏览器显示网页仍未加载完全或者巨慢。原因用 Unix Socket 方式连接 Nginx 和 PHP,然而,WSL 对 Unix Socket 的支持并不是那么完美解决方法在 nginx.conf 的 http 节点添加:fastcgi_buffering off;然后重启nginx即可。...转载 2020-11-24 10:41:03 · 1963 阅读 · 4 评论 -
php和php xdeug 版本问题的坑
php和php xdeug 版本问题一定要注意原创 2020-11-18 14:48:49 · 195 阅读 · 0 评论 -
对浏览器友好输出的PHP输出调试代码,屡试不爽
function dump($var, $echo=true, $label=null, $strict=true) { $label = ($label === null) ? '' : rtrim($label) . ' '; if (!$strict) { if (ini_get('html_errors')) { $output = print_r($var, true); $output = '<pre>'原创 2020-09-23 22:22:39 · 231 阅读 · 0 评论 -
PHP接口性能优化之路
最近在做PHP接口的性能优化,在排查性能问题和优化的过程中总结了一些心得,分享给大家。性能问题排查首先,做性能优化要先进行性问题排查,即排查PHP接口的代码实现中那一块执行比较慢。排查方法一笔者使用的ThinkPHP框架中自带了G方法可以很方便的获取某个区间的运行时间和内存占用情况。 例如:G('begin');// ...其他代码段G('end');// ...也许这里还有其他代码// 进行统计区间echo G('begin','end').'s';//输出代码运行时间echo G(转载 2020-09-14 20:29:38 · 612 阅读 · 0 评论 -
PHP_MySQL高并发加锁事务处理
PHP_MySQL高并发加锁事务处理原创 2020-09-04 23:15:44 · 201 阅读 · 0 评论 -
MySQL事务+FOR UPDATE解决并发操作数据库
注意 FOR UPDATE 仅适用于InnoDB,且必须在事务区块(BEGIN/COMMIT)中才能生效。<?php//PHP利用Mysql锁解决高并发的方法$pdo = new PDO('mysql:host=127.0.0.1;port=3306; dbname=test_admin122_co', 'test_admin122_co', 'EGtMkiaiZEJESAcL');$pdo->beginTransaction();//开启事务$sql = "select `num原创 2020-09-04 21:27:37 · 630 阅读 · 0 评论 -
PHP+Mysql高并发解决方案
此文是为了保存关于看到的php高并发的文章PHP+Mysql高并发解决 【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合秒杀活动的设计 秒杀系统优化方案之缓存、队列、锁设计思路电商类产品的必备功能:秒杀与竞拍关于php高并发解决的一点思路PHP+redis(转载整两篇博客,很不错很基础) ...原创 2020-08-29 11:10:00 · 377 阅读 · 0 评论 -
用PHP实现远程过程调用RPC实战代码演示含图片效果
一、初识RPCRPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。二、工作原理运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:1.调用客户端句柄;执行传送参数2.调用本地系统内核发送网络消息3.消息传送到远程主机4.服务器句柄得到消息并取得参数5.执行远程过程6.执行的过程将结果返回服务器句柄7.服务器句柄返回结果,调用远程系统内核8.消息传回本地主机9.客户句柄由内核接收消原创 2020-08-11 17:26:31 · 324 阅读 · 0 评论 -
解决php内存占用高-用生成器yield优化性能
在Python中对生成器这个内存性能优化的写法不陌生,但是但多PHPer或许都不知道生成器这个功能,可能是因为生成器是PHP 5.5版本引入的功能,也可以是生成器作用不是很明显。但是,生成器功能的确非常有用。 最近在写csv导入导出,需要处理大量的数据,想到了PHP的生成器,写个总结吧优点生成器有哪些优点,如下:生成器会对PHP应用的性能有非常大的影响PHP代码运行时节省大量的内存比较适合计算大量的数据概念引入首先,放下生成器概念的包袱,来看一个简单的PHP函数:function range原创 2020-08-07 08:57:33 · 639 阅读 · 0 评论 -
PHP 反射使用和理解
反射机制简介之前已经介绍过Java反射机制的简单使用,所有的反射机制的思想作用等都是类似的,下面就一起来了解一下PHP反射机制。个人理解:反射机制就是可以利用类名或者一个类的对象来获取关于这个类的一系列信息(类的变量,方法),然后又就可以利用得到的类的信息实例化一些类的对象官方给的简介:反射 API,有 对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。一般在框架中使用到反射机制比较多(控制反转),正常情况下一般使用不到反射的反射机制转载 2020-07-04 07:56:07 · 412 阅读 · 0 评论 -
php面向对象之__toString()
__toString()是快速获取对象的字符串信息的便捷方式,似乎魔术方法都有一个“自动“的特性,如自动获取,自动打印等,__toString()也不例外,它是在直接输出对象引用时自动调用的方法。__toString()的作用当我们调试程序时,需要知道是否得出正确的数据。比如打印一个对象时,看看这个对象都有哪些属性,其值是什么,如果类定义了toString方法,就能在测试时,echo打印对象体,对象就会自动调用它所属类定义的toString方法,格式化输出这个对象所包含的数据。下面我们来看一个__to原创 2020-07-04 07:22:15 · 338 阅读 · 0 评论 -
thinkphp5,laravel等项目部署在虚拟主机上无法忽略public目录解决方案
我司的虚拟主机站点都是默认的wwwroot目录,虚拟主机的默认跟目录是无法修改的。但是thinkphp程序部分程序在开发的时候没有调整对应的程序入口,就需要网站访问默认指向到Public目录。为了使用网站可以正常访问,可以在网站根目录下添加相应的伪静态规则,将对应的访问直接调整到Public目录<IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_URI} !^/public/RewriteRule ^(.*)$原创 2020-06-13 12:33:14 · 924 阅读 · 0 评论 -
PHP实例化对象在内存中的交互过程,发生了什么。
代码<?phpclass Person{ //下面是人的成员属性 var $name; //人的名子 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() //这个人可以说话的方法 { echo "这个人在说话"; } function run() //这个人可以走路的方法 { echo "这个人在走路";转载 2020-07-03 23:39:14 · 388 阅读 · 0 评论 -
PHP 生成中文文件名乱码
使用 iconv转换$ifilename = iconv(‘UTF-8’, ‘GB18030’, $filename);原创 2020-06-13 13:54:32 · 553 阅读 · 0 评论 -
php中引用&的真正理解-变量引用、函数引用、对象引用
https://www.cnblogs.com/thinksasa/p/3334492.html翻译 2020-03-18 14:00:31 · 156 阅读 · 0 评论 -
Intellij Idea 创建Web项目并部署servlet
Intellij Idea 创建Web项目并部署servlet转载 2020-02-06 21:48:52 · 671 阅读 · 1 评论 -
PHP面试题集
汗~~做了一下网络上的php题目,不知不觉做到现在.....把答案贴出来如果有问题请欢迎补充和指正 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)$a = date("Y-m-d H:i:s", strtotime("-1 day"));print_r($a); 2、echo(),print(),print_r()的区翻译 2013-02-03 13:53:45 · 434 阅读 · 0 评论 -
CI框架基本配置/教你学习CI框架codelgniter
CI框架基本配置/教你学习CI框架codelgniterCI 框架现在中国可以说还是不成熟,不像thinkphp那样有那么多的中文手册,在国内,很多国人英语都很烂,CI现在教程还是不多。大家心里都存在这严重想法,我想用CI,国外用的人很多,而且速度非常快,而且敏捷开发!但是一用起来就不是那么回事儿了,很多问题来搜索都没有几个回答,很多错误看不懂。源码注释英文的!既然他这么好,我们就原创 2013-02-23 13:25:40 · 1331 阅读 · 0 评论 -
php var_dump解析
php var_dump解析var_dump -- 打印变量的相关信息。描述 void var_dump ( mixed expression [, mixed expression [, ...]] ) 此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。 提示: 为了防止程序直接将结果输出到浏览器,可以使用输出控制函数(转载 2013-02-23 13:41:01 · 667 阅读 · 0 评论 -
十天学会php【之前收藏,出处未知】
十天学会php【之前收藏,出处未知】十天学会php之第一天以 Apache web server 和 MY SQL 作为WEB服务器和数据库在php-4.3.3下的环境做程序简单的构建和访问查看数据库用 PHPMYADMINPHP的语法:1、嵌入方法:PHP可以是以,当然也可以自己指定。2、引用文件:引用文件的方法有两种:require 及 includ转载 2013-03-13 10:01:22 · 318 阅读 · 0 评论 -
软件分享:zend studio 9.0.3破解及汉化
zend studio 9.0.3官网下载zend studio 9.0.3是目前最新版本,官方下载地址如下:http://downloads.zend.com/studio-eclipse/9.0.3/ZendStudio-9.0.3.msi破解软件下载及使用方法首先下载破解文件:zend studio 9.0.3破解及汉化.zip,网址:http://w转载 2013-03-19 11:06:55 · 953 阅读 · 0 评论 -
sql 语句 in 注意事项
在sql语句中in 用在于包含 比如select * from 表 in (一段语句或者几个值 )in之后必须包含有一个括号 ()。原创 2013-04-08 10:37:50 · 1052 阅读 · 0 评论 -
PHP 常用字符串内部函数 string functions
本章讲述几个常用的 PHP 字符串内部函数。我们下面讲述的 PHP 字符串内部函数有:echo,print,strlen,trim,ltrim,rtrim,substr,strtolower,strtoupper,str_replace。echo 和 print详见 PHP echo 和 PHP echo 和 print的区别。strlenstrlen 函数能得到一原创 2013-05-02 15:36:02 · 931 阅读 · 0 评论 -
PHP 常用数组内部函数 (Array Functions)
本章讲述几个常用的 PHP 数组内部函数。在前面我们已经介绍过PHP 数组,创建一个数组用 array() 函数,删除一个数组元素用 unset() 函数。本章节我们还要学习一些其它常用的有关数组的内部函数。count,sizeofcount - 返回一个数组的元素个数。sizeof 是 count 的别名,功能和 count 一样,也是返回一个数组的元素个数。co转载 2013-05-02 15:47:09 · 621 阅读 · 0 评论