Nieuw met classes

  • Ik ben beginner met classen en wil dat dan gaan leren.
    Ik heb deze class gemaakt, maar hij doet niet wat ik wil.



    En zo moet ie werken


    PHP
    $login = new Login("Jackie", "xxxx");
    
    
    $login->getNickname();


    Dat moet ie toch Jackie uitspugen lijkt me, maar dat doet ie niet.


    Wat doe ik fout?

    Bezig met een zelf gemaakte source, geschreven vanaf 0 natuurlijk!

  • Guest, wil je besparen op je domeinnamen? (ad)
  • PHP
    $login = new Login("Jackie", "xxxx"); 
    
    
    echo $login->getNickname();


    Waarom noem je je class niet gewoon "User"? Dat is veel generieker dan Login.
    En waarom gebruik je niet in plaats van getNickname() de magic method __get()?


    [offtopic]Oops, sorry voor het ervan uitgaan dat het logisch voor je lijkt, lees nu net pas dat je net begonnen was[/offtopic]


  • PHP
    $login = new Login("Jackie", "xxxx"); 
    
    
    echo $login->nickname;
  • Die underscore heb ik gedaan zodat je niet bij het wachtwoord kunt. Het is niet heel erg om getNickname te gebruiken, maar als je 10 properties van een gebruiker hebt die je public wilt kunnen aanroepen, wordt je code heel wat overzichtelijker door al dat soort methoden in één get methode te zetten.

  • Rahl: Eigenlijk niet. Private properties zijn private omdat niet iedereen er zomaar bij mag kunnen. Als je vervolgens een magic getter maakt kun je net zo goed geen visibility gebruiken. Daarbij kun je aan een gewone getter de return type defineren waardoor je IDE ook nog snapt wat je aan het doen bent. Daarbij wordt ook nog eens niet je hele code afhankelijk van de namen van de properties.


    Kortom: de magic getter is niet voor niets iets wat in heel weinig programmeertalen mogelijk is. Het is leuk bedacht, maar in de meeste gevallen niet zinvol. Alleen wanneer je datawrappers en weet ik het wel niet allemaal gaat maken, kun je hier je voordeel uithalen.

  • Citaat van Killingdevil

    Rahl: Eigenlijk niet. Private properties zijn private omdat niet iedereen er zomaar bij mag kunnen. Als je vervolgens een magic getter maakt kun je net zo goed geen visibility gebruiken. Daarbij kun je aan een gewone getter de return type defineren waardoor je IDE ook nog snapt wat je aan het doen bent. Daarbij wordt ook nog eens niet je hele code afhankelijk van de namen van de properties.


    Kortom: de magic getter is niet voor niets iets wat in heel weinig programmeertalen mogelijk is. Het is leuk bedacht, maar in de meeste gevallen niet zinvol. Alleen wanneer je datawrappers en weet ik het wel niet allemaal gaat maken, kun je hier je voordeel uithalen.


    Ik dacht dat het met getters juist de bedoeling was de variabelen 'read-only' te maken...

  • Citaat

    Ik dacht dat het met getters juist de bedoeling was de variabelen 'read-only' te maken...


    Klopt, maar als jij een class hebt met 10 properties wil je die meestal niet allemaal leesbaar maken. Daarbij is het al vreemd als je 10 properties in je class hebt (het is mogelijk, maar komt niet vaak voor).

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!