Starting with the version 5.3, PHP introduced Anonymous functions, known as Closures.
This type of functions have no specified name. They are most useful as the value of callback.

1. Example, Anonymous function as callback function.
<?php
$arr = array(' hello word ', ' Have <b>good day</b>');

// removes tags and whitespace from the beginning and end of each array element
// capitalize the first character of each word
$arr = array_map(function($elm){
 return ucwords(trim(strip_tags($elm)));
}, $arr);

var_export($arr);            // array ( 0 => 'Hello Word', 1 => 'Have Good Day' )
?>

2. Closures can also be used as the values of variables (notice how the function is called, using the variable name, including the $ character).
<?php
$website = function($name) {
  return 'http://www.'. $name. '.net';
};

echo $website('coursesweb');           // http://coursesweb.net
echo $website('marplo');               // http://www.marplo.net
?>

3. Closures can also be used inside another function. In the following example it is used closures to create HTML List elements.
<?php
// receives an array with elements that will form the <li>
function ulList($ar_items) {
  $li = function($item) {
    return '<li>'. $item. '</li>';
  };

  // traverse the array received in parameter, calls $li() to create the <ul><li>
  $ul = '<ul>';
  foreach($ar_items as $item) {
    $ul .= $li($item);
  }
  $ul .= '<ul>';

  return $ul;
}

$ar_items = array('li 1', 'li 2', 'li 3');
echo ulList($ar_items);         // <ul><li>li 1</li><li>li 2</li><li>li 3</li><ul>
?>

- Another example with anonymous function inside other function. Notice the using of the use() , to can use the outside variables inside anonymous function.
<?php
function test($a) {
  $b = $a / 2;
  $c = function($a) use($b) {
    return $a + $b;
  };

  return $c($a);
}

echo test(10);         // 15
?>

4. Closures can be a useful tool for object-oriented programming. Starting with PHP 5.4 , $this can be used in anonymous functions.
<?php
class A {
  private $value = 1;
  public function getVal() {
    return function() { return $this->value * 2; };
  }
}

$a = new A;
echo $a->getVal();        // 2
?>

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag renders as emphasized text, displaying the text oblique?
<strong> <pre> <em>
<p>Web development courses: <em>CoursesWeb.net</em></p>
Which CSS property defines the space between the element border and its content?
margin padding position
h3 {
  padding: 2px 0.2em;
}
Click on the method which returns the first element that matches a specified group of selectors.
getElementsByName() querySelector() querySelectorAll()
// gets first Div with class="cls", and shows its content
var elm = document.querySelector("div.cls");
alert(elm.innerHTML);
Indicate the PHP variable that contains data from a form sent with method="post".
$_SESSION $_GET $_POST
if(isset($_POST["field"])) {
  echo $_POST["field"];
}
PHP Anonymous functions - Closures

Last accessed pages

  1. Polygons with CSS (4801)
  2. Courses Web: PHP-MySQL JavaScript Ajax HTML CSS Flash-AS3 (43400)
  3. Bloons Tower Defense 4 (519)
  4. Clear Canvas Context (2139)
  5. HTML Course - Free Lessons (7580)

Top accessed pages

  1. Courses Web: PHP-MySQL JavaScript Ajax HTML CSS Flash-AS3 (43400)
  2. PHP-MySQL free course, online tutorials PHP MySQL code (33009)
  3. Read Excel file data in PHP - PhpExcelReader (32937)
  4. Get Attribute (ID, Class, Name, Title, Src) with jQuery (29795)
  5. PHP PDO - exec (INSERT, UPDATE, DELETE) MySQL (27105)