PHP
Marchccc
尊重、进步、意义
展开
-
记录MAMP安装PHP Redis扩展
git clone https://github.com/nicolasff/phpredis.gitcd phpredis/Applications/MAMP/bin/php/php7.3.24/bin/phpize./configure --with-php-config=/Applications/MAMP/bin/php/php7.3.24/bin/php-configmakemake installoutput:Installing shared extensions: /A原创 2021-12-02 15:37:34 · 721 阅读 · 0 评论 -
laravel jwt改为passport
jwt和passport区别jwt仅实现了jwtpassport功能全面,除此之外还实现了oauth2,可以方便的对接oauth2的第三方平台。https://stackoverflow.com/questions/47745884/laravel-passport-vs-jwt-vs-oauth2-vs-auth0/47745885#47745885laravel使用passport参考https://learnku.com/docs/laravel/5.4/passport/1240http原创 2021-08-02 11:42:03 · 272 阅读 · 0 评论 -
“Postscript delegate failed `/tmp/phpFCzRYE‘: No such file or directory @ error/pdf.c/ReadPDFImage/6
yum -y install ghostscript原创 2020-10-30 10:40:23 · 475 阅读 · 0 评论 -
laravel 提示 PHP Fatal error: Uncaught ReflectionException: Class config does not exist *** 怎么解决
删除vendor,重新安装依赖。原创 2020-09-05 21:25:57 · 3445 阅读 · 0 评论 -
maatwebsite/excel 3.0版本使用方法
https://www.cnblogs.com/niuben/p/11458450.html转载 2020-02-04 18:20:35 · 2339 阅读 · 0 评论 -
Swoole使用场景及代码实现
Swoole使用场景及代码实现可用于对laravel项目速度优化借助swoole的异步,无阻塞快速消费MQ可用于对laravel项目速度优化基于swoole的特性,有一些作者就开发组件试图将swoole的特性和laravel结合,以提升laravel项目的访问速度和承载能力。首先看一下原生laravel的压力测试情况:下载了一个5.8版本的laravel框架,在Test控制器的index方...原创 2019-12-12 00:30:45 · 2896 阅读 · 0 评论 -
记录macOS编译安装PHP7.2.25
wget https://www.php.net/distributions/php-7.2.25.tar.gztar -zxvf php-7.2.25.tar.gzcd php-7.2.25./configure --prefix=/usr/local/php72 --with-config-file-path=/usr/local/php72/config --enable-inline...原创 2019-12-11 23:13:46 · 924 阅读 · 0 评论 -
PHP面试技术点准备
PHP常用设计模式和算法设计模式:工厂模式,单例模式,依赖注入模式,门面模式算法:冒泡排序,快速排序,插入排序深入理解代码健壮性,可读性,扩展性,熟悉代码规范。代码健壮性,可读性,扩展性,可以根据实际情况使用事件驱动、依赖注入等设计模式,对架构和业务逻辑进行解耦。使用面向接口编程的方式增加可扩展性。代码风格和注释明确可以保证代码可读性。代码规范遵循PSR组织指定的规范,包括但不限...原创 2019-12-11 18:52:06 · 262 阅读 · 0 评论 -
easywechat源码学习
easywechat源码学习目的代码结构FactoryApplication服务提供者利用魔术方法重载ArrayAccess异常更多目的意在通过阅读好的代码,学习其中的设计思想、对设计模式的运用,来提示自我代码水平的目的。代码版本:https://github.com/overtrue/wechat/archive/4.2.8.zip代码结构├── Factory.php // 库入口,...原创 2019-11-10 18:00:54 · 1346 阅读 · 0 评论 -
socket学习
socket是什么可以理解为,socket是TCP、UDP这种传输层暴露出来的API。socket一旦建立,除非有一方主动断开,否则就是一直保持连接,服务端可以实时获取客户端的信息,客户端也可以实时获取服务端信息。适合聊天室、推送、等需要长链接的场景。然后下边使用PHP语言,写一个socket使用的例子,如果项目开发中为了更高效还是要找composer包。参考PHP的socket 函数相...原创 2019-11-08 15:09:10 · 115 阅读 · 0 评论 -
做一些PHP机试题
注:题目来自网络第一道将第三方api的前3条数据全部读取出来,存入对应的数据库字段api URL:http://pub.cloudmob.mobi/publisherapi/offers/?uid=92&key=d4bab08884781dbf2bede528e27d243d&limit=1&page=1$curl = curl_init();$api = 'ht...原创 2019-11-05 18:07:01 · 1750 阅读 · 0 评论 -
转自风雪之隅的文章-print不是函数
这个源自于一个看似很诡异的问题:if (print("1\n") && print("2\n") && print("3\n") && print("4\n")) { ;}你期待这段代码输出什么呢?实际上的输出是:4111很多时候我们会忽略了print是一个语法结构(language constructs), 他并不是一个函...转载 2019-11-05 00:23:39 · 119 阅读 · 0 评论 -
打印字符的所有排列
code:function test($arr, $str = ''){ $len = count($arr); if($len == 1){ echo $str . $arr[0] . PHP_EOL; return; } for ($i = 0; $i < count($arr); $i++) { $tmp ...原创 2019-11-04 22:41:51 · 219 阅读 · 0 评论 -
冒泡排序、快速排序、插入排序学习
冒泡排序<?php// 冒泡排序,将数组内每个元素和所有元素对比,如果顺序错误就交换,最终排列好所有元素。function bubble($array) { $len = count($array); for ($i=0; $i < $len; $i++) { for ($j=$i+1; $j < $len; $j++) { if ($array[$i...原创 2019-11-01 16:52:10 · 102 阅读 · 0 评论 -
单例模式
单例模式原则:构造函数私有,不允许外部类实例化它、不允许克隆类自己创建唯一的实例,并保存到全局属性当中提供公共的静态方法获取这个唯一的实例当某种类没必要重复实例化时,可以使用单例模式,节省内存消耗。比如像获取全局配置文件相关的类。比如laravel的ioc容器支持单例模式,底层绑定的很多服务提供者都是以单例模式绑定的。单例模式例子:<?php class Single{...原创 2019-10-27 23:24:26 · 140 阅读 · 0 评论 -
魔术方法callStatic应用场景:后期静态绑定、链式调用
魔术方法是PHP的重载机制,当调用类中不存在或不可访问的静态方法是,将调用类中的__callStatic方法。基于这种重载机制,就有很多使用技巧可以利用,下边举了两个例子。后期静态绑定laravel eloquent orm的model抽象类中也有后期静态绑定的使用,最常用的比如$table变量。当然不局限于orm,很多其他组件当中也有使用,开发架构中也可以使用。abstract cla...原创 2019-10-26 22:18:32 · 285 阅读 · 0 评论 -
对ioc服务容器和事件的总结
ioc服务容器就是解决组件之间依赖的一种方式,核心利用了PHP的依赖注入和反射API。用之前把要用的类或组件或服务注册进容器中,真正用的时候从容器中make出来就可以直接用,开发过程中不用关心服务之间的依赖。事件就是在主业务中触发一个事件,监听器执行事件的处理,可以让主业务更加简洁易于维护,将附属功能抽离出来了,实现了业务的解耦。举个例子,比如用户注册时,会涉及到发邮件、或者有第三方系统要同...原创 2019-10-25 16:44:47 · 291 阅读 · 0 评论 -
php container demo
一个简单的容器实现,用于促进理解laravel的container。服务容器的目的是解决组件之间的依赖关系,降低耦合。在系统运行过程中动态地为系统提供各种服务。<?php/** * 一个容器类 */class Container{ protected $bindings = []; // 绑定接口和生成实例的回调函数 /** * 向容器中添加一个绑定 * a...原创 2019-10-18 23:10:55 · 235 阅读 · 0 评论 -
对Laravel身份认证的分析
功能初始化路由分析中间件底层运作分析auth中间件执行流程分析登录流程分析(待办)总结功能初始化php artisan make:auth 使用laravel提供的命令行功能,创建路由、控制器、视图。路由:Auth::routes();Route::get('/home', 'HomeController@index')->name('home');HomeControll...原创 2019-10-15 18:12:14 · 487 阅读 · 0 评论 -
laravel framework目录结构
说明组件Illuminate\ContractsIlluminate\FoundationIlluminate\Support说明这篇文章是我梳理的laravel framework 5.8版本的目录结构说明,有助于理解laravel。源代码:https://github.com/laravel/framework/tree/5.8API:https://laravel.com/api/...原创 2019-10-14 22:14:04 · 998 阅读 · 0 评论 -
CSRF攻击原理及预防手段(转)
转自:https://segmentfault.com/a/1190000007932293CSRF攻击原理及预防手段(转)攻击过程演示预防referer 验证token 验证CSRF全程 Cross Site Request Forgery, 跨站域请求伪造.这种攻击方式相对于XSS,SQL注入等攻击方式比较晚被发现,今天就来讲解下这种攻击方式以及避免方式.攻击过程假设abc用户登录...转载 2019-10-14 00:53:28 · 258 阅读 · 0 评论 -
array_reduce
这个函数在中间件的设计上会用到,这里记录一下该函数的使用方式。array_reduce【array_[rɪˈduːs]】说明:array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] ) : mixedarray_reduce() 将回调函数 callback 迭代地作用到 array 数组中的...原创 2019-10-13 23:41:46 · 241 阅读 · 0 评论 -
PHP中常用的十个数组函数
PHP中常用的十个数组函数in_arrayarray_searcharray_key_existsarray_valuesarray_filterarray_columnarray_mergearray_poplistksortin_array【in_əˈrā】检查数组中是否存在某个值<?php@see https://www.php.net/manual/zh/function...原创 2019-10-11 23:26:57 · 916 阅读 · 0 评论 -
laravel生命周期
laravel生命周期概览第二步new容器详解第三步处理http请求详解概览一个请求到了laravel框架之后,内部经过了哪些步骤,最后才返回http响应给客户端?public/index.php:<?php// 1. 引入autoload.php,初始化composer自动加载。require __DIR__.'/../bootstrap/autoload.php';/...原创 2019-10-02 17:02:07 · 270 阅读 · 0 评论 -
PHP容器
PHP容器介绍应用场景例子Laravel框架底层对容器的使用参考资料介绍可以理解为一个盒子,事先将项目中可能用到的类扔进去,在项目中直接从容器中拿,也就是避免了直接在项目中到处new,造成大量耦合。取而代之的是在项目类里面增设setDi、getDi方法,通过Di(依赖注入)统一管理类。应用场景需要灵活管理一大堆具有依赖关系的对象时,比如一个PHP框架需要管理众多服务时。例子1.定义了一...原创 2019-09-23 00:04:12 · 4401 阅读 · 0 评论 -
控制反转
依赖注入介绍例子Laravel底层例子介绍一种设计模式,通过构造函数或一个方法,把一个外部实例注入进本类内部,而不是在本类内部创建外部实例,就是依赖注入。好处就是解耦。例子拿我之前写的compose pack举例:https://github.com/OX007/easywechatsharesrc/Share.php中的Share类里面需要使用EasyWeChat\Foundatio...原创 2019-09-20 00:18:02 · 364 阅读 · 0 评论 -
REST API
REST是一种统一URL命名和使用的规范,理念是把要操作的对象当作资源。URL以资源命名,不使用要操作的动词,操作和状态码统一使用HTTP的method和status code。大家都按照这个规范来,效率就高了,一看这个请求就知道是干嘛用的。不在URL中出现动词。例子,左边是不符合REST规范的,右边是符合的:GET /rest/api/getDogs --> GET /res...原创 2019-09-06 11:50:36 · 180 阅读 · 0 评论 -
PHP获取URL后缀名
看到很多面试题都有这个题目,所以实现了一下。代码:&amp;amp;lt;?php// 获取URL后缀名$url = (string) 'https://blog.csdn.net/u012628581/test.php';try { $path = parse_url($url, PHP_URL_PATH); $ext = pathinfo($path, PATHINFO_EXT...原创 2018-12-18 13:53:18 · 17408 阅读 · 0 评论 -
Laravel服务提供者
Laravel服务提供者概念和意义使用示例底层是如何加载的?概念和意义把组件统一管理起来形成一个服务,和业务层分离,业务代码层调用各种服务。当修改独立服务的底层实现时,不会影响业务层,达到了降低代码耦合,增强代码分层的架构设计。使用示例执行php artisan make:provider RepositoriesServiceProvider创建一个服务提供者。在app目录下创建R...原创 2019-10-03 20:06:55 · 234 阅读 · 0 评论 -
Laravel facade
Laravel facade概述框架中的例子定义自己的facade参考链接概述在laravel中,facade作为容器中类的静态代理,它可以让你以静态的方式调用容器中的任何对象的任何方法。实现了对类的快捷访问的一种方式。框架中的例子比如最常用的写log,facade用法\Log::info('xxx');从容器中取出使用的用法:app('log')->info('xxx');...原创 2019-10-05 00:55:07 · 568 阅读 · 0 评论 -
Laravel pipeline
Laravel pipeline介绍使用示例介绍就像其名称管道一样,我们可以把它想象成工厂的生产线。生产线上的每一个环节就是一个管道,而每一个商品就是管道中传递的值。按照环节顺序对商品进行检测,当有一个环节检测不达标,则后续环节不会执行。不达标的商品可能会放到一个回收环节,进行后续处理。而在laravel中,中间件就扮演着管道中的一个个节点,对管道中的资源(HTTP请求)进行检测,来决...原创 2019-10-06 02:18:50 · 327 阅读 · 0 评论 -
Laravel event
介绍触发和监听事件的一个工具。当主业务中需要做一些其他附属操作时,附属操作的代码在监听器中实现。event(事件) listener(监听)比如,在controller中写event(xxx),表示这里发生了一件这个事儿。监听器Listener就监听到了这个事儿,然后就根据监听器中写好的代码去处理该事件。这样做的好处就是解耦了,业务代码中只需要关心主线逻辑,附加的一些需要处理的东西在...原创 2019-10-06 23:42:14 · 263 阅读 · 0 评论 -
laravel广播
laravel广播概述初始化配置公共频道例子私有频道例子概述在laravel中优雅地使用长链接的方式。服务端只需要广播一个事件,客户端就可以收到该事件的广播。总体就是:服务端事件->socket->浏览器。其中服务端就用laravel的event事件和广播相关功能完成。其中socket部分由依赖包laravel-echo-server服务完成。其中浏览器也就是前端,由依赖...原创 2019-10-09 00:08:37 · 1191 阅读 · 0 评论 -
PHP中常用的十个字符串函数
PHP中常用的十个字符串函数explodeimplodetrimstr_replacestrlenstrip_tagsaddslashesstrrevurlencodestrposexplode【ikˈsplōd】使用字符串做为另一个字符串的分隔符,返回包含分割结果的数组。<?php@see https://www.php.net/manual/zh/function.explo...原创 2019-10-11 18:47:01 · 711 阅读 · 0 评论 -
PHP Generator
PHP Generator概念迭代器Iterator生成器Generator生成器/迭代器的优势概念PHP Generator,是迭代器接口的实现。只要是包含yield关键字的函数,那么这个函数的返回值就是一个Generator对象。只有在迭代这个Generator对象的时候,其代码才会执行,其中的yield会中断代码执行,当再次迭代到的时候,会继续执行。由于Generator是迭代器接...原创 2019-09-04 23:41:58 · 436 阅读 · 0 评论 -
PHP libcurl 安全之 CURLOPT_SAFE_UPLOAD
概要TRUE为禁用 @ 前缀在 CURLOPT_POSTFIELDS 中发送文件。FALSE为启用,@开头的value会被当做文件上传。PHP 5.5.0 中添加,默认值 FALSE。PHP 5.6.0 改默认值为 TRUE。PHP 7 删除了此选项。复现复现使用的PHP版本:5.6.38假设有这么一段代码:www.***.com/index.php<?php$url ...原创 2019-09-03 22:29:47 · 2424 阅读 · 1 评论 -
利用shodan、fofa、Google等搜索引擎寻找使用指定程序的网站
利用Google搜索特征,举一些例子:寻找使用了ThinkPHP框架的网站:我们都知道TP框架路由有个特点,s=xxx ,那么我们就可以利用这个特征搜索网址中存在该特征的网站:inurl:index.php?s=/Homeinurl:ThinkPHP/index.php寻找使用了DZ程序的网站inurl:forum.php?mod=misc&amp;action=showdar...原创 2019-01-20 18:06:21 · 20650 阅读 · 3 评论 -
Centos7.4编译安装nginx和PHP
新服务器部署环境,在此记录一下,有需要的朋友可以作为参考。下载nginx和php源代码cd /downloadswget http://219.239.26.11/files/300100000CF0F2B1/cn2.php.net/distributions/php-7.3.0.tar.gzwget https://nginx.org/download/nginx-1.14.2.tar...原创 2019-01-08 19:19:05 · 13133 阅读 · 0 评论 -
OAuth2.0资源所有者密码授权模式流程
介绍角色资源所有者密码授权刷新令牌介绍开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特...原创 2019-01-18 15:41:03 · 16797 阅读 · 0 评论 -
PHP项目响应速度优化
项目可优化范围很广,这里我们只讨论PHP程序本身的加速。开启opcache。zend引擎每次都会把php代码解析成opcode,开启opcache后,会缓存opcode。服务器的GCC编译器使用4.8+,Zend处理opcode部分的优化GCC4.8+才支持,官方称会带来5%性能提升。(跟第一条的opcache没关系)PHP版本尽量使用最...原创 2019-01-03 12:38:11 · 17998 阅读 · 0 评论