[PHP5] "Echt" OO'en in webscripting talen

Pagina: 1
Acties:

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 15-10-2025
Hey,

ik ben al een tijdje bezig een site opnieuw te bouwen, en heb nu m'n twijfels over het wel of niet volledig OO'en van de site, nu PHP5 uit is.
Ik vind het veel fijner werken, en netter, als het allemaal gebeurd zoals bijvoorbeeld in Java, wat nu best goed mogelijk is met PHP5, maar ik vraag me af of hierdoor de performance niet achteruit zal gaan.
Ook krijg je bij een site waar een database achter hangt, al vrij snel erg veel classes, tenminste, dat denk ik nu.
Stel, je hebt bijvoorbeeld een simpel nieuws artikelen systeem met reacties daarop, met de volgende tabellen:

Artikelen
Artikel_Categorieen
Reacties

Als je het niet volledig in OO doet, kun je voldoen aan bijvoorbeeld 2 libraries (artikelen en reacties), met functies om desbetreffende zaken uit de database te trekken en op het scherm weer te geven.
Doe je het wel OO, dan heb je bijvoorbeeld de volgende classes;

Artikel
Artikel_Categorie
Artikel_Database
Reactie
Reactie_Database

(tenminste, dat spookt in m'n hoofd als ik over dit voorbeeld nadenk)

In totaal is het meer typewerk in het begin, en PHP krijgt gewoon meer te doen als hij de scripts moet verwerken... lijkt me. Of is dit niet merkbaar? (heb ook nog niet echt benchmarks van de nieuwe zend 2 engine kunnen vinden).
Het liefst doe ik het dus wel op een manier als die laatste, omdat dat overzichtelijker en leuker coden is. Maar als het ten koste gaat van de snelheid, dan kan/mag het gewoon niet.

Wat is jullie kijk op volledig OO'en in webscripting talen?

Edit:

Wat ik nog vergeet en waar ik ook veel aan denk: als je in een taal als Java een spel maakt, kun je dat vrijwel niet doen zonder OO te werken, door het OO te doen is het gewoon veel, veel makkelijker en veel minder werk.
Ik heb dus m'n twijfels of dat bij webprogramming ook wel nodig is, doen we niet te moeilijk als we alles in OO gaan programmeren?

Edit 2:

Heel toevallig kom ik zojuist ineens een artikel tegen op Devshed.com, dat ook over dit onderwerp gaat:

http://www.devshed.com/c/a/PHP/Conflict-PHP/2/
Zend has maneuvered PHP so that other companies who are in the enterprise software business consider it a legitimate language: Sun, Borland, Macromedia, etc. This is great for Zend so they can sell their accelerators and encryption packages, but again, this is moving PHP away from its user-base and toward Frankensteining PHP into whatever it needs to be that year in order for Zend to turn a profit. This may work for a few years, but in the long run, a successful software company needs its own identity.

PHP is a hypertext preprocessor. A hypertext preprocessor doesn’t require an object model as complex as Java, especially when hardly any members of the community use Java and the vast majority use the product because it’s simple. Instead of focusing on integrating with Java and rewriting the object-model, other actions could have been taken that would have strengthened PHP’s character instead of turning it into somewhat of a "wannabe."
Precies... :)

[ Voor 40% gewijzigd door TangLeFuzZ op 15-02-2005 23:33 ]


  • kmf
  • Registratie: November 2000
  • Niet online

kmf

even alleen ingaan op dat laaste zinnetje: Ik heb dus m'n twijfels of dat bij webprogramming ook wel nodig is, doen we niet te moeilijk als we alles in OO gaan programmeren?

Als er al jaren lekker makkelijk op de oude wijze veel sites tevoorschijn zijn getoverd en zo is gebleven, dan is de vraag natuurlijk wel overbodig.
Het streven naar OO is om herbruikbaarheid, overzichtelijkheid, etc te verhogen. ALs een stuk code helemaal ingekapseld kan worden in OO-vorm, dan is deze in ieder geval overdraagbaar en wellicht veel makkelijker te gebruiken dan nu het geval is. Maar de keuze voor OO ligt in ieder geval niet in de functionaliteit want wat met OO kan, kan met gestructureerd ook.

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
De eerste reactie op dat artikel vind ik wel sterk. Het hoeft niet meteen allemaal OOP, maar PHP5 biedt wel de mogelijkheid om er ver in te gaan als jij of je applicatie daar behoefte aan heeft. En ook al heeft OOP inderdaad wat performance overhead, vind ik niet dat je omwille daarvan een efficienter programmeermodel moet gaan hanteren, wanneer OOP ontwerptechnisch het meest geschikt is. Wanneer performace echt belangrijk wordt zijn er veel betere alternatieven (meer rekenvermogen, caching) om het hoofd te bieden aan verminderde performance.

