Mac从入门到痴迷系列之phpstorm配置xdebug

  • 白俊遥
  • 2018-12-30 21:25:04
  • PHP
  • Mac
安装 xdebug```bashpecl channelupdate pecl.php.netpecl install xdebug```配置debug;```bashvim vim /usr/local/etc/php/7.2/php.ini```增加如下配置```bashxdebug.remote_enable=On```开启成功的标...
阅读全文

Mac从入门到痴迷系列之配置开发环境

  • 白俊遥
  • 2018-12-23 22:43:21
  • PHP
  • Mac
安装php7.2 替代系统自带的php```bashbrew install php@7.2brew link php@7.2 force``` 安装 composer```bashbrew install composer```设置国内镜像```bashcomposer config g repo.packagist composer https...
阅读全文

使用array_diff优雅的删除数组中指定的value值

在开发过程中经常需要删除数组中某个值;比如说有个数组;```php$names = [ '张三', '李四', '王麻子']```我们希望删除 `李四` 这个值;常规的思路是先用 `array_search` 函数获取 `李四` 在 `$names` 中的键名;然后使用 `unset` 删除;为了严谨还得判断`李四`是否存在;`...
阅读全文

php设计模式(二十一)观察者模式

在业务开发过程中多个功能会互相依赖;如果我们想在一个对象发生变化后通知和它有关联的类;比如说你做了某件事后希望可以使用邮件和短信发送通知;这时候就比较适合使用观察者模式了;不过 php 官方已经提供了 ;因此这又是一篇为了设计模式而写设计模式的文章; 结构SubjectAbstract: Subject 抽象类 示例中指 SubjectAbstract.php;...
阅读全文

php设计模式(二十)迭代器模式

迭代器模式允许用户通过特定的顺序访问容器中的数据;它将数据和顺序的实现分离;迭代器模式属于设计模式中的没落贵族;单独实现迭代器的场景很少了;比如 php 官方都提供了;这篇文章是为了设计模式而写设计模式; 结构Container: 容器接口 定义获取迭代器的方法 示例中指 ContainerInterface;ConcreteContainer: 实现 Cont...
阅读全文

php设计模式(十九)命令模式

命令模式就和名字一样;比较适合执行命令的场景;命令发送者只管调用具体命令类中的 execute() 方法;然后在具体命令类中设定命令接收者;可以消除命令发送者和命令接受者之间的耦合;并且可以方便的扩展新命令; 结构CommandInterface:命令抽象类;一般会暴露一个 execute 方法;Command:具体的命令类;设定接收者;Invoker:命令...
阅读全文

php设计模式(十八)模板方法模式

组合型的设计模式本质是使用组合替代继承;但是继承并非一无是处;只是因为大家容易滥用继承造成强耦合;作为面向对象编程的三大特性之一;继承还是很有价值的;比如说本篇文章要讲的模板方法模式;就是依赖于继承来实现; 结构抽象类: 定义操作中骨架;比如说执行顺序等;讲具体的执行内容延迟到子类;子类: 定义具体的执行内容; 示例Phone.php```p...
阅读全文

php设计模式(十七)代理模式

代理模式我们可能不熟悉;但是代理我们大多数程序猿都应该用过;比如说为了翻过一堵墙用谷歌查找资料;或者现实中购买商品我们也不是直接去工厂;而是通过一层层的代理商; 结构Subject:主题接口;定义真实主题和代理的公共方法;RealSubject:实现主题接口的真实主题;隐藏在代理之后;Proxy:实现主题接口并在内部引用了真实的主题; 示例Subje...
阅读全文

php设计模式(十六)享元模式

享元模式的目的是为了减少实例化大量的类时对内存的占用;减少是不可能平白无故就减少了的;主要是通过复用重复的类来实现;用现在比较热的词叫共享;就比如说现实生活中;我们有 99 件尺寸为 L 和 1 件 XXL 的不同款式的男装需要请多少个模特?回答 100 的同学肯定是家里有矿了;省钱的方案是只请2个模特就够了;其中 99 件 L 的需要一个 170cm 的模特;...
阅读全文

php设计模式(十五)外观模式

外观模式又叫门面模式;现在都是模块化开发了;开发中很多时候都是在使用各种扩展包;或者在外观模式中我们叫做子系统;外观模式的作用就是减少子系统之间的耦合;降低子系统的使用难度;我们举个栗子;实现一个加密文件内容的功能;这个功能分为两部分;1. 用于从文本文件中读取内容的 File 类2. 用于加密内容的 Encrypt 类如果我们每次都直接调用这两个类...
阅读全文