php business logic structuur

Pagina: 1
Acties:

  • knijnsel
  • Registratie: Januari 2002
  • Laatst online: 21-08 14:32
Hoi,

Wegens een te bouwen informatiesysteem ben ik zoek een mooie structuur om een '3 tier' achtige contructie in PHP te maken. Nee, ik wil geen ASP/JSP gebruiken maar PHP.
Mijn angst is, dat als ik straks een heel systeem gebouwd heb, dit absoluut niet onderhoudbaar is omdat alle PHP ontzettend verweven is met de HTML pagina's.

Ik gebruik PHP nu voornamelijk in losse scripts die ik vanuit de webpagina include maar echt mooi en onderhoudbaar (voor een ander!) wordt het daar niet van.
Mijn idee is vooralsnog:
- css voor layout
- sessies tbv authorisatie
- algemene functies voor rechten en paginaopbouw
Maar de data, sql statements moet ik toch elke keer per pagina aan die HTML forms koppelen, of heb ik het mis. Als ik dan datavelden toevoeg moet ik al die forms wijzigen.
Verder: als er wijzigingen komen in constanten of rules, hoe verwerk ik dat centraal? Al die dingen eenmalig in de sessie definieren bij het inloggen?

Je ziet het, een hoop vragen.
Ik hoop dat een van jullie hier een goed idee voor heeft.

Fulco

<knijnsel> De nederlandstalige GuildWars site


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
gebruik voor je output de smarty engine (smarty.php.net)

  • airwalker_nl
  • Registratie: December 2001
  • Laatst online: 29-10-2022
Nielsz schreef op 01 augustus 2002 @ 09:49:
gebruik voor je output de smarty engine (smarty.php.net)
light het nou aan mij of doet die url het niet :(
Maar deze is hetzelfde volgens mij:
http://www.phpinsider.com/php/code/Smarty/

Vruchtensap? Oh, je bedoelt Breezer Malt - Loesje


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
airwalker_nl schreef op 01 augustus 2002 @ 10:08:
[...]
light het nou aan mij of doet die url het niet :(
Maar deze is hetzelfde volgens mij:
http://www.phpinsider.com/php/code/Smarty/
Yep, lees de eerste regel daarvan maar eens B) ;)
maar php.net is een beetje fucked up vandaag denk ik, de frontpage ook al.

Back ontopic:

Wat wil je nu precies? Wil je een generieke manier om formulieren af te handelen bouwen?

Verwijderd

Dit was 1 van de eerste vragen die ik ooit op dit forum stelde zo'n 2 jaar geleden denk ik, en ik heb er eigenlijk nooit een goed antwoord op gehad. Zelf heb ik er echter wel wat gedachtes over, maar geen ervaring mee, aangezien ik zelf geen PHP gebruik.

Je kan de code voor business logic en layout zo veel mogelijk van elkaar scheiden door gebruik te maken van template engines (er zijn er meerdere voor PHP). Daarnaast kan je ook met includes werken, om samenhangende code gestructureerd bij elkaar te houden.

Als je PHP onder Windows draait kan je de Windows DNA structuur aanhouden door gebruik te maken van COM objecten die je vanuit je PHP code aanroept. Onder alle OSen is er ook ondersteuning voor CORBA, maar da's niet eenvoudig als je dat nog nooit gedaan hebt, en misschien ook niet echt geschikt hiervoor.

Een ander alternatief is door je web applicatie op te bouwen in lagen. Je kunt met PHP webservices bouwen, waarin je de business logic inbouwt en die je vervolgens vanuit een uiser interface laag aanroept. Op deze manier wordt de performance niet echt super, maar is alles wel mooi gescheiden en kun je je applicatie ook super schaalbaar maken.

