[PHP] require_once meerdere levels

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Ik heb wat code:

// bla.php
PHP:
1
2
3
4
require_once ("extend/mysql.class.php");

if(statement)
require_once ("includes/bla.inc.php");


// bla.inc.php
PHP:
1
require_once ("../extend/mysql.class.php");


Dan krijg ik de melding dat ik de class mysql.class.php niet kan redeclaren.
Het gekke is, wanneer ik bla.inc.php in dezelfde folder zet als bla.php (en dus ../ voor de require_once weghaal) is er niks meer aan de hand.

Beetje raar, bug of fout van mij? :|

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

als je php5 gebruikt dan moet je eigenlijk gewoon gebruik maken van de __autoload() functie...

PHP:
1
2
3
4
5
6
function __autoload($className)
{
   include_once('./includes/'.$className.'.class.php');
}

$mysqldb = new MysqlDB();


als een class niet bestaat wordt er automagisch de functie __autoload() aangeroepen, met als parameter de class name. Die kan je dan automagisch includen, en je script gaat weer verder. Scheelt een _hoop_ gekloot :)

(ook als je in je mysqldb class dus weer subclasses aanroept, en er voor zorgt dat deze netjes in een aparte file staan, werkt dat dus gewoon automagisch :) )

[ Voor 29% gewijzigd door SchizoDuckie op 08-04-2005 16:06 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die include die je doet in bla.inc.php moet relatief zijn aan het PHP-script op het laagste niveau.

Verder lees ik op PHP.net iets wat volgens mij ook opgaat voor require_once:
Omdat include() een speciale taal constructie is, ben je verplicht deze te omgeven met een statement blok als het include() statement zich in een conditionele constructtie bevind.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* Dit is FOUT en zal niet werken zoals het bedoeld is */
 
if ($condition)
   include($file);
else
   include($other);
 
/* Dit is GOED. */
 
if ($condition) {
   include($file);
} else {
   include($other);
}

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.