自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梦想是成为一个弓箭手

一个PHP菜鸟的笔记本

  • 博客(81)
  • 收藏
  • 关注

原创 重构:改善既有的代码设计【第一章】

提炼函数内联变量搬移函数多态取代条件表达式提炼函数简单的来说就是将一个大函数分割成合理的多个小函数,主函数只需要调用不同的小函数,使代码更容易阅读和理解。内联变量如果一个函数有多个传入参数,可以考虑将其合并为一个有特点的参数,也方便后续的复用搬移函数其实就是将老代码提炼到一个新的函数中多态取代条件表达式以前我们写代码时可能好多switch,if else条件。这样就使得每增加一个条件,函数就变得越来越长。但当我们学过设计模式后就会想到,使用工厂模式和面向对象的多态特性就可以简单的解.

2021-12-29 16:54:38 177

原创 PHP位运算与或异或

应用场景:你是否遇到过这样的问题?我现在有个功能有很多权限控制,但是我不能使用很多字段用1,0来存储这么多权限,这样做感觉太low了,而且判断起来需要用到很多字段,维护起来好麻烦,后期如果再新增其他权限还需要新增字段。下面用一个简单的小技巧告别这种不科学和反人类的设计吧!这里只需要用到几个php的位运算,参照php官方文档所以我们只需要用一个十进制数字来存储这些权限即可,十进制转换为...

2019-03-26 18:10:25 499

原创 申请免费SSL,给wordpress添加https小绿锁

申请GoGetSSL免费ssl直接访问https://www.gogetssl.com/domain-validation/comodo-free-ssl/ 然后选择0刀的,create new order 下一步该注册注册。。让干啥干啥。。 generate! 在线生成CSR,保存好下面的Your Private Server Key为xxxx.key,把Your C...

2018-07-13 15:08:25 2417

原创 Phpstorm使用ftp

有时候公司使用docker机进行开发时,大家的代码都在docker机上,尤其是还有通道机,需要登录通道机才能进入docker机。这时候测试代码就及其不方便,在本地改好还需要去docker机上vim一遍,导致开发效率降低。想要用phpstorm随意编辑虚拟机上的代码吗?ftp了解一下了啊!(叫卖)安装ftp yum install -y vsftpd 安装vsftpds...

2018-02-27 18:21:36 637

原创 laravel5.4使用socialite实现github登录

