Archief - PHP: Vraag i.v.m. OOP

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

horse_99

Legacy Member
Hallo,

Ik heb eens een vraag i.v.m. OOP in PHP. Ik wil een klasse maken met een constructor die ik enkel kan gebruiken in een andere bepaalde klasse (en alléén in die andere klasse). Als voorbeeld neem ik even de Graphics-klasse uit Java J2SE.

Since Graphics is an abstract class, applications cannot call this constructor directly. Graphics contexts are obtained from other graphics contexts or are created by calling getGraphics on a component.

Dus je maakt de klasse abstract en constructor protected, maar dan is me nog niet geheel duidelijk HOE je de constructor oproept in een andere klasse?

Kan iemand mij helpen?

Alvast bedankt!

Groeten,
horse_99

Tyfius

Legacy Member
Ik snap het probleem niet echt. Mijn Java kennis is beperkt, maar men kan toch zoveel Graphics objecten aanmaken als men wil, dit is toch niet gelimiteerd tot 1 object in 1 specifieke klasse?

Nu, normaal moet je op dezelfde manier kunnen werken als in Java/C#...

JensDT42

Legacy Member
Correct me if I'm wrong, maar voor zover ik weet gaat dit (nog?) niet in PHP. In Java (bijvoorbeeld) kan je dit door een inner-class te definieren (uw class-definitie maw binnen een andere class-definitie zetten) en deze gewoon private te maken. Je kan er dan enkel aan vanuit de 'omhullende' class. In PHP kan je dit voor zover ik weet niet.

(Edit:)
Abstract zijn heeft er niets mee te maken. Abstract wil gewoon zeggen dat er geen objecten van dit type gemaakt kunnen worden. Om het afgezaagde voorbeeld van voertuigen te geven, stel, klasse 'Voertuig' is abstract, klasse 'Auto' extends Voertuig en is niet abstract. Dan kan je wél:

PHP:
$auto = new Auto();

Maar niet:

PHP:
$auto = new Voertuig();

dJeez

Legacy Member
horse_99 zei:
Dus je maakt de klasse abstract en constructor protected, maar dan is me nog niet geheel duidelijk HOE je de constructor oproept in een andere klasse?
Als je de moeite zou nemen van even de manual te checken dan weet je dat direct. Dat gaat via parent::_construct(); in PHP5 (PHP4 kan je bezwaarlijk OO noemen, maar daar werkt het door de constructor rechtstreeks aan te roepen dmv parent::ConstructorVanParentKlasse();).

http://www.php.net/manual/en/language.oop5.decon.php

[HBV]-=XortioN=-

Legacy Member
moet ge niet gebruik maken van eigenschappen -lees get en set functie- want protected kan je alleen maar binnen die bepaalde klasse aanspreken ... + Let er ook op dat variabelen binnen een bepaalde klasse enkel in die bepaalde klasse bestaan, al eens geprobeerd met globale variabelen?

En die fout is veronderstel ik als je er reeds een object van hebt aan gemaakt?

HoAxKe

Legacy Member
Correct me if I'm wrong, maar als ge maar 1 object wil hebben doorheen heel u prog, is het toch het singleton pattern right? Dit is wel even off-topic.

On-topic:
Dit gaat denkek niet met PHP hoor. PHP werkt denkek ook niet met packages en dergelijke zoals Java he.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan