Hallo PHP programmeurs,
Ik werk sinds ik op de middelbare school (2 jaar geleden) informatie heb gevolgd met PHP en dit bevalt me goed. Echter zit ik nu op een ICT opleiding waar Object Oriented Programming en efficient programmeren helemaal hot is.
Dit heeft bij mij enkele vragen opgeroepen over mijn PHP programmeren. Ik heb geleerd PHP te programmeren op waarschijnlijk de meest simpele en lelijkste manier en daar ben ik nu verandering in aan het brengen. Na al veel op internet gelezen te hebben zijn er een aantal vragen waar ik toch niet helemaal uit kom.
Een van die vragen betreft het OOP zelf, oftewel verschillende klassen maken waar je vervolgens weer objecten van kunt maken die dan vanalles doen. Mijn vraag: wanneer gebruik je dit nou in PHP? Op de opleiding leer je OO JAVA te programmeren en aangezien dit allemaal stand-alone programmatjes zijn zonder een database ofzo eraan vast is het handig om het in klassen te programeren. Ook vind ik (persoonlijke mening dus) het logisch om zo te programeren. Maar als ik dan ga kijken naar PHP & MySQL waar je met database connecties werkt en het geen 'programma' is dat een user meerdere keren achter elkaar uit kan voeren (telkens is er een compleet nieuwe sessie), roept het bij mij de vraag op wanneer je dan klasses zou gebruiken.
Ik ben nu op het punt dat ik voor alles functies opstel om vervolgens middels require in de pagina's te laden waar ze nodig zijn(dit omdat dit toch wel handig is als je aanpassingen moet maken + om cohesie van code te voorkomen.. iets wat ik imho al veel eerder had moeten doen). Vaak kan ik het met die functies alleen al af en kan ik me niet voorstellen dat je ooit klassen nodig zult hebben in PHP. Is dat dan OO genoeg? Of denk ik verkeerd?
Als iemand mij een voorbeeld zou kunnen geven van een geval waar je overduidelijk klassen nodig hebt wordt het hopelijk iets duidelijker.
Stel je wilt een forum maken waar een gebruiker kan inloggen en berichtjes kan plaatsen (heb ik eens voor informatie geprogrammeerd, werkte perfect, was ook een 10, maar als ik het nu bekijk had het wel netter gekunt), zou je dan in zo'n geval klassen gebruiken en wat voor dan? Want op zich kun je een klasse maken van 'topic' en dan een klasse 'bericht' en dan meerdere berichten 'objecten' koppelen aan één 'topic' object. Maar dit kan je dan toch net zo goed doen door via mysql te kijken welke childID's overeenkomen met het parentID en dan vervolgens de info ervan laden in een lus (met if-statements voor bijvoorbeeld het wijzigen van je eigen berichten). Immers als je naar de wijzig_bericht pagina gaat (als het een andere pagina is), moet je toch weer alle info van dat bericht opnieuw ophalen uit de database toch? want je zit in een andere pagina en tenzij je de gegevens hebt opgeslagen in de pagina waarin jouw huidige ding geinclude is, ben je ze best wel kwijt ($_SESSIONS,$_POST en $_GET zijn dan weer uitzonderingen). Of is het zo dat je die op een 'hoger niveau' opslaat in variabelen en dan vervolgens honderden object berichten in je geheugen hebt staan?
Ik geloof dat ik een beetje de weg begin kwijt te raken. Misschien is het ook wel zo dat je niet alles met klassen kunt / moet programeren maar alleen klassen die bijvoorbeeld een bepaald stukje output genereren / formatten / die je dus telkens opnieuw kunt gebruiken moet maken en de rest 'normaal' moet programeren ?
Dan nog een andere vraag ik lees af en toe van 'ik gebruik in mijn code vaak een abstractie laag om output en business logica gescheiden te houden'. Nou weet ik van JAVA dat het handig kan zijn om die twee gescheiden te houden zodat je het een aan kunt passen zonder dat je de werking van de andere beïnvloed en je dus makkelijk wijzigingen door kunt voeren. Maar als ik kijk naar mijn manier van PHP programmeren dan zit ik toch vaak met echo's te werken in functies e.d. Zou je dan om zo'n 'abstractie laag' te creeëren je functies om moeten gooien zodat ze altijd iets returnen en aan de hand van wat ze returnen laat je iets aan de gebruiker zien middels een echo? Of is het iets gecompliceerder dan dat?
Ik hoop dat iemand hier mij kan verlichten zodat ik toch eens code kan maken die ook door andere aan te passen is, aangezien dit wel zo handig is.
Met vriendelijke groet en alvast bedankt,
Martijn
Ik werk sinds ik op de middelbare school (2 jaar geleden) informatie heb gevolgd met PHP en dit bevalt me goed. Echter zit ik nu op een ICT opleiding waar Object Oriented Programming en efficient programmeren helemaal hot is.
Dit heeft bij mij enkele vragen opgeroepen over mijn PHP programmeren. Ik heb geleerd PHP te programmeren op waarschijnlijk de meest simpele en lelijkste manier en daar ben ik nu verandering in aan het brengen. Na al veel op internet gelezen te hebben zijn er een aantal vragen waar ik toch niet helemaal uit kom.
Een van die vragen betreft het OOP zelf, oftewel verschillende klassen maken waar je vervolgens weer objecten van kunt maken die dan vanalles doen. Mijn vraag: wanneer gebruik je dit nou in PHP? Op de opleiding leer je OO JAVA te programmeren en aangezien dit allemaal stand-alone programmatjes zijn zonder een database ofzo eraan vast is het handig om het in klassen te programeren. Ook vind ik (persoonlijke mening dus) het logisch om zo te programeren. Maar als ik dan ga kijken naar PHP & MySQL waar je met database connecties werkt en het geen 'programma' is dat een user meerdere keren achter elkaar uit kan voeren (telkens is er een compleet nieuwe sessie), roept het bij mij de vraag op wanneer je dan klasses zou gebruiken.
Ik ben nu op het punt dat ik voor alles functies opstel om vervolgens middels require in de pagina's te laden waar ze nodig zijn(dit omdat dit toch wel handig is als je aanpassingen moet maken + om cohesie van code te voorkomen.. iets wat ik imho al veel eerder had moeten doen). Vaak kan ik het met die functies alleen al af en kan ik me niet voorstellen dat je ooit klassen nodig zult hebben in PHP. Is dat dan OO genoeg? Of denk ik verkeerd?
Als iemand mij een voorbeeld zou kunnen geven van een geval waar je overduidelijk klassen nodig hebt wordt het hopelijk iets duidelijker.
Stel je wilt een forum maken waar een gebruiker kan inloggen en berichtjes kan plaatsen (heb ik eens voor informatie geprogrammeerd, werkte perfect, was ook een 10, maar als ik het nu bekijk had het wel netter gekunt), zou je dan in zo'n geval klassen gebruiken en wat voor dan? Want op zich kun je een klasse maken van 'topic' en dan een klasse 'bericht' en dan meerdere berichten 'objecten' koppelen aan één 'topic' object. Maar dit kan je dan toch net zo goed doen door via mysql te kijken welke childID's overeenkomen met het parentID en dan vervolgens de info ervan laden in een lus (met if-statements voor bijvoorbeeld het wijzigen van je eigen berichten). Immers als je naar de wijzig_bericht pagina gaat (als het een andere pagina is), moet je toch weer alle info van dat bericht opnieuw ophalen uit de database toch? want je zit in een andere pagina en tenzij je de gegevens hebt opgeslagen in de pagina waarin jouw huidige ding geinclude is, ben je ze best wel kwijt ($_SESSIONS,$_POST en $_GET zijn dan weer uitzonderingen). Of is het zo dat je die op een 'hoger niveau' opslaat in variabelen en dan vervolgens honderden object berichten in je geheugen hebt staan?
Ik geloof dat ik een beetje de weg begin kwijt te raken. Misschien is het ook wel zo dat je niet alles met klassen kunt / moet programeren maar alleen klassen die bijvoorbeeld een bepaald stukje output genereren / formatten / die je dus telkens opnieuw kunt gebruiken moet maken en de rest 'normaal' moet programeren ?
Dan nog een andere vraag ik lees af en toe van 'ik gebruik in mijn code vaak een abstractie laag om output en business logica gescheiden te houden'. Nou weet ik van JAVA dat het handig kan zijn om die twee gescheiden te houden zodat je het een aan kunt passen zonder dat je de werking van de andere beïnvloed en je dus makkelijk wijzigingen door kunt voeren. Maar als ik kijk naar mijn manier van PHP programmeren dan zit ik toch vaak met echo's te werken in functies e.d. Zou je dan om zo'n 'abstractie laag' te creeëren je functies om moeten gooien zodat ze altijd iets returnen en aan de hand van wat ze returnen laat je iets aan de gebruiker zien middels een echo? Of is het iets gecompliceerder dan dat?
Ik hoop dat iemand hier mij kan verlichten zodat ik toch eens code kan maken die ook door andere aan te passen is, aangezien dit wel zo handig is.
Met vriendelijke groet en alvast bedankt,
Martijn