En dat het meer coden is beleef ik juist precies andersom. Ik gebruik een PHP5 library om m'n DBAL classes te genereren (ook evt. voor PHP4 runtime). Die breid ik uit met wat DOM code om er kant-en-klare brokjes X(HT)ML van te breien die ik in m'n X(HT)ML template hang. Het geheel wordt eventueel nog even door een XSLT object gejast en klaar ;).

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Je hóeft niet OO te werken... maar het is, als je veel met een taal bezig bent, gewoon veel makkelijker:

Ik heb plm. 2 jaar in PHP gewerkt zonder OO te werken, met een hoop functie libraries en includes, wat gewoon erg onoverzichtelijk is als je bijvoorbeeld iets als een groot applicatiesysteem in PHP gaat bouwen. Plus, als je eenmaal 1 object geschreven hebt, kan je het zo in een andere site hangen, vooral die 'lego' gedachte erachter werkt heilig als je er eenmaal aan gewend bent, want je hoeft nooit meer functies om te katten van iets wat je al eens eerder gedaan hebt, je hoeft alleen maar je (al bestaande) object te extenden :)

[edit]
ik moet trouwens wel opmerken dat je het ook te gek kan maken. Ik ken php scripts die hebben echt van *alles* een object gemaakt, dan ben je 20 jaar bezig om bijv. uit te zoeken hoe je een hyperlink aan kan passen ergens.

Gebruik dus alleen objecten als het echt nodig is. Zo vind ik het onzin om een template een object te maken. dat is bij mij nog steeds gewoon een platte include met wat if()'s en switches erin omdat dat gewoon het snelst is :)

[ Voor 28% gewijzigd door SchizoDuckie op 16-02-2005 03:06 ]

Stop uploading passwords to Github!


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:32
athlonkmf schreef op Tuesday 15 February 2005 @ 23:35:
even alleen ingaan op dat laaste zinnetje: Ik heb dus m'n twijfels of dat bij webprogramming ook wel nodig is, doen we niet te moeilijk als we alles in OO gaan programmeren?
OO programmeren omdat het maar OO is, of omdat het hip of cool is, is idd niet nodig.
Echter, door OO te denken / ontwikkelen, kan je wel jouw probleem-domein op een betere manier gaan modelleren, waardoor de onderhoudbaarheid / duidelijkheid / aanpasbarheid / uitbreidbaarheid van je code wel groter wordt.
Als er al jaren lekker makkelijk op de oude wijze veel sites tevoorschijn zijn getoverd en zo is gebleven, dan is de vraag natuurlijk wel overbodig.
Dat vind ik nu ook weer geen goede gedachte; je moet niet altijd willens nillens bij je oude stramien blijven.
Hoeveel van die oude sites zijn er echt herbruikbaar ? Aan hoeveel van die 'oude' sites durf jij nog code-wijzigingen te doen ?
Voor eenvoudige sites is OO misschien geen noodzaak, maar voor grote applicaties is het gewoon veel beter om je project in verschillende lagen in te delen, een OO domein model te hebben, etc....
Dat is gewoon veel onderhoudbaarder en aanpasbaarder dan een site waar presentatie-logica, business-logica en data-access in elkaar verweven zijn.
Maar de keuze voor OO ligt in ieder geval niet in de functionaliteit want wat met OO kan, kan met gestructureerd ook.
Technisch gezien wel, maar niet op basis van onderhoudbaarheid, aanpasbaarheid, duidelijkheid, scheiding van functionaliteit, etc....

https://fgheysels.github.io/


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 15-10-2025
SchizoDuckie schreef op Wednesday 16 February 2005 @ 02:38:
ik moet trouwens wel opmerken dat je het ook te gek kan maken. Ik ken php scripts die hebben echt van *alles* een object gemaakt, dan ben je 20 jaar bezig om bijv. uit te zoeken hoe je een hyperlink aan kan passen ergens.

Gebruik dus alleen objecten als het echt nodig is. Zo vind ik het onzin om een template een object te maken. dat is bij mij nog steeds gewoon een platte include met wat if()'s en switches erin omdat dat gewoon het snelst is :)
Dat heb ik dus vrij snel... als ik er mee bezig ben, dan verlies ik mezelf er snel in en wordt van alles een object gemaakt, terwijl dat echt niet nodig is en misschien wel ten koste gaat van de snelheid :)

Het is en blijft idd een keuze, ik vond de eerste reacties op dat artikel ook wel vrij sterk... kon me er ook wel in vinden, ben ook met PHP begonnen als 1e programmeertaal, en ook toen het nog vrij simpel in elkaar zat allemaal... wat dat betreft was ik ook altijd wel erg blij met de vernieuwingen, maar ik merk alleen dat ik het soms iets te gek maak allemaal.
Pagina: 1