[pugMI] PHP, interfacce e classi astratte

Giorgio Sironi info a giorgiosironi.com
Lun 15 Lug 2013 22:58:33 PDT


Sono d'accordo, mettere il metodo nella classe astratta é una forma di
duplicazione: citi la sua signature piú volte di quanto necessario.
Versioni piú nuove di PHP sono evidentemente piú lasche, ma dal punto di
vista della manutenzione mi sembra comodo non doverlo riscrivere dove può
essere dedotto.
Il giorno 15/lug/2013 19.26, "Daniele Bartocci" <net02.it a gmail.com> ha
scritto:

> https://bugs.php.net/bug.php?id=31207
>
> Non è un bug, non ti permette di ridefinire il metodo dell'interfaccia
> poiché superfluo (probabilmente ha a che fare con l'effettiva
> implementazione lato engine di interfacce e classi astratte).
> Puoi semplicemente evitare la dichiarazione di doSomething() in
> AMyAbstract perché comunque MyImp implementerà IMyInterface per
> "ereditarietà" - e quindi ti darà tutti gli errori del caso qualora non
> implementassi tutti i metodi di IMyInterface.
>
> Daniele
>
>
> Il giorno 15 luglio 2013 14:05, Gabriele Tondi <info a gabrieletondi.it> ha
> scritto:
>
>> Ciao a tutti!
>>
>> mi sono scontrato con questo problema, che riscontro su PHP 5.3.3.7
>>
>> In pratica, ho questi tre elementi...
>>
>> interface IMyInterface {
>>   public doSomething();
>> }
>>
>> abstract class AMyAbstract implements IMyInterface {
>>   public abstract doSomething();
>> }
>>
>> class MyImp extends AMyAbstract {
>>   public doSomething() {
>>     return 'done';
>>   }
>> }
>>
>> PHP 5.3.3.7 si arrabbia, perchè non vuole che il metodo doSomething sia
>> astratto...
>> Su PHP 5.3.14 invece non ho problemi, idem su 5.4.4
>>
>> Ho verificato ed in linguaggio più OOP come c# è possibile fare ciò,
>> quello che non riesco a capire è se in php non è permesso (o consigliabile)
>> in generale, oppure se si tratta di un problema di quella versione!
>>
>> Vi siete già scontrati con un problema di questo tipo?
>>
>> A presto!
>> Gabriele
>>
>>
>> -----------------------------------------------------------------------------
>>
>> Tondi Gabriele - web and mobile software architect
>>
>> *mail:* info a gabrieletondi.it
>> *web:* www.gabrieletondi.it
>> *mobile:* 392 54 50 560
>> *skype: *gabrieletondi
>>
>> *In ottemperanza alla Legge 196/2003 sulla tutela dei dati personali, le
>> informazioni contenute in questa mail sono di natura confidenziale e si
>> devono intendere ad uso esclusivo della persona o della Società cui è
>> destinato. Se chi legge questo messaggio non è il destinatario o
>> l’incaricato
>> per la consegna del messaggio al destinatario, non deve assolutamente
>> copiare, divulgare, distribuire o in qualsiasi modo utilizzare le
>> informazioni contenute in questa mail.Nel caso in cui aveste ricevuto
>> questa
>> mail per errore, vogliate avvertire il mittente al più presto a mezzo
>> posta
>> elettronica e distruggere il presente messaggio.
>>
>> According to Italian Law 196/2003 concerning privacy, the information
>> contained in this mail is confidential and is intended for the addressee
>> only. If you are not the correct recipient, please note that any use,
>> dissemination or copy of this document/information is strictly prohibited.
>> If you have received this message in error, you should destroy it and
>> please
>> notify us immediatly by e-mail.*
>>
>>
>> _______________________________________________
>> Milano mailing list
>> Milano a ml.grusp.org
>> http://ml.grusp.org/listinfo.cgi/milano-grusp.org
>>
>>
>
> _______________________________________________
> Milano mailing list
> Milano a ml.grusp.org
> http://ml.grusp.org/listinfo.cgi/milano-grusp.org
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://ml.grusp.org/pipermail/milano-grusp.org/attachments/20130716/5840f115/attachment-0001.htm>


Maggiori informazioni sulla lista Milano