Month: 3月 2018

PHP函数式编程的初步认识

最近朋友推荐这本书:Functional PHP ,很多对于程序设计方面的思路值得多思考和借鉴。函数式编程不是一个框架或工具,而是一种编写代码的方式。FP 是一种软件开发风格,主要强调功能的使用,个人觉得对于重构代码很有帮助。书中也谈到了例如 PHP5.3 中引入的闭包函数和高阶函数,在实际开发过程中善于活学活用也是函数式的灵魂所在。

PHP 新版本的解读

增加了严格的键入和标量类型声明类型声明允许你用合适的类或标量类型( boolean,integer,string,MyClass 等)限定任何函数参数。这些在PHP 5中被部分支持为“类型提示”,但没有标量支持。在PHP 7中,你也可以声明函数返回值的类型。
作为一种动态语言,PHP 将总是试图将错误类型的值强制转换为期望的标量类型。
例如,当给定一个字符串时,需要一个整数参数的函数将强制该值为一个整数,文件顶部引用强制类型检测模式

declare(strict_types=1);

参数异常会抛出如下错误e

PHP Warning: Uncaught TypeError: Argument 1 passed to increment() must be of the type integerstring

Ramda函数式编程之PHP

0x00 何为函数式编程

网上已经有好多详细的接受了,我认为比较重要的有:

  1. 函数是“第一等公民”,即函数和其它数据类型一样处于平等地位
  2. 使用“表达式”(指一个单纯的运算过程,总是有返回值),而不是“语句”(执行操作,没有返回值)
  3. 没有”副作用“,即不修改外部值

0x01 开始函数式编程

在此之前,请先了解PHP中的匿名函数和闭包,可以参考我写得博客
函数式编程有两个最基本的运算:合成和柯里化。

函数合成

函数合成,即把多个函数的运算合成一个函数,如
A=f(x)
B=g(x)
C=f(g(x))
那么C即是A和B的合成。
用代码表示为:

$compose = function ($f,$g){
    return function ($x) use($f,$g){ //这里返回一个函数的函数,即高阶函数

在Macbook Pro 上安装refind以引导os x + ubuntu双系统

前言

由于工作内容需求,不得不安装了一份ubuntu,这里记录一下如何安装第三方引导工具以引导两个操作系统

准备工作

  • 一台搭载os x的电脑(linux其实也可以,这里读者自行琢磨)
  • refind主程序,这里可以下载到最新版,并放置在桌面上
  • 一个人

开始安装

  • 首先讲述一下如何关闭os x的安全保护-SIP(简单理解为这个东西可以防止你对系统分区进行读写操作)
重启 Mac,按住 Command+R 键直到 Apple logo 出现,进入 Recovery Mode
点击 Utilities > Terminal
在 Terminal 中输入 csrutil disable,之后回车
重启 Mac
  • 1
  • 2
  • 3
  • 4
  • 这里以我的电脑为例,各位请参考自己的实际情况操作。打开终端(Terminal),输入以下命令(参考注释和个人实际情况操作)
cd Desktop 

Swoole| Swoole 中 Process

date: 2018-1-8 20:56:08
title: Swoole| Swoole 中 Process

这篇 blog 折腾了很久才写出来, 问题主要还是在 理解 上. 有时候就是这样,

理解了之后就很简单, 不理解就很难; 知道了就很简单, 不知道往往就很难. 所以 stay hungry stay foolish stay young 真的很重要

本来计划开发 swoft 框架 中的 Process 模块, 所以需要对 swoole 的 Process 模块要有比较深入的了解才行. 不过根据 swoole