Skip to content

Instantly share code, notes, and snippets.

@akira1908jp
Last active August 29, 2015 14:19
Show Gist options
  • Save akira1908jp/dfe6a21eaab5ff187de0 to your computer and use it in GitHub Desktop.
Save akira1908jp/dfe6a21eaab5ff187de0 to your computer and use it in GitHub Desktop.
hachiojipm # 49 LT

hachiojipm #49


自己紹介

【warnning】 I am not mizchi

  • name:岡田旭(オカダアキラ)
  • twiter:akira1908jp
  • github:akria1908jp

functional programming for php

<?php
// PHP5 >= 5.5
$params = range(1, 100);

$fizzbuzz_filter = function ($bool, $str) {
    if(filter_var($bool, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) {
        return $str;
    }
    return "";
};

$fizz = function ($param) use ($fizzbuzz_filter){
    return $fizzbuzz_filter($param % 3 === 0, "fizz");
};

$buzz = function ($param) use ($fizzbuzz_filter) {
    return $fizzbuzz_filter($param % 5 === 0, "buzz");
};

$fizzbuzz = function ($param) use ($fizz, $buzz)  {
    $ret = $fizz($param) . $buzz($param);
    if (empty($ret)) {
        $ret = $param;
    }
    return $ret;
};

$call = function ($params) use ($fizzbuzz) {
    foreach ($params as $param) {
        yield $fizzbuzz($param);
    }
};

foreach ($call($params) as $value) {
    print $value. PHP_EOL;
};

ご清聴ありがとうございました


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment