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 tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li><ul>
<li>http://coursesweb.net/html/</li>
<li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block.some_class {
display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()var obj = {
"courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr); // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue; // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveingI`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
vivió vivido viviendoEstoy viviendo aquí.
- Traiesc /Locuiesc aici.