Newsgroup: it.comp.www.php
Titolo: Classi: Chiamare un metodo della classe extended

Ecco il codice incriminato:
----------
class CA
{    var $a;
    ...
    function MyFunction()
    {    $this->a = $this->a * 2;
    }
}
class CB extends CA
{    var $a;
    ...
    function MyFunction()
    {    $this->a = $this->a + 5;
        $this->MyFunction();        //    *QUI STA IL PROBLEMA ---> LOOP !!!
    }
}
----------
*
All'interno di "MyFunction della classe CB", vorrei chiamare "MyFunction
della classe CA",
ma cosě mi va in loop perchč continua a chiamare "MyFunction della classe
CB".
Qual č la sintassi corretta al posto di "$this->MyFunction();" ?
Grazie a tutti.
Riccardo
---
Dott. Riccardo Fiorenza
* Dr.Soft - Soluzioni Internet
* web: 
http://www.drsoft.it
* e-mail: 
fior...@drsoft.it

Scusate rettifico il codice:
----------
class CA
{    var $a;
    ...
    function MyFunction()
    {    $this->a = $this->a * 2;
    }
}
class CB extends CA
{   function MyFunction()


On Wed, 7 Mar 2001 18:45:43 +0100 a darnkess messenger,
 from the deepest bottom of hell, delivered me
 a scroll with 
ric...@softhome.net
's sigil,
 titled "Re: Classi: Chiamare un metodo della classe extended",
 written by Riccardo Fiorenza with his blood
 and these arcane words following:
Se nella classe che estendi, usi lo stesso nome della funzione padre,
questa viene "sostituita"
Se vuoi chiamare la funzione della classe padre dovresti modificare
cosi':
class CA
{    var $a;
    ...
    function MyFunctionA()
    {    $this->a = $this->a * 2;
    }
}
class CB extends CA
{   function MyFunctionB()
    {    $this->a = $this->a + 5;
        $this->MyFunctionA();        //    *QUI STA IL PROBLEMA ---> LOOP !!!
    }
}
-- 
Sidewinder  
---------------------------------------------------------------------
'Ooohh.. "FreeBSD is faster over loopback, when compared to Linux
over the wire". Film at 11.'
	-- Linus Torvalds
---------------------------------------------------------------------

 }
Bye.
-- 
Signature under rework - Shuriken

 > }
Se sicuro che "CA::MyFunction()" funzioni ?
A me da un parse error !
Grazie a tutti, comunque.
Riccardo


Forse quelo che ha postato il suggerimento pensava che parlassimo di c++
:-))
-- 
Sidewinder  
---------------------------------------------------------------------
No, that's wrong too.  Now there's a race condition between the rm and
the mv.  Hmm, I need more coffee.
	-- Guy Maor on Debian Bug#25228
---------------------------------------------------------------------

 ...
Credo proprio che tu abbia ragione...
Ho dato un occhiata su 
www.php.net
 e mi sembra di poter affermare che
in PHP, se si ridefinisce una funzione in una classe estesa,  non è più
possibile
far riferimento alla funzione della classe padre.
Di fatto lo dice la stessa parola... "ridefinire".
A conferma di ciò, mi pare che non esista nessuna parola chiave
del tipo "$parent" per riferirsi alla classe padre, mentre ovviamente
esiste "$this" che permette di riferirsi alla classe stessa.
Vedi "Spotting References":
http://www.php.net/manual/it/language.references.spot.php
Bye,



Infatti le classi php non seguono in toto il pradigma OOP
-- 
Sidewinder  
---------------------------------------------------------------------
Sigh.  I like to think it's just the Linux people who want to be on
the "leading edge" so bad they walk right off the precipice.
	-- Craig E. Groeschel
---------------------------------------------------------------------

 :-))
No no. Funziona anche in PHP. Ho provato anche adesso.
Forse dipende dalla versione del PHP. Io ho la 4.0.3pl1 debianizzata.
Qui sotto il codice che ho provato e che restituisce 12.
<?php
class CA
{
    var $a;
    function MyFunction()
    {
     	$this->a = $this->a * 2;
    }
}
class CB extends CA
{
   function MyFunction()
    {
	$this->a = $this->a + 5;
	CA::MyFunction();
    }
}
$prova = new CB;
$prova->a =1;
$prova->MyFunction();
print ($prova->a);
?>


 Linux is not user-friendly. 
It _is_ user-friendly.  It is not ignorant-friendly and idiot-friendly.
	-- Seen somewhere on the net
---------------------------------------------------------------------

 wrote in message
98nd3c$g9$1...@redribbon.capsule.corp...

La versione del mio interprete PHP è la "3.0.16".
Con la mia versione, la sintassi CA::MyFunction(); non funziona.
Evidentemente è una sintassi introdotta con la versione 4.
Ciao,