1.安装laravel5.4composer create-project laravel/laravel zcms 5.42.安装Socialitecomposer require laravel/socialite3.配置编辑config/app.php'providers' => [ // 其它服务提供者... Laravel\Socialite\SocialiteServic

2017-09-18 13:50:56 1312 1

原创 laravel5.4中npm run dev报错

仔细看了一下时间真的是好久都没有写博客了,去年还在认真记录遇到的每一个问题和新学到的知识,真的是惭愧。那么今天就记录一下npm run dev的问题1.安装laravel5.4composer create-project laravel/laravel zcms 5.42.npmnpm install3.npm run dev按照文档来说这时候应该已经成功了,但是这个地方我出现了两个错误。1.找

2017-09-14 14:10:34 2807 1

原创 linux下mysql允许远程连接

1.查看linux防火墙是否开放3306端口 执行iptables -nL --line-number 这里显示DROP代表防火墙阻止了3306端口。2.添加防火墙例外 执行vim /etc/sysconfig/iptables 3.重启防火墙 执行service iptables restart 查看是否变为ACCEPT4.创建远程连接用户并授权mysq

2017-03-31 14:16:06 10981

转载 HTTP 缓存机制

绪论当web请求到达缓存时,如果本地有”已缓存”的副本,就可以从本地设备而不是原始服务器中提取这个文档使用缓存的好处减少了冗余的数据传输缓解了网络瓶颈的问题降低了对原始服务器的要求降低了距离时延应用缓存时可能会出现的几种情况命中的和未命中的可用的已有副本为某些到达缓存的请求提供服务,这被称为缓存命中。其他一些到达缓存的请求可能会由于没有副本可

2017-03-29 11:13:12 428

原创 Golang安装

下载Golang配置环境变量创建第一个程序创建第一个库1.下载Golang无论您是在什么操作系统上使用Golang,都可以到这里下载mac版本:下载pkg文件,传送门无脑安装linux版本:下载压缩包,wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz(推荐使用vpn后下载)解压该文件,tar -z

2017-03-14 16:32:16 4048

原创 PCRE正则表达式语法

字符 描述 \ 将下一个 字符标记为一个特殊字符,或一个原义字符,或向后引用,或一个八进制转义符。例如,”\n”匹配一个换行符。序列”\”匹配”\”而”(“则匹配”(“ ^ 匹配输入字符串的开始位置,如果设置了RegExp对象的Multiline属性,^也匹配”\n”或”\r”之后的位置 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也

2017-03-13 09:52:49 1960

原创 在MAMP下PHP7安装Redis扩展

到github上下载phpredis的php7分支到本地执行phpize执行make && make install拷贝redis.so到扩展文件夹修改php.ini文件需要注意的地方: 1. 下载phpredis时要切换到php7分支 2. 进入phpredis-php7目录执行phpize 执行phpize时要选择MAMP下的你正在使用的php7版本对应的phpize命令

2017-02-09 17:26:13 2865

原创 关于pjax的一些坑

静态页面中应用pjax看不到效果由于我是在laravel中应用的pjax,所以在layouts中的app.blade.php中引用了pjax和nprogress的相关js和css。建立公共代码pjax.blade.php@extends('layouts.app')@section('content')<div class="container" id="pjax-container">

2017-01-24 10:33:58 8845

原创 laravel5.2实现区分前后台用户登录

1.前台登录直接使用laravel自带的auth php artisan make:auth 然后可以查看路由文件:Route::group(['middleware' => 'web'], function () { Route::auth(); Route::get('/home', 'HomeController@index');});执行php artisan migr

2017-01-10 17:48:57 7244

原创 Laravel中简单使用Repository模式

什么是Repository模式,laravel学院中用这样一张图来解释其实将这个模式用在项目中就是为了将业务逻辑和具体的调用分开,创建一个仓库来存放这些业务逻辑。那么我们怎么使用呢?建立Repository目录来存放不同的业务逻辑 在Contracts中存放接口文件,Eloquent中存放具体的实现方法TestRepository.php<?phpnamespace App\Repositor

2017-01-09 17:29:25 6787

原创 Laravel5.2使用RabbitMQ初体验

由于最近需要使用rabbitmq来进行消息队列的读取,但以前从来都没有接触过这等高深的技术,所以只好从头开始研究,下面就把这几周的成果分享出来,针对没有接触过消息队列的同学,希望能给你们一些帮助。安装rabbitmq使用composer安装laravel的php-amqplib/php-amqblib包推送消息到队列和读取队列中的消息安装rabbitmq安装rabbit首先需要安装erlang

2016-12-01 16:01:57 10628 1

转载 关于laravel前后台多表认证登录问题

laravel学院

2016-10-12 16:54:28 1369

原创 PHP获取某一天前后任意时间

date("Y-m-d",strtotime('-30 days',strtotime('2016-9-30')));

2016-09-30 17:19:52 6485

原创 Laravel解决nesting level错误和隐藏index.php

错误提示:Maximum function nesting level of ‘100’ reached, aborting! 解决办法:因为我是在windows上搭建的wamp环境,linux和mac暂时还没有实验,首先找到php.ini找到xdebug项,在最后添加一行xdebug.max_nesting_level=500 那么laravel如何隐藏index.php呢? 首先进入publ

2016-09-23 18:01:05 2050

原创 PHP数组和对象的相互转换

关于php中想让对象以数组的形式访问,这时候就需要使用到get_object_vars()函数了。先来介绍一下这个函数。官方文档是这样解释的:array get_object_vars ( object $obj )返回由 obj 指定的对象中定义的属性组成的关联数组。 举一个栗子:<?phpclass Point2D { var $x, $y; var $label;

2016-07-28 10:37:35 5267

原创 一个值得纪念的日子

现在我坐在床上码着这段文字,实在是不知道该写些什么,只是想记录一下这一年来的感受。 2015年7月6日,在帝都的第一天,坐了一夜的硬座从哈尔滨熬到北京,虽然身体早就已经疲惫不堪,但是当列车驶入北京站的时候,看到高楼耸立,才发觉原来已经到了另一座城市,下了火车看到人来人往,第一次体会到交通原来还可以这样,几经辗转,总算找到了一处住所,那段回忆真的是苦涩又带着一点兴奋,即便现在我已经换了三个住处,但我

2016-07-06 23:25:31 504

原创 关于mysql总是提示没有权限进入问题

刚才mysql突然间怎么连都连不上了,提醒我root账户没有权限进入。 下面就说一下解决办法: 1.进入到mysql的bin目录下通过mysqld_safe进入安全模式mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 这时候再输入:mysql -u root mysql 2.就会发现我们已经进入到mysql了 使用

2016-06-17 15:18:26 6230

原创 Linux下使用laravel5.2

1.首先到官网下载laravel5.2压缩包,您也可以使用composer安装。 2.之后解压到文件夹中,这里我创建了一个city的文件夹。 3.在linux下赋予city权限chmod -R 777 /home/wwwroot/default/city4.配置虚拟主机 这里注意将虚拟主机的目录配置到public文件夹 这是我的配置目录,大家参考配置自己的目录/home/wwwroo

2016-06-14 18:26:37 1907

原创 PHP7下安装memcached扩展

如果你是PHP7使用者,请自动将这篇文章的memcached-2.2.0编译安装步骤替换为该篇文章的方法。上一步已经把libmemcached安装完成了。 下面需要到github上找到php-memcached的php7分支,并clone下来放到linux上。 clone下来会发现多处了一个php-memcached-php7的文件夹,然后按照之前那篇文章进行操作就好了,只是替换了memca

2016-06-13 11:29:22 6947 2

原创 Hello Python

在windows,linux,mac上安装python可以参考廖雪峰老师的python教程。链接地址1.我是在mac上使用vagrant搭建的一个linux环境下安装的python。 首先下载python的安装包并解压。 然后可以自行百度对python进行编译。2.编写python程序并运行我使用的是samba共享linux下的文件夹到我本地的mac上。使用sublime进行编辑。/hom

2016-06-12 22:28:03 355

原创 收藏一个Yaf教程

链接地址

2016-06-02 11:12:13 839

原创 Yaf之配置和Bootstrap

1.Yaf之配置文件application.iniconf/application.ini 1.关于yaf中的配置信息大部分都写在这里了!我们先来看一个例子[common]application.directory=APP_PATH"/application/"[product : common]2.打印出配置信息看一下: application/controllers/Index.php<?

2016-06-01 14:07:26 8323

原创 Yaf之Hello World

Windows环境下yaf框架安装yaf是鸟哥使用C写的一个PHP扩展,优点不用多说,速度最快的框架。 在Windows下使用yaf首先需要下载扩展dll文件。 1.我的PHP环境是5.5,如果需要文件可以点击这里 2.然后在php.ini文件中添加扩展,extension=php_yaf.dll 3.yaf的目录结构 4.入口文件index.php<?phpdefine(

2016-05-23 16:16:45 784 2

原创 搬了一天家之后的感悟

突然回想起自己刚刚到北京的时候,坐了一夜的火车来到北京,当看到北京站三个大字的时候才反应过来,原来我已经离开了生活了22年的东北,来到了一个新的城市,我不知道这个城市是什么样的,只知道在别人口中是一个充满机会和希望,却又充斥着各种各样的人的一个城市,刚下火车的时候我不知道未来会是怎样,我不知道我今后会成为一个什么样的人,我站在这座城市的入口看到人山人海,人流涌动,告诉自己不再是个孩子了,或许以后经历

2016-05-23 10:54:43 491

转载 30个php操作redis常用方法代码例子

redis的操作很多的,以前看到一个比较全的博客,但是现在找不到了。查个东西搜半天,下面整理一下php处理redis的例子,个人觉得常用一些例子。下面的例子都是基于php-redis这个扩展的。1,connect 描述:实例连接到一个Redis. 参数:host: string,port: int 返回值:BOOL 成功返回:TRUE;失败返回:FALSE<?php $redis = n

2016-05-16 14:12:05 8537

原创 lnmp一键安装包环境下,修改php文件后会延迟生效问题

当我在我的mac上的virtualbox部署了lnmp一键安装包之后会发现,当我把lnmp上的/home/wwwroot/default文件夹共享到我的本地,然后当我修改了文件之后在浏览器上访问会出现延迟生效,这个就非常不爽了,因为想要实时看到结果才可以。重点来了! 首先打开你的phpinfo看看是否开启了opcache,如果看到已经开启了那么就确定了是这个原因了。 找到php.ini配置文件,

2016-05-11 10:39:54 2035

原创 PHP接口数据的封装XML和JSON

使用PHP开发app后端的接口时,我们需要返回数据,最常用的就是XML和JSON格式的数据,那么样返回呢?1.JSONjson数据是最容制造的,只要使用php自带的json_encode()函数就可以简单的制作出json数据了2.XMLxml数据就要复杂一点了,让我们看一下xml数据的格式 那么怎样构造呢?3.制作生产接口数据的类<?php//定义生成接口数据类class Api{

2016-05-09 15:46:32 4492 6

原创 PHP中的数据传输神器cURL

什么是cURL?官方是这样解释的:使用URL语法传输数据的命令行工具。 cURL:我不生产资源,我只是资源的搬运工。。。 cURL的使用场景网页资源 编写网页爬虫WebService数据接口资源 动态获取接口数据,比如天气,号码归属地等等FTP服务器里面的文件资源 下载FTP服务器里面的文件其他资源 所有网络上的资源都可以用cURL访问和下载到 检查php是否可以使用cURL

2016-05-05 15:35:49 949

原创 PHP读取目录树

前一阵时间面试XX公司笔试题中竟然有这样一道题: 使用PHP列出目录树!当时一看就懵逼了!基本的思路还是有的,不过是使用递归算法,但对PHP操作目录文件的方法却不是很了解,所以今天好好补习一下! 解题思路:列出目录中的文件。判断是否是目录,如果是目录就继续递归。将所有文件名,存入多维数组<?phpfunction recurDir($pathName){ //将结果保存在r

2016-05-04 17:37:44 4922

原创 mac上的lnmp环境vhost设置和nginx开启pathinfo

首先我的mac上安装的是lnmp一键安装包,本篇博客主要是讲解如何在虚拟机上设置vhost,然后在本地浏览器中使用设置的vhost访问网站,然后设置nginx支持pathinfo的功能,下面我们就来开始演示!vhost设置与访问 在虚拟机中添加vhost*具体添加方法可以参考lnmp官方文档,使用lnmp vhost add然后根据提示一步步进行添加就好了!这里我添加了一个***www.zha

2016-04-30 16:05:47 2509

原创 CI去除index.php和引入文件的路径问题

修改apache的配置文件打开httpd.conf文件 将这句话前面的#号去掉 LoadModule rewrite_module modules/mod_rewrite.so CI根目录下添加.htaccess文件这是我的文件目录结构 所有的css文件,图片文件都放在statics文件夹下了,这时候当我访问网站的时候发现,index.php确实去掉了,但是statics文件夹下的

2016-04-25 13:10:09 3629

原创 Linux下安装Redis并添加PHP扩展

1.安装Redis客户端1.1下载redis客户端 进入redis官网,然后使用wget下载redis客户端[root@localhost ~]# wget http........ 下载之后的安装包! 1.2解压[root@localhost ~]# tar -zxvf redis-3.0.7.tar.gz1.3安装配置进入到redis-3.0.7文件夹,执行make install 并执

2016-04-21 17:25:02 6454 3

原创 PHP观察者模式

我理解的观察者模式就是,当我们触发一个事件的时候,想要把这个操作告诉给我想要告诉的对象,让他们都执行这个操作,就是将他们绑定到这个事件下。1.定义一个基类(用于添加观察者也就是我想要通知的对象,还有通知观察者) EventGenerator.php<?phpabstract class EventGenerator{ //存储观察者,因为可以有多个要通知的对象,所以是一个数组

2016-04-20 10:49:51 408

原创 PHP数据对象映射模式

还是代码说话:这里还是遵循策略模式的psr-0代码规范 数据表: 数据库连接文件Db.php(如果没有可以去我的博客里面找) 自动加载类文件Config.php(如果没有可以去上一篇博客里拿过来) 入口文件DataUser.php<?phpdefine('BASEDIR', __DIR__);//自动加载在本文件中没有被定义的类require 'Config.php

2016-04-19 13:38:11 4540 3

原创 PHP策略模式

个人觉得设计模式只有在实际应用中才能够慢慢的去熟悉,到最后做到心中有模式,事事有模式,哈哈例如:一个电商首页,可以根据登陆用户的性别不同显示不同的内容,比如广告和商品类别。 传统方法:在程序内部使用多个if,else进行判断,这样很难维护,比如我想要再加入一个人妖用户!那么我就要在程序中再加入else if判断,这样写出来的程序看起来很乱,而且不易维护。 策略模式: 实现的思想是这样的,创建

2016-04-18 23:02:53 507

原创 mac使用sshfs挂载linux虚拟机上的文件夹

本文基于mac上安装了virtualbox虚拟机,使用vagrant部署了linux环境,搭建了lnmp一键安装包的php环境,目的是解决linux上的文件在虚拟机下只能使用vim编辑器编辑,由于本人是个菜鸟,简直是用不惯,所以这里就想要把linux上的项目文件夹映射到本地环境下,这样就能够实现在本地对文件进行编辑,在虚拟机上运行了。1.安装homebrew 下载地址。按照提示一步步安装就可以了

2016-04-16 10:49:31 3647

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除