Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

la ce e buna folosirea interfetelor pentru obiecte?
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
al3x



Data înscrierii: 12/Ian/2006
Mesaje: 1

Trimis: Joi Ian 12, 2006 1:17 am    Titlul subiectului: la ce e buna folosirea interfetelor pentru obiecte?  

ma uitam prin documentati despre clase si obiecte din php5 si am observat un capitol numit "object interface". se refera la ceva de genul:
Cod: <?php
// Declare the interface 'iTemplate'
interface iTemplate
{
    public function setVariable($name, $var);
    public function getHtml($template);
}

// Implement the interface
// This will work
class Template implements iTemplate
{
    private $vars = array();
 
    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }
 
    public function getHtml($template)
    {
        foreach($this->vars as $name => $value) {
            $template = str_replace('{' . $name . '}', $value, $template);
        }
 
        return $template;
    }
}
?>

Intrebarea mea este: cu ce ne ajuta daca folosim astfel de interfete cu diverse implementari?
Nu am putea la fel de bine sa cream doua clase diferite, dar cu aceleasi metode? Pentru ca oricum doua implementari inseamna doua clase diferite care implementeaza diferit interfata data.
Va multumesc anticipat, indiferent de raspuns.
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Joi Ian 12, 2006 9:13 am    Titlul subiectului:  

pai, prin definitie (din capul meu), o interfata introduce metode si semnaturi ale acestora fara a le defini (pe metode).
O clasa care implementeaza aceasta interfata, se obliga sa accepte comportamentul acestei interfete, prin implementarea metodelor oferite.

Mai mult, o interfata iti poate aduce mai multa claritate in cod.

referitor la exemplul tau, gandeste-te ca ai implementa aceiasi interfata, unei clase XMLTemplate de exemplu, iar in acest caz, probabil ca vei schimba doar o linie de cod (sau nici una) pentru ca vei stii ca XMLTemplate iti va pune la dispozitie metodele necesare, setVar si getHTML.

cam acelasi exemplu si aici: http://svn.berlios.de/wsvn/medick/trunk/libs/action/view/Base.php?op=file&rev=0&sc=0
Sus  
marghidanu



Data înscrierii: 01/Feb/2006
Mesaje: 2
Locație: Romania

Trimis: Mie Feb 01, 2006 3:00 pm    Titlul subiectului:  

Interfetele iti permit polimorfism. O clasa ce implementeaza o interfata trebuie sa suprascrie toate metodele din interfata respectiva.La ce e bun... poti adresa un set de clase direct dupa sablonul. Interfata te asigura ca in toate clasele care o mostenesc vei gasi acele metode definite in interfata.

Spor!!!
Sus  
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Mar Feb 21, 2006 11:49 pm    Titlul subiectului:  

si apropos de polimorfism, aceasta este singura metoda in PHP de a-l obtine
Sus  
johnny



Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti

Trimis: Mie Feb 22, 2006 11:19 pm    Titlul subiectului:  

o implementare a interfetelor relevanta o gasesti in Creole, vezi:
ResultSet (care trebuie sa fie implementat pentru fiecare driver - mysql, mssql, oracle, etc...)

Exista si un workaround pentru php4, pentru aceasta functionalitate:
an style="color: #000000"><?php class InterfataPhp4 {    function functie()    {      trigger_error("Functia InterfataPhp4::functie() nu este implementata");    } //..... } 
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community