PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Extensiile> <Valorile întregi în parametrii funcţiilor
Last updated: Fri, 27 Jun 2008

view this page in

Schimbări în clase şi obiecte

instanceof, is_a(), is_subclass_of() şi catch

În PHP 5.0, is_a() a devenit învechit şi a fost înlocuit cu operatorul instanceof. Au existat unele probleme cu implementarea iniţială a instanceof, care se baza pe __autoload() pentru a căuta clasele ce lipsesc. Dacă clasa nu era prezentă, instanceof arunca un E_ERROR fatal din cauza eşecului __autoload() de a descoperi acea clasă. Acelaşi comportament îl avea şi operatorul catch şi funcţia is_subclass_of(), ambele din acelaşi motiv.

Nici una din aceste funcţii sau operatori nu apelează __autoload() în PHP 5.1.x, iar utilizarea class_exists() în codul-sursă scris pentru PHP 5.0.x, cu toate că nu este problematică în nici un fel, nu mai este necesară.

Metodele private abstracte

Metodele private abstracte au fost susţinute între PHP 5.0.0 şi PHP 5.0.4, însă apoi au fost interzise în baza faptului că comportamentele private şi abstract se excludeau reciproc.

Modificatorii de acces în interfeţe

În PHP 5.0, declaraţiile funcţiilor în interfeţe erau tratate exact la fel ca şi declaraţiile funcţiilor în clase. Aceasta nu mai era adevărat începând cu octombrie 2004, când numai modificatorul de acces public a fost permis în declaraţiile funcţiilor din interfeţe. Începând cu aprilie 2005 - înainte de apariţia lansării PHP 5.0b1 - modificatorul static de asemenea a fost permis. Oricum, modificatorii protected şi private acum vor arunca un E_ERROR, la fel ca şi abstract. Observaţi însă că această schimbare nu ar trebui să afecteze codul dumneavoastră sursă existent, deoarece nici unul din aceşti modificatori nu are sens în contextul interfeţelor.

Schimbări în regulile de moştenire

În PHP 5.0 era posibil de a avea o declaraţie a funcţiei într-o clasă derivată, care nu era corespunzătoare cu declaraţia aceleiaşi funcţii în clasa de bază, de ex.

Acest cod-sursă va cauza o eroare E_STRICT emisă în PHP 5.1.x.

<?php
class Base {
    function &
return_by_ref() {
        
$r 1;
        return 
$r;
    }
}

class 
Derived extends Base {
    function 
return_by_ref() {
        return 
1;
    }
}
?>

Constantele de clasă

În PHP 5.0.x următorul cod-sursă era valid:

În PHP 5.1.x redefinirea unei constante de clasă va arunca o eroare fatală E_ERROR.

<?php
class test {
    const 
foobar 'foo';
    const 
foobar 'bar';
}

?>


add a note add a note User Contributed Notes
Schimbări în clase şi obiecte
There are no user contributed notes for this page.

Extensiile> <Valorile întregi în parametrii funcţiilor
Last updated: Fri, 27 Jun 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites