PHP Shorthand & meer..

  • Hallo leden,


    Op het moment focus ik me volledig op het programmeren van website's, daarvoor wil ik ook steeds nieuwe technieken voor toepassen. Door dat kom ik wel tegen een aantal vragen.


    Hoe gebruik ik PHP shorthand?


    Daarnaast kom ik ook andere functies tegen die je kan gebruiken bij je classes. Zoals: extends & namespace.


    Hoe ik denk dat ik extends moet gebruiken :


    Stel ik heb 2 classes Clas A & Clas B
    Class A extends Class B


    Dat wil zeggen dat ik alle functies uit Class B kan gebruiken in Class A


    Daarnaast heb ik ook wat oplopen zoeken over namespaces maar ik weet niet waarvoor ik dat zou moeten gebruiken en wat voor functionaliteit het heeft?


    Wie o wie kan mijn vragen beantwoorden?


    Groeten en een fijne kerst avond!

  • Over extend:


    Stel je hebt 2 classes. Een genaamd 'auto' en de ander genaamd 'wiel'.
    Je kunt wel doen wiel extend auto. Een auto heeft ook eigenschappen van een wiel. Het omgekeerde kan dan weer niet, want een wiel heeft niet alle eigenschappen van een auto.


    Over namespaces:


    Ik heb ze zelf nog nooit gebruikt, maar ze zijn handig als je grote projecten hebt. Je kunt dan de verschillende onderdelen van je project onderverdelen in namespaces. ;)

  • Het kan wel in één regel maar waarom zou je dit willen? Je code wordt er heel onduidelijk van.


    dan zou ik het nog eerder zo doen;



    of zo



    Qua classes zit je wel in de richting ja. Hoe je het zou kunnen zien, je hebt Users en Administratoren.
    Maar een administrator is net zo goed een gebruikers, alleen heeft deze extra functionaliteit rechten.


    dan krijg je zo iets



    (Het forum vernaggelt al mijn inspringingen, sorry daarvoor)



    Wat betreft namespaces, deze gebruik je om bijv. Class namen meerdere keren te gebruiken in je code en om deze op een logische wijze te structureren.


    Je maakt dan een folderstructuur aan die er zo uit kan zien;


    ToonData/Csv/Genereer.php
    ToonData/Xml/Genereer.php


    met als code voor die 2 php bestanden bijv;


    PHP
    <?php namespace ToonData\Csv;
    
    
    class Genereer 
    {
        public function toon()
        {
            
        }
    }


    PHP
    <?php namespace ToonData\Xml;
    
    
    class Genereer 
    {
        public function toon()
        {
            
        }
    }


    En op de plek waar je het gebruikt;



    ( Zoals het in dit voorbeeld is gebruikt is het ook handig zijn om het tegen een interface aan te gooien )


  • Viktor, hier moet ik je tegenspreken. Een auto inherit(extend) niet van wiel, een auto heeft een wiel (has-a) ipv (is-a). Ipv Inheritance te gebruiken (aka extenden), ga je hiervoor composition gebruiken (Wiel objecten als members van een auto geven). Een beter voorbeeld is 'Voertuig', wat een base class zou zijn, eventueel zelf een 'abstract class' (niet zeker of dit toepasselijk is in PHP, te lang geleden), met als subclassen Auto, vrachtwagen, trein enz. Dit zijn allemaal soorten voertuigen, die voldoen aan wat een auto moet kunnen doen.


    Qua namespaces is de uiteg van DirkZz goed!
    Namespaces worden inderdaad zo goed als standaard gebruikt bij 'grotere' projecten. Dit is zeker handig in het geval wanneer je libraries gaat includen (dit is toch zo bij C++), de kans bestaat namelijk dat deze dezelfde classe namen gebruiken. Door eigen namespaces te introduceren gaat de kans op ambiguïteit naar beneden.

  • Hallo,


    Bedankt voor de tijd die jullie namen om een goed en uitgebreid reactie te plaatsen!
    Daarnaast wil ik er ook nog wat aan toevoegen.


    PHP Shorthand:
    Ik vind het persoonlijk wel fijn werken, en ook overzichtelijk!

    Code
    ($_POST['pass1'] == $_POST['pass2']) ? true : $display[] .= 'passwords are not the same!';
        (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) ? true : $display[] .= 'This is not a valid email adres';


    Je voert in een paar korte (ik vind duidelijke) regels een controlle uit. Alleen dat is natuurlijk mening's verschillen.


    Daarnaast vind ik het voorbeeld van DirkZz het beste uitgelegd over het gebruik van Extends. Het is een handige manier op klassen met elkaar te verbinden (weer wat geleert!) Thankss!..


    De functionaliteit van namespaces is me wel duidelijk, alleen zou ik zelf niet weten hoe ik het moet gebruiken en waarbij. Maar misschien is dat omdat ik zelf geen super grote projecten heb lopen?


    In iedergeval thanks!

  • Terwijl jij het typt vind jij het handig ;)


    Maar wat als je het over een paar maand terug moet lezen omdat er een fout in zit? Of wanneer een andere programmeur er naar moet kijken omdat er iets mee is?


    Wat is dan beter denk je? Jouw voorbeeld of iets als dit;

  • Hoe gebruik ik PHP shorthand?

    Je fout is return $this->product = $select->fetchAll(PDO::FETCH_OBJ);


    je code moet dit zijn:

    PHP
    $this->product = ($select->rowCount() == 0) ? 'This product does not exist!' : $select->fetchAll(PDO::FETCH_OBJ);
  • @blaxus dit topic is bijna een jaar oud :/


    Daarbij is het wellicht syntactisch correct wat je doet, maar ik zou daar wel wat semantische vragen bij hebben :).


    Er staat $this->product. Dan verwacht ik eigenlijk precies één resultaat. Een fetchAll zou dan eigenlijk misplaatst zijn want dit levert dan mogelijk meerdere resultaten op.


    Wat ik zou doen is controleren of er precies één resultaat is (rowCount() == 1) en dan dit ene resultaat retourneren (met simpelweg fetch()). Alle andere resultaten / aantallen zijn naar alle waarschijnlijkheid incorrect.


    Ook zou ik geen string als foutmelding retourneren, maar simpelweg false retourneren (wat meestal aangeeft dat er iets mis is) of een exception throwen.

Participate now!

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