Incepand cu versiunea 5.3, PHP a introdus Functii Anonime, cunoscute si cu denumirea Closures.
Acest tip de functii sunt fara nume. Sunt utile mai ales in retuenarea unor valori la apeluri in cadrul altor functii.

1. Exemplu, functie anonima folosita pentru returnarea unei valori intr-o functie PHP.
<?php
$arr = array(' hello word ', ' Have <b>good day</b>');

// sterge tag-urile si spatiile exterioare din fin fiecare element din array
// Face majuscula prima litera a fiecarui cuvant
$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 pot fi utilizate si ca valori ale variabilelor (observati cum e apelata functia, folosind numele variabilei, inclusiv caracterul $).
<?php
$website = function($name) {
  return 'http://www.'. $name. '.net';
};

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

3. Closures pot fi create si in interiorul altor functii. In urmatorul exemplu se foloseste closures pt creare liste HTML, <li>.
<?php
// primeste un array cu elementele ce vor forma liste <li>
function ulList($ar_items) {
  $li = function($item) {
    return '<li>'. $item. '</li>';
  };

  // parcurge array-ul din parametru, apeleaza $li() ca sa creeze <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>
?>

- Un alt exemplu cu functie anonima in interiorul altei functii. Observati utilizarea lui use() , pentru a putea folosi variabile din afara functiei anonime in interiorul ei.
<?php
function test($a) {
  $b = $a / 2;
  $c = function($a) use($b) {
    return $a + $b;
  };

  return $c($a);
}

echo test(10);         // 15
?>

4. Closures pot fi un instrument util si in programarea orientata pe obiecte. Incepand cu PHP 5.4 , expresia $this poate fi utilizata in functii anonime.
<?php
class A {
  private $value = 1;
  public function getVal() {
    return function() { return $this->value * 2; };
  }
}

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

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce element HTML adauga continut flash SWF in pagina web?
<object> <div> <script>
<object type="application/x-shockwave-flash" data="file.swf" width="500" height="250">
 <param name="src" value="file.swf" />
 Browser-ul dv. nu suporta SWF.
</object>
Care pseudo-clasa CSS adauga un stil la un camp input de formular cand e cursorul in el?
:active :focus :hover
input:focus {
  background-color: #88fe88;
}
Clic pe instructiunea care transforma un sir JSON in obiect JavaScript.
JSON.stringify(javascript_object) object.toString() JSON.parse(json_string)
var jsnstr = '{"url": "http://coursesweb.net/", "title": "Web Development Courses"}';
var obj = JSON.parse(jsnstr);
alert(obj.url);
Indicati functia PHP care poate crea sau scrie un fisier pe server.
fopen() file_put_contents() file_get_contents()
if (file_put_contents("file.txt", "content")) echo "Fisierul a fost creat";
else echo "Fisierul nu poate fi creat";
Cum se spune "al treilea" in engleza?
threeth third three
I planted the third tree.
- Am plantat al treilea pom.
Cum se spune "al treilea" in spaniola?
segundo tres tercero
Yo planté el tercero árbol.
- Am plantat al treilea pom.
PHP Functii Anonime - Closures

Last accessed pages

  1. Blog si Cugetari Personale (3853)
  2. Sufixele -ful, -less si -ness - ful, less and ness suffixes (6663)
  3. Gramatica limbii engleze - Prezentare Generala (114013)
  4. Cursuri limba engleza gratuite si lectii online (28810)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (43079)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (3013)
  2. Curs HTML gratuit Tutoriale HTML5 (2255)
  3. Curs si Tutoriale JavaScript (2127)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (2087)
  5. Blog si Cugetari Personale (1929)