OOP is een relatief nieuwe programmeermanier. Het staat voor Object Oriented Programming. Het is mogelijk OOP te gebruiken in PHP. Wie doet dit, en bevalt het? Wat zijn de voor of nadelen?
Wie gebruikt liever de andere manier: Procedural Programming? Dus met functies, en geen OOP?
Ik script zoals ik script, ik gebruik classes voor sommige dingen, maar ik denk dat OOP verder gaat dan wat ik doe.. Ik denk dat ik er een beetje tussenin zit.
Wie doet dit, en bevalt het? Wat zijn de voor of nadelen?
Als het een logisch geval is, en als ik kan doe ik het.
Voordeel: logisch
Nadeel: langere parse tijd (maar daar heb ik geen last van).
Ik probeer het vooral op de JAVA manier na te bootsen, omdat je in JAVA verplicht bent met classes te werken en het noemt ook OOP (terwijl je niet altijd volgens het idee van OOP hoeft te programeren).
Ik vind het vooral leuk om een afgewerkt (mooi) OOP script nog is na te lezen en te zien dat het goed is gelukt.
Maar als het echt niet nodig is ga ik er geen classe omgooien (wat bij java verplicht is). Dus als ik bv. 2 functies maak (bv. explode_2 en implode_2) ga ik deze niet nutteloos linken, want het kost enkel etra parse tijd. Om bv. een rss reader of een template parser te maken zie ik er niets als voordeel in.
Ik denk dat de meeste mensen die classen gebruiken denken dat ze aan OOP doen. Ik denk ook dat de meeste mensen classen gebruiken ipv echt OOP. Meestal ook omdat ze het enkel als functioneel handig beschouwen: ik maak twee functies voor een nieuws systeem... Ooh, dit ziet er cool uit, ik ram ze bij elkaar... Jeej ik doe mee aan nieuwe technieken:)
Maar polymorphism en beschermde lidvariabelen/functies worden minder toegepast. Wat wel te begrijpen valt zeker?
een deftige OOP tutorial hier op de site zou niet mis staan. Maar ik vind van mezelf dat ik nog niet volledig alles gebruik wat ik van OOP zou kunnen gebruiken. Ik leer graag bij, maar als ik het nut er niet van in zie dan vind ik het dom om te gebruiken. Dit had ik eerst met het globale oop gedoe (ik revereer naar de mensen die aan "oop" doen via methodes te groeperen in classen) maar later ben ik dan toch eens gaan zien wat de voordelen gaven.
Vooral toen ik een template parser ontleede zag ik dat het bijna onmogelijk was dit te doen zonder OOP.
Maar nog altijd zit ik met de vraag, hoe werkt dat nu met blocks? Moet je dat via regexp omzetten naar loops (wat dan weer wordt geparsed naar html) of een andere methode? Iemand een idee?
Ik gebruik wel classes, omdat het zo overzichtelijk is, maar niet echt alle functie's van php5 & oop. Bij mij houdt het op bij
class naam {
functie1()
{}
functie2()
{}
}
Maar mijn huidige host is nog php4, dus laat ik het nog niet te moeilijk maken;-).
Ik gebruik OOP regelmatig, voornamelijk omdat het naar mijn mening meer de creatievere kant van de programmeur vraagt, wat het coden nog een tikkeltje interessanter maakt. Een stukje code is echter niet pas OOP als het gebruik maakt van patterns, dus staar je daar niet blind op.
Ik gebruik veel classes. Bij http://www.psarts.be is meer dan de helft van de code opgebouwd uit classes. extends gebruik ik ook vrij veel, maar private en public snap ik het nut niet van:s (ken het wel) en polymorphism? WA?:o
Toch denk ik dat polymorphism en bescherming niet vereist zijn voor een stuk "echt" oop werk (dus geen verzameling van methodes). Vooral de logica die de methodes verbind is het belangrijkste. Niet d extra mogelijkheden maar de verbinding tussen methodes (en niet door enkel bij 1 class te horen maar door lidvariabelen gemeenschappelijk te gebruiken op een logische manier).
Ik was eens aan't neuzen in een van men oude topics en toen kwam ik hier op uit. Dit is toch het grote idee achter OOP en toch wordt er geen gebruik gemaakt van polymorphism (bescherming wel, maar zou makelijk kunnen wegelaten worden).
In het gratis boek (online) Thinking in Java worden polymorphism, en ook veel andere OOP-zaken uitgelegd. Het is geen PHP, maar hier gaat het vooral om de principes, en niet om de syntaxis. Java lijkt best veel op PHP, dus als je de PHP-syntaxis kent kun je dit vast lezen: