[oop] constructor in interface?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

14/03/2014 22:17:50
Quote Anchor link
Hey guys,

Is het gebruikelijk om een constructor op te namen in een interface?
 
PHP hulp

PHP hulp

27/11/2024 10:51:58
 
- Raoul -

- Raoul -

14/03/2014 22:42:21
Quote Anchor link
Nee, daar zou je setters en getters voor moeten gebruiken. Misschien wil je dat je class iets anders doet in de constructor en ergens anders de parameters instelt. (in dit geval met een getter of setter)
Gewijzigd op 14/03/2014 22:42:51 door - Raoul -
 
Ozzie PHP

Ozzie PHP

14/03/2014 22:47:44
Quote Anchor link
>> Misschien wil je dat je class iets anders doet in de constructor en ergens anders de parameters instelt.

Ja, daar kwam ik dus ook achter... de constructor van een child class had een extra parameter en was daarom niet compatible met de interface! Geen constructors in interfaces dus :) Sloop 'm er gelijk weer uit :)

Thanks!
 
Wouter J

Wouter J

14/03/2014 23:02:13
Quote Anchor link
> de constructor van een child class had een extra parameter en was daarom niet compatible met de interface! Geen constructors in interfaces dus :) Sloop 'm er gelijk weer uit :)

Dit hoeft niet perse de rede te zijn dat je hem niet in je interface moet plaatsen. Met het interface wil je juist dat alles compatable is (dus die extra parameter zou op zijn minst een default value moeten hebben).

De grootste rede dat deze niet thuishoort in de interface is omdat een interface gemaakt is om aan andere objecten een contract vast te leggen: Deze methods heb ik. Hierbij heb je dus al de klasse gemaakt. Zodra je een klasse aanmaakt weet je al welke klasse je aanmaakt, dus heb je geen interface check nodig.
 
Ozzie PHP

Ozzie PHP

14/03/2014 23:10:48
Quote Anchor link
Ja, ik dacht dus dat het handig was om aan te geven dat bij een class die deze interface ondersteunt data moet worden meegegeven via de contructor:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
public __construct(array $data);
?>

Alleen toen had ik dus een child class met deze constructor:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
public __construct(array $data, $foo);
?>

En toen ging het dus gelijk al mis :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.