class constanten gebruiken in verschillende classess

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cygio

cygio

08/11/2009 16:18:00
Quote Anchor link
Beste phpers,

Ben met een projectje bezig waarin ik bepaalde types wil vastleggen in constanten.
Maar ben nog niet zo heel lang bezig met OOP, dus ben op zoek naar de mooiste/beste oplossing.

het gaat globaal om de volgende situatie:

Ik heb de volgende classess :

- ClassObject : In deze class wordt gewoon een class gedifineerd, dus een class heeft Members en Methodes. deze worden in arrays bewaard.

-ClassMembers: hierin worden de Members gedefineerd, dus MemberName,Het Type van de member(bv:string,integer,object,etc),etc

-ClassMethodes: hierin worden de Methodes gedefineerd en bevat ook een array met parameters.

-MethodParaMeters: hierin worden de parameters gedefineerd.

Bovenstaande is heel kort en beknopt, maar hoop wel dat het inzichtelijk is.

Wat bv. wel duidelijk is dat zowel een Classmember als een classmethode een AccessType heeft(public,private,protected), deze wil ik nu vast leggen in een constante bv. ACCESSTYPE_PUBLIC.
Maar wat is nu een goede plaats .
Gewoon in de class ClassObject omdat een class bestaat uit members en methodes, dus met classconstanten.

of is het mooier om er een soort configje(bv genaamd AccessTypes.php) naast te hebben waarin we de constanten gewoon defineren .

Heb ook nog even gedacht om er een abstract clasje bij te maken, maar dit lijkt me niet goed idee omdat de functionaliteit ontbreekt.

Hetzelfde probleem doet zich voor bij de variabelenTypes(string,integer,object,etc), want zo heeft een classmember een type maar ook een methode parameter.

hoop dat jullie me een beetje begrijpen waar ik naar toe wil en dat er een mooie oplossing uit komt.

met vriendelijke groet
 
PHP hulp

PHP hulp

17/11/2024 08:44:57
 
Aron K

Aron K

09/11/2009 16:28:00
Quote Anchor link
Ik begrijp het niet helemaal volgens mij. Maar dit klinkt absoluut niet goed.
Ben je OOP in OOP aan het maken ofzo?
Je maakt toch gewoon in een classe een methode aan en je wilt toch niet methoden bewaren in een array en zo?
 
Jelmer -

Jelmer -

09/11/2009 17:14:00
Quote Anchor link
Eigenlijk moet je voor zulke constanten gebruiken—je accesstype mag maar één van die drie constanten zijn–maar PHP kent geen enums, helaas.

Als je naar PHP zelf kijkt, en dan bijvoorbeeld naar PDO, dan zie je dat zij deze class meteen als namespace voor hun constanten gebruiken (PDO::FETCH_ASSOC, welke je gebruikt in PDOStatement) en dat zou je kunnen doen, al weet ik niet wat bij jouw die meest bovenliggende class is.
 
Cygio

cygio

09/11/2009 19:36:00
Quote Anchor link
HoiHoi,

De vraag is misschien een beetje dom gesteld, Maar ik ben geen OOP in OOP aan het maken hoor.

Ik sla Mijn UML classdiagrams op als xml, deze wil ik dan uitlezen met php en zo mijn classdefinities en standaardcommentaar uit laten schrijven. De genereerde bestanden laad ik dan in mijn php editor. Zo heb ik weer wat typ werk uitgespaard en hoef ik enkel de methodes nog uit te werken en daarnaast is het een mooie leuke programeer oefening, voor een beginner.

maar jelmer schitterend voorbeeld haal je aan. Zo iets bedoel ik ook.

Nu heb ik het als volgt.

Nu gebruik ik twee verschillende constanten op de vo;gende manier.

In de class ClassMember heb ik een constante gedefineerd,
ACCESSTYPE_PRIVATE, deze roep ik waar dan ook als volgt aan ClassMember::ACCESSTYPE_PRIVATE.

In de class ClassMethod heb ik ook een constante ACCESSTYPE_PRIVATE gedefineerd, de aanroep van deze is dan vanzelfsprekend ClassMethod::ACCESSTYPE_PRIVATE

De meest bovenliggende class is de class Package waarin objecten zitten van het type ClassObject,waarin weer objecten zitten van het type ClassMembers & ClassMethods, etc

Dus waar is het netste?
 
Jan Koehoorn

Jan Koehoorn

09/11/2009 20:52:00
Quote Anchor link
Zoals je het nu hebt moet je de klasseconstantes voor public, private en protected twee keer definiëren. Waarom zet je ze niet gewoon in de parentclass?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    ini_set ('display_errors', 1);
    error_reporting (E_ALL | E_STRICT);

    class parentClass {
        const MA = 1;
        const DI = 2;
    }

    
    class childClass extends parentClass {
    
    }

    
    echo childClass::MA;
?>
 
Cygio

cygio

09/11/2009 21:47:00
Quote Anchor link
Hey jan spijker op zijn kop.

Dat is de kern van mij vraag, namelijk dat ik mijn constanten 2x moet defineren. De Reden dat ze niet in de parent class staan is omdat, die er domweg niet is .

De enige relatie tussen de classes is compositie.
Ontwerp foutje??
 



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.