Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function call_user_func_array($function, array $params) {
switch(count($params)) {
case 1:
return $function($params[0]);
case 2:
return $function($params[0], $params[1]);
// ...
}
}Вместо того чтобы таки открыть мануал и найти там call_user_func с call_user_func_array рядом. И таких примеров много… прямо скажем «тысячи их».usort($aArray, function($a, $b) {
if ($a['field'] == $b['field'])
{
return $a['another'] < $b['another'];
}
else
{
return $a['field'] < $b['field'];
}
});
<?php
$classmap = array(
'Namespace\Class' => 'Path/To/Class.php',
);
spl_autoloader_register(function($classname) use $classmap {
if (isset($classmap[$classname])) {
include $classmap[$classname];
}
});
$o = new stdClass();
$o->x = function( $number ) {return $number * 10;};
$y = $o->x;
echo $y(100).PHP_EOL;
class MyClass
{
public $callback = function( $number ) {return $number * 10;};
}
<?php
class MyClass {
public $callback;
public function __constructor() {
$this->callback = function($number) { return $number * 10; };
}
}
$obj = new MyClass();
echo $obj->callback(1);
<?php
class MyClass {
const member = 1;
public $member;
public function member () {
return "method 'member'";
}
public function __construct () {
$this->member = function () {
return "anonymous function 'member'";
};
}
}
header("Content-Type: text/plain");
$myObj = new MyClass();
var_dump(MyClass::member); // int(1)
var_dump($myObj->member); // object(Closure)#2 (0) {}
var_dump($myObj->member()); // string(15) "method 'member'"
$myMember = $myObj->member;
var_dump($myMember()); // string(27) "anonymous function 'member'"
?>class QueryBuilder extends Builder { // название класса
…
$builder = new QueryBuilder(); // создаем экземпляр класса
Согласитесь, что писать после каждой функции ее перевод или что она делает — нет смысла.
echo "Hi"; // выводим "Hi"
Лямбда-функции и замыкания