php
韩某Hyman
Program is zero,but zero is start.
展开
-
如何在laravel中使用Repository Pattern(仓库模式)
来,这样做的好处有以下几点:把数据处理逻辑分离使得代码更容易维护 数据处理逻辑和业务逻辑分离,可以对这两个代码分别进行测试 减少代码重复 降低代码出错的几率 让 controller 代码的可读性大大提高如图所示 Repository 的分层关系然而,要独立一个操作层出来,那就会增加大量代码,非常繁琐。如果你是小项目,未必需要使用这一模式。但如果是 4-5 年以上的复杂大型项目,这种模式的好处就比较明显了。学习 Repository Pattern 的意义不只是为了使用它,更.转载 2021-02-25 20:28:48 · 590 阅读 · 0 评论 -
钉钉接口
use EasyDingTalk\Application;$config = [ /* |----------------------------------------------------------- | 【必填】企业 corpId |----------------------------------------------------------- */ 'corp_id' => 'dingd3ir8195906jfo93', .原创 2020-06-22 02:18:26 · 1063 阅读 · 0 评论 -
Laravel ORM 中你不知道的骚操作
append class User extends Model { protected $appends = ['is_adult']; public function getIsAdultAttribute() { return $this->attribute['age'] > 18; } }这个操作大家是不是都用过,在模型里新增一个数据库不存在的字段,非常方便。但是 $转载 2020-06-29 23:03:04 · 403 阅读 · 0 评论 -
高并发和 keepalived
很多 web 开发者都不会接触到高并发的项目,但是不代表高并发技术栈理论知识就不需要了解。就像欧洲没有互联网公司 (没人比我更了解欧洲互联网环境了),但依旧有程序员。中国自有国情在此,你做的任何一个 web 应用都有可能成为高并发项目。提到高并发就离不开负载均衡,负载可以理解为一个服务承受流量的工作状态,没有流量的时候是空载,有了点流量服务就运行起来,当流量超过了这个机器的上限,服务就是满载状态。面对一个流量打满了的服务,要么等,要么崩溃,要么等它崩溃。但机器是死的,我们程序员是活的,解决办法除了关机转载 2020-05-06 22:04:47 · 526 阅读 · 0 评论 -
数据类型
三大数据类型(标量、复合、特殊)共8种标量:浮点、整形、字符串、布尔复合:数组、对象特殊:null、resource原创 2017-03-28 19:02:58 · 3524 阅读 · 0 评论 -
Composer 工作原理 [源码分析]
PS: 篇幅有限详细说明可到 composer 仓库上下载源码库以及下载本人注解的仓库即可。composer 项目的控制台应用依赖于 Symfony 控制台组件,控制台组件本人在 laravel 相关版本已经大体说过,本篇仅是抽核心重点流程来梳理 composer 框架的运行流程。composer 安装文档首先下载 installer 文件 运行 installer 文...转载 2020-04-27 20:10:50 · 1325 阅读 · 0 评论 -
为什么PHP-fpm 会自动重启?
lnmp,经常报504错误,找不到原因。看网上说法,可能是进程满了,打log日志检查下,发现没有满。又有说法是“fpm 有 max_request 的 到达这个值了,就会自动平滑重启”!大神膜拜,果然是这个原因。原创 2020-04-06 23:34:58 · 1130 阅读 · 0 评论 -
什么是 Laravel 的资源控制器?
Laravel 资源型控制器资源控制器就是 Laravel 控制器的一种,具有创建、读取、更新和删除资源(或模型)的所有方法。 您可以使用此 artisan 命令创建资源控制器:php artisan make:controller PhotoController --resource该命令将在您的控制器目录中创建一个 PhotoController.php 文件,并将自动创建 7 种方法 index ,show,create,store,edit,update,destroy。 所有这些方法都是空转载 2019-11-13 19:57:23 · 460 阅读 · 0 评论 -
HTTP状态码
调试毕设,经常报错,网上查找解决办法时看到建议开发人员要牢记HTTP状态码。然后自己反思了下,的确忽视了这个问题,平时都是报错后直接copy错误信息到百度上搜索解决办法,从没有静下心来仔细思考过,所以现整理下HTTP状态码,以后多思考多总结!HTTP状态码HTTP状态码也称为应答码,它反映了Web服务器处理HTTP请求的状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:1XX-信息类:表示收到Web浏览器请求,正在进一步的处理中。原创 2017-03-24 17:15:16 · 470 阅读 · 0 评论 -
1小时教你理解HTTP,TCP,UDP,Socket,WebSocket
谨以此文总结我站在开发者角度对于以上关键词的形象理解,至于底层抽象的概念,别人用啥TCP/IP详解:卷一、卷二、卷三都讲不清楚,我也懒得浪费时间。前人栽树,后人乘凉,一个道理。一、这一大堆关键词之间到底有啥区别?有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCP和Socket搞混,更加会纠结TCP连接与Socket连接以及HTTP的长/短连接之间到底有啥区别。其实有了区别才好理解。但在这之转载 2017-03-24 16:58:56 · 1124 阅读 · 0 评论 -
常见的数据结构及其特征
常见的数据结构有stack、heap、list、linkedlist、doubly-linked-list、queue、array(vector)等原创 2017-03-23 15:39:21 · 4265 阅读 · 0 评论 -
堆排序和归并排序
堆排序原理把待排序的元素按照大小在二叉树位置上排列,排序好的元素要满足:父节点的元素要大于等于子节点;这个过程叫做堆化过程,如果根节点存放的是最大的数,则叫做大根堆,如果是最小的数,则叫做小根堆,可以把根节点拿出来,然后再堆化,循环到最后一个节点。原创 2017-03-18 22:40:05 · 214 阅读 · 0 评论 -
二分查找
原理又称为折半查找,必须在有序数组中进行查找。可分为递归方法和非递归方法两种。二分查找查询速度最快。过程确定数组的中建位置mid=(low/high)/2。用要查找的数值与中间值比较:若相等,则查找成功;若小于,则继续在左半部分查找;若大于,则继续在右半部分查找。重复上面步骤直到找到位置,未找到则表明不存在。原创 2017-03-20 15:59:01 · 774 阅读 · 0 评论 -
《大型网站技术架构核心原理与案例分析》读后感
传统的企业应用系统主要面对的技术挑战是处理复杂凌乱、千变万化的所谓业务逻辑,而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理;前者的挑战来自功能性需求,后者的挑战来自非功能性需求;功能性需求也许还有“人月神话”聊以自慰,通过增加人手解决问题,而非功能需求大多是实实在在的技术难题,无论有多少工程师,做不到就是做不到。IT系统应用于企业管理已有超过半个世纪的历史,人们在这方面积累了大...原创 2020-02-20 14:08:12 · 675 阅读 · 0 评论 -
顺序查找
原理按一定的顺序检查数组中每个元素,直到找到所要寻找的特定值为止。原创 2017-03-20 00:17:50 · 727 阅读 · 0 评论 -
希尔排序
原理把元素按下标的一定增量分组,然后对每组进行插入排序;随着增量逐渐减少,每组包含的元素越来越多,当增量减至1时,所有元素成为一组,算法便终止。其实也是插入排序的一种,区别在于插入排序是相邻元素的比较(类似于希尔排序中增量h=1的情形)原创 2017-03-19 19:40:06 · 502 阅读 · 0 评论 -
选择排序
原理在序列中找到最小的元素,放到序列的起始位置,再从剩余未排序区间中寻找最小元素,放到第二个位置,以此类推,直到所有元素排序完毕。原创 2017-03-19 18:16:01 · 733 阅读 · 0 评论 -
插入排序
原理将待插入元素与有序表中的元素比较,插入到合适的位置,使有序表依然有序。原创 2017-03-17 19:32:23 · 247 阅读 · 0 评论 -
毕业设计也可以考虑SEO搜索引擎优化
虽然这个项目仅仅是个毕业设计,但除了实现基本功能外,肯定也要造就一些亮点。所以这两天就在慢慢考虑这件事情,网上看了一些什么特效做的炫些、支持多大的并发量什么的,但感觉稍微有些难度和浪费时间,然后就看到一个涉及到搜索引擎优化的。听着“搜索引擎优化”这个名字很有逼格,而且实现起来也并不难,所以就先从此下手。什么是SEO?SEO全称为Search Engine Optimization,汉译为搜索引擎优化,是一种利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。最大的作用是可以提高有效访问量。原创 2017-03-15 13:40:26 · 6363 阅读 · 0 评论 -
Laravel中表单验证unique唯一性时,如何排除当前记录
为新建某记录添加了一个表单验证类,想复用到更新功能中,结果却提示编号已存在。很明显是表单验证类的问题,因为添加新纪录时能保证唯一列的唯一性,所以没问题。但是更新记录时,因为记录已存在,表单验证类去检查唯一性时,就会把当前要更新的记录也统计上,发现有“重复”,所以提示已存在。百度了下,其实很简单,添加一个排除参数即可。通过路由route()获取参数,从而能知道id,然后按照如下方式排除...原创 2017-03-20 18:51:10 · 1599 阅读 · 0 评论 -
Laravel表格操作Laravel-Excel
Laravel-Excel应该算是目前接触过的,最好用的excel工具包。之前用过PHPExcel类库,项目中使用时会将PHPExcel类库放到扩展目录vendor中,然后直接调用。但是并没有Laravel-Excel用起来顺手,可能是因为Laravel-Excel与Laravel框架本身足够契合的原因吧。安装Laravel-Excelcomposer require maatweb...原创 2019-04-09 17:44:33 · 1577 阅读 · 3 评论 -
API集成测试问题2:Expected status code 200 but received 500. Failed asserting that false is true.
接上文,之前的错误消失了,出现了新的问题如下:PHPUnit 8.5.0 by Sebastian Bergmann and contributors. ...原创 2020-01-09 20:30:12 · 2239 阅读 · 0 评论 -
strtotime 踩坑记录
前言就在今早,代码写着写着就出现了一个奇怪的事情:echo date('Y/m/d', strtotime('-1 month'));// 2019/12/01见鬼了,还能不能好好让我当一条咸鱼了?echo date('Y/m/d', strtotime('-2 month'));...原创 2020-01-08 20:06:36 · 369 阅读 · 0 评论 -
Laravel 新建项目状态码500问题解决思路
500InternalServerError:服务器内部错误,无法完成请求(一般是服务器源代码错误)。原创 2019-12-27 18:00:44 · 1332 阅读 · 1 评论 -
the requested PHP extension curl is missing from your system
Loading composer repositories with package informationUpdating dependencies (including require-dev)Your requirements could not be resolved to an installable set of packages. Problem 1 - guzzl...原创 2019-12-22 16:06:29 · 1178 阅读 · 0 评论 -
快速排序
原理也叫作分割交换排序法,分治法,是对冒泡排序的一种改进,也是目前公认的最佳排序方法。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按照此方法对这两部分数据分步进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2017-03-19 22:56:44 · 935 阅读 · 0 评论 -
为什么要使用会话控制技术
为什么要使用会话控制技术?web是通过http协议来实现的,而http协议又是无状态的协议,http没有一个内建机制来维护两个事物之间的状态。所以同一个用户请求同一个页面两次的时候,http会把这两次请求隔离开,会当成两次请求的独立。如果用户执行了登录操作,再次请求页面时http不会认为该用户已经登录过,因此不会保存用户的登录状态,所以不能在不同的页面之间做用户的跟踪和状态的保存。会话...原创 2017-03-14 11:42:52 · 884 阅读 · 0 评论 -
百度地图API
<html> <head> <title>根据地址查询经纬度</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!-- 引用百度地图API --> <script type="text/javas...原创 2017-04-03 15:53:48 · 314 阅读 · 0 评论 -
项目中要避免XSS安全漏洞问题
工作一年来,很有感触,发现其实很多时候业务功能的实现本身并不难,难的是在实现功能时还能兼顾各种性能问题、安全漏洞问题。之前在项目开发中,可能因为项目紧急时间有限,可能因为没有考虑周全,经常不能兼顾安全问题,需要老大的提醒或者测试时才会注意到。所以静下心的总结下项目中经常用到的避免XSS安全漏洞的方法。了解XSSXSS也称跨站脚本攻击(Cross Site Scripting),恶意攻击...原创 2018-08-01 11:15:01 · 2369 阅读 · 1 评论 -
命名空间与composer
命名空间命名空间定义方式:在"<?php"标签后的第一行声明,这个命名空间声明语句后声明的所有php类、接口、函数和常量都在这个命名空间中。也可以使用子命名空间,使用\符号把命名空间和子命名空间分开。在同一个命名空间中的类没必要全部在同一个php文件中声明,可以在多个php文件的顶部指定同一个命名空间或子命名空间,此时这个文件的代码就是该命名空间或子命名空间的一部分,因此我们可以在不同文件中编写属于同一个命名空间的多个类。原创 2017-03-11 17:23:12 · 752 阅读 · 0 评论 -
如何优化N+1问题
解决方案可以通过Eloquent(laravel内置的一个ORM实现)提供的预加载功能解决N+1的问题。使用with()方法提前加载并缓存需要用到的关联属性,等到遍历数据时,就不会再产生多余的sql查询。原创 2017-03-13 20:25:07 · 1047 阅读 · 0 评论 -
通过中间件Middleware、策略Policy控制权限
通过中间件限制未登录用户Laravel框架中,在“app/Http/Middleware”文件夹中内置了一些中间件,例如身份验证、CSRF保护等。而中间件MiddleWare为我们提供了一种非常棒的过滤机制来过滤进入应用的HTTP请求。当我们使用Auth中间件来验证用户的身份时,如果用户未通过身份验证,则Auth中间件会把用户重定向到登录页面;如果用户通过了身份验证,则Auth中间件会通过...原创 2017-03-09 22:01:14 · 907 阅读 · 0 评论 -
图片上传、限制、裁剪功能
用户肯定都要有自己的头像,这就涉及到了图片的上传、裁剪等,其实很容易实现。图片上传直接使用file类型的input标签即可,我们可以通过accept属性来限制上传的文件类型,但是一般避免使用此属性,建议在服务器端验证文件上传。<input type="file" name="avatar" accept="image/png, image/jpeg">这里有一点要注意...原创 2017-03-09 20:27:11 · 677 阅读 · 0 评论 -
表单请求FormRequest
最一开始对表单数据进行验证都是直接在控制器的方法中手工调用validator来进行验证,比如:public function update(User $user, Request $request){ $this->validate($request, [ 'name' => 'required|max:50', 'password' =...原创 2017-03-07 18:46:34 · 805 阅读 · 0 评论 -
SSPU-BBS中的邮箱认证
虽然Laravel框架中默认自带了邮箱认证的功能,可以很方便地进行集成,但我还是想搞清楚其流程,所以今天花了一上午的时间进行理解。首先,先定义邮箱认证的业务流程。基本业务流程如下:用户注册成功后,系统会自动发送一个附带“认证链接”邮件到用户邮箱; 用户打开“认证链接”即为激活账号,才可以正常访问系统; 用户在未通过邮箱进行验证的情况下,所有访问都会重定向到邮箱验证页面。然后,再看...原创 2017-03-07 13:53:02 · 613 阅读 · 0 评论 -
SSPU-BBS登录注册功能的实现
Laravel框架中自带了用户认证功能,称之为“用户认证脚手架”。其实一个很简单的命令就可以生成相关代码,然后在对其进行定制化扩展即可。php artisan ui:auth//此命令生成、或修改的代码文件主要包括以下几个routes/web.phpapp/Http/Controllers/HomeController.phpresources/views/auth/视图文件若干...原创 2017-03-06 19:54:46 · 605 阅读 · 0 评论 -
'composer'不是内部或外部命令,也不是可运行的程序或批处理文件。
最近换了台电脑,下班后利用有限的晚上时间在新电脑上配置项目文件时,使用composer安装验证码类库,结果遇到了“ 'composer'不是内部或外部命令,也不是可运行的程序或批处理文件 ”的问题:原创 2020-05-06 21:53:08 · 14592 阅读 · 2 评论 -
访问API时报错:QueryException could not find driver
代码搬在ubuntu服务器上时报的错。原因未设置好php扩展。服务器和命令行使用php 的配置是有差异的,这也是为什么 服务器没有报错,但是命令行出错.phpinfo() 和php -ini 可以比较 php -m 没有pdo模块 但是phpinfo()是有的解决方法1、找到php配置文件vim /etc/php/7.0/apache/php.ini2、在880行左右...原创 2019-10-25 16:57:34 · 843 阅读 · 0 评论 -
PHP防止表单重复提交
日常开发中,表单的提交是无法避免的,而我们必须熟知的一点是“在做后退或刷新操作时,post会重新提交请求是有害的,而get虽然会重新获取数据但却是无害的”。所以我们要禁止用户重复提交表单。首先,我们要知道在什么情况下表单会重复提交:点击提交按钮两次。 点击刷新按钮。 回退,然后重复操作。 进行一些恶意操作。那么,如何防止表单重复提交呢?其实很简单,根据数据流向的过程,可以从三个...原创 2018-09-15 19:09:30 · 667 阅读 · 0 评论