[PHP / ALG] Opbouw modulair systeem

Pagina: 1
Acties:
  • 285 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
Hoioi,

ik heb niet direct een probleem, maar vroeg me meer af hoe anderen dingen aanpakken / er slimmere methodes te bedenken zijn..

Ik ben nu bezig in php, maar t gaat waarschijnlijk op voor veel meer talen..
Ik wil mijn sites modulair opbouwen, dat wil zeggen (hypothetisch):
  • ik heb een bestand dat database connecties afhandelt (db.php)
  • een bestand dat sessieafhandeling regelt (sessie.php)
  • een bestand dat inloggen en beveiliging regelt (beveiliging.php)
  • een bestand dat gastenboek afhandeling regelt..(gastenboek.php)
Mijn sessieafhandleling doe ik in een database dus db.php is nodig.

sessie.php
PHP:
1
include "db.php";


Mijn beveiliging.php heeft sessies nodig, dus zal sessie.php includen

beveiliging.php
PHP:
1
include "sessie.php";


Ook mijn gastenboek heeft databaseondersteuning nodig dus:

gastenboek.php
PHP:
1
include "db.php";


-----

Dit gaat allemaal prima natuurlijk..
Maar het volgende geval gaat dan natuurlijk mis; ik maak een pagina index.php die gebruik maakt van een gastenboek en beveiligd moet zijn.

PHP:
1
2
include "beveiliging.php";
include "gastenboek.php";


Dit gaat fout omdat db.php nu dus twee keer geinclude wordt, met als gevolg dubbele declaraties van functies...

Ik moet echter wel die db.php laten includen in gastenboek.php omdat dat script ook zonder beveiliging zou kunnen draaien en ik er niet vanuit mag gaan dat db.php al eerder geinclude is..

Mijn oplossing zou zijn om een globale variabele includes te maken waarin ik check of een bestand al geinclude is, alvorens het te includen..

PHP:
1
2
3
4
5
6
function includemetcheck($needed){
global $INCLUDES;
   if (!in_array($needed,$INCLUDES)){
      include $needed;
   }
}


Zodat ik ipv include gewoon includemetcheck("blabal'php"); doe..
en gewoon in elk bestand aan kan geven welke hij allemaal nodig heeft..

een groot verhaal, en t werkt dus ook allemaal prima op deze manier, maar t is dus ook meer de vraag of dit een handige aanpak is/ er slimmere methodes te bedenken zijn...

ik hoop dat er wat uit komt!

Acties:
  • 0 Henk 'm!

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

een header waarin je de juiste dingen include

Multimonitor is relax :P


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.


Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
MeIsTwisted schreef op zaterdag 21 mei 2005 @ 14:30:
een header waarin je de juiste dingen include
Ja ok, maar hoe zie je dat voor je dan?
hier kan ik natuurlijk niks mee, want in die header zul je toch ook eerst moeten checken, of deze pagina wel of te niet, bestanden nodig heeft die misschien al geinclude zijn?

Acties:
  • 0 Henk 'm!

  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
Aah, die kende ik niet,

ja dat lijkt een goede oplossing, maar toch vraag ik me af, zijn er meer/betere methoden?

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 20:37
Dat is de beste methode

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
require_once is meestal nog beter, aangezien je absoluut niet verder wilt of kunt gaan als bv. je database-module niet beschikbaar is.

Overigens heeft het zo opsplitsen van functionaliteit ook als voordeel dat je niet altijd al je code hoeft te parsen, maar alleen de onderdelen die je gaat gebruiken.

[ Voor 34% gewijzigd door Soultaker op 21-05-2005 15:02 ]


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 22:05

pietje63

RTFM

Ik weet niet hoe de rest van je site opgebouwd id, maar ik include de db.php meestal in het bestand main/index en laad daarna pas beveiliging/gastenboek etc. Aangezien ik de database voor elke pagina nodig heb.

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • DirkT
  • Registratie: Juli 2002
  • Niet online

DirkT

toet

ik ga hierin met pietje63 mee, een connectie opzetten zou ik niet default in een andere librairy doen.

Ik werk zelf met smarty en dan heb je echt een presentatie een persistentie en een buisinesslaag als je dat wat zegt. Dat moet ik nu ook op mijn opleiding toepassen maar eigelijk deed ik dat dus al.

Het werkt als volgt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// Dit is de index.php file

include "pad/naar/lib.php";
include "pad/naar/libs/gastenboek.php";

// Handel hier alles af wat een bezoeker kan doen, hiermee bedoel ik dus alles 
// wat met Get en Post te maken kan hebben

// dit is de enige file waar ook maar iets gedisplayed wordt. Alleen hier kunnen 
// dus echo print of html dingen in voorkomen. Aangezien ik het ook nog eens 
// met smarty doe kan je dan ook je html wegdenken uit deze file want die 
// komen dan in template files te staan
?>



PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Dit is de lib.php file

// Maak je database connectie

// eventueel andere includes met librairies die je overal gaat nodig hebben
include "pad/naar/libs/mailing.php";

// Verder staan hier functies in die je overal zou kunnen gebruiken. Ik heb er 
// bijvoorbeeld functies instaan die mysql niet ondersteunt zoals 
// mysql_fetch_all maar wel erg handig is.
?>


PHP:
1
2
3
4
5
6
7
8
9
<?php
// Dit is de gastenboek.php file

// eventueel andere includes met librairies die je alleen nodig hebt bij het 
// gastenboek
include "pad/naar/libs/smileygeblaat.php";

// Hier komen alle functies die te maken hebben met het gastenboek
?>

[ Voor 11% gewijzigd door DirkT op 21-05-2005 15:43 ]

iRacing profiel - FanaLEDs voor je racesimulatie displays en meer!


Acties:
  • 0 Henk 'm!

  • snoopy
  • Registratie: December 2000
  • Laatst online: 17-08 08:27
Ik weet niet hoe ver je wil gaan in het modulair opbouwen van je systeem, maar een aardig topic over het opzetten van een framework is bijv: [rml][ PHP] Hoe site coden; teveel standaards! (discussie)[/rml]

In dit topic worden een aantal technieken besproken om een systeem modulair op te zetten en zodoende allemaal stukjes te creeren die later herbruikbaar zijn.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Echt lekker modulair opbouwen doe je object georienteerd. Handig in php5 is dan de magische functie __autoincludeload() welke wordt aangeroepen als je een class probeert te gebruiken die nog niet gedefineerd is. Dan hoef je je zelf geen zorgen te maken om allerlei includes, behalve een config bestandje etc.

edit:

ahum.. load ja :P

[ Voor 8% gewijzigd door Michali op 22-05-2005 13:22 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Michali schreef op zaterdag 21 mei 2005 @ 18:25:
Handig in php5 is dan de magische functie __autoinclude() welke wordt aangeroepen als je een class probeert te gebruiken die nog niet gedefineerd is.
Zijn ze weer aan het veranderen geweest bij PHP of bedoel jij __autoload?
Pagina: 1