Jul 22

Еще немного помучал PHP 5.3 на тему Lambda-функций:

$array = array(1, 2, 3);
$array = array_map(function($v) { return $v * $v; }, $array);
var_dump($array);
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(4)
  [2]=>
  int(9)
}

I like that!

written by FX Poster \\ tags: , , ,

Jul 22

Bolk открыл для сеня потрясающую новость - в PHP 5.3 будут замыкания и реальные lambda-функции. Поподробнее читаем здесь, а также у Bolk’а здесь и здесь (кстати говоря - здесь еще обьясняется, как создаются lambda-functions в текущих версиях PHP, кто не знает - почитайте).

Не выдержал и проверил - поставил себе PHP 5.3:

C:\Program Files\PHP>php -v
PHP 5.3.0-dev (cli) (built: Jul 22 2008 12:21:12)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2008 Zend Technologies

Накидал простенький скриптец для тестов:

$lambda = function () { echo "Hello World!\n"; };
var_dump($lambda);

$lambda = create_function('', 'echo "Hello World!\n";');
var_dump($lambda);

И запустил его:

C:\Program Files\PHP>php test.php
object(Closure)#1 (0) {
}
string(9) " lambda_1"

Как видите - теперь функции являются полноценными обьектами (”Closure - is simply an additional class”), что, на мой взгляд, просто замечательно! Даешь функции высших порядков в PHP!

written by FX Poster \\ tags: , , ,