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 atribut face ca valoarea din caseta de text sa nu poata fi modificata de utilizator?
checked="checked" readonly="readonly" disabled="disabled"
<input type="text" value="valoare-fixa" readonly="readonly" name="a_name" />
Ce proprietate CSS permite crearea de colturi rotunjite?
background-size border-size border-radius
.class {
  border:2px solid blue;
  border-radius:1.2em;
}
Ce instructiune afiseaza o fereastra cu mesaj si butoane OK si Cancel?
indexOf() confirm() prompt()
var ques = window.confirm("Rezultatul lui 0+0 este 0?");
if (ques) alert("Corect");
else alert("Incorect");
Indicati functia PHP care returneaza numarul cel mai mic dintr-o multime de numere.
floor() ceil() min()
$min_nr = min(12, 8, 25, 13);
echo $min_nr;        // 8
Alegeti verbul corect care trebuie in propozitia: "Its ears ... big".
are is has
Its ears are big.
- Urechile lui sunt mari.
Alegeti verbul corect care trebuie in propozitia: "Los niños ... deportistas"
soy son está
Los niños son deportistas.
- Copii sunt sportivi.
PHP Functii Anonime - Closures

Last accessed pages

  1. Verbe frazale din limba Engleza (19480)
  2. Curs HTML gratuit Tutoriale HTML5 (61854)
  3. Por sau para: Exercitiu 1 (1232)
  4. Verbe neregulate din limba Engleza (11167)
  5. Curs PHP MySQL, Tutoriale si Scripturi PHP (33570)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1197)
  2. Curs HTML gratuit Tutoriale HTML5 (943)
  3. Curs si Tutoriale JavaScript (870)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (840)
  5. Curs CSS Online Tutoriale CSS3 (806)