Succes :)

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Binnen PHP is het best mogelijk om je bussiness logic te scheiden van je interface. Echter is het van belang dat je dit consequent doet. Binnen php is het heel gemakkelijk om foefjes uit te halen om die structuur weer te verbreken. Wat je kunt doen :
Maak een mooi objectmodel voor je systeem. Maak gebruik van Objecten binnen php. Vermeld bij elke klasse of ie privatie public is en dat soort dingen evenals bij de functies en variabelen. Hierdoor wordt het wat overzichtelijker. HOUD JE AAN DIE ACCESS MODIFIERS !
Zorg er voor dat er geen enkel stukje html code in je klasses zit. Of het moet om een GUI klasse gaan. Maar ik zou geen GUI klasse gebruiken maar gewoon een mooie include met een serie functies. klasse zou toch final static zijn en daarmee is een klasse onnodig.

Ja aangezien een deel van het systeem bestaat uit het invoeren van gegevens kun je kiezen voor de volgende structuur : form.php - bevat de bussineslogica voor dat form en maakt gebruik van de gemaakt objecten. form.html.php het daadwerkelijk HTM gedeelte.

Voor het weergeven van lijsten zou ik gewoon vertrouwen op de ouderwetse methode. Query en displayen maar in een pagina. Niet eerst van al sie rijen objecten maken, das allemaal te langzaam.

Natuurlijk kun je hier veel verder in gaan en allerlei mechanisme bedenken, maar houd er rekening mee dat hoe meer mechanisme hoe meer je in eerste instantie moet programmeren en hou onduidelijker het wordt. Met het systeem zoals ik dat gebruik is het mogelijk om grote pakketten te maken alf fora en webwinkels en is het heel makkelijk om te recyclen en dat is nog wel het belangrijkste.

Succes

Verwijderd

http://www.phpbuilder.com/columns/tim20001010.php3

Hoewel in dit artikel wat verkeerde uitspraken bevat over het verschil (of de overeenkomst) tussen OO en functionalisatie, is het idee erachter wel goed.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Misschien moet je anders even op zoek gaan naar het MVC design pattern. Daarin wordt ook een onderscheid aangebracht tussen je model ( business logic ) en je visualistatie mbv events. Dit is een vaak gebruikte aanpak om dit soort problemen op te lossen.

(Ik neem aan dat je in php zelf ook event in elkaar kan plakken, want het is eigelijk niets anders dan een callback systeem en daar heb je geen speciale constructies voor nodig)

[edit] wat gaat GoT langzaam!! pff...

  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 13-08 18:15

gvdh81

To got or not to got..

ik heb zelf momenteel een systeem gemaakt met sessies, mysql, php en html templates..

De CSS wordt voor iedere pagina specifiek gemaakt. Omdat ik sessies gebruik loopt dus het hele project op PHP. daarna doe ik de includes en vervolgens bouw ik de css, parse ik de querys en zodoende parse ik de template. Als je echt met dynamische forms wilt gaan werken (add/edit/delete etc voor ieder record in 1 tabel) lijkt me wel lastig. Momenteel zit er helemaal GEEN php in mijn html templates, dus voor iedere koekebakker is het nog te begrijpen hoe de pagina is opgebouwd.

ik gebruik "<!--dbCSS-->" bijvoorbeeld in de "<HEAD>" tag wat vervangen wordt door mijn template parser.. en zo heb ik nog meerdere dingen...

  • knijnsel
  • Registratie: Januari 2002
  • Laatst online: 21-08 14:32
okay jongens en meisjes.

Ik heb uit bovenstaande informatie een hoop ideeen gekregen. Ik ga de url's die genoemd zijn bekijken en de info aldaar absorberen.

Hartstikke bedankt voor jullie inzet!
Knijnsel

<edit>
Ha! Op http://www.zend.com/zend/tut/tutsweatpart1.php staat een hele howto voor een 3tier structuur gebaseerd op PEAR/SMARTY. Meer Leesvoer dus.

<knijnsel> De nederlandstalige GuildWars site

Pagina: 1