Hoe require_once declareren als 'is geladen'?
Dus wat ik eigenlijk wil is aan PHP aangeven dat die file al geladen is.
Ik heb me suf gegoogled, maar voorzover ik weet bestaat er niet iets als:
set_require_once_to_loaded($file);
Kun je anders je vraag wat duidelijker formuleren?
Indien je eerst met require_once een class in een php file laadt, maar later include (zonder require_once) een andere file de zelfde class, dan krijg je een probleem.
Als je de volgorde omdraait, is er geen probleem.
Een voorbeeld:
index.php , gastenboek.php en mijnclasses.php (in de zelfde folder)
index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
/* Indien je eerst de classes laadt met require_once en daarna include't een file die, krijg je een probleem */
/* Als je volgende lijn uit commentaar haalt, krijg je een error */
// require_once ('mijnclasses.php');
echo "Eerst gastenboek.php includen<br/>";
include ('gastenboek.php');
echo "gastenboek.php heeft al mijnclasses.php ge-include; we gaan die opnieuw require_once'en <br/>";
require_once ('mijnclasses.php');
echo "toch geeft dat geen probleem dat de class al gedeclareerd is geweest";
?>
/* Indien je eerst de classes laadt met require_once en daarna include't een file die, krijg je een probleem */
/* Als je volgende lijn uit commentaar haalt, krijg je een error */
// require_once ('mijnclasses.php');
echo "Eerst gastenboek.php includen<br/>";
include ('gastenboek.php');
echo "gastenboek.php heeft al mijnclasses.php ge-include; we gaan die opnieuw require_once'en <br/>";
require_once ('mijnclasses.php');
echo "toch geeft dat geen probleem dat de class al gedeclareerd is geweest";
?>
gastenboek.php
mijnclasses.php
Gewijzigd op 23/01/2012 12:42:18 door Kris Peeters
Ik declareer een class via eval:
(niet netjes, weet ik, maar enige manier om framework te overriden)
eval('class dingclass{ etc.etc.');
Als er een andere plugin dan de file met dezelfde classname include, gaat het fout omdat die class al geladen is.
Daarom zou ik na de eval (waarmee dus de class geladen is, maar niet de file) aan PHP willen zeggen dat die file al geladen is.
Wat vooral als vraag bij mij op komt is, wat doe je met eval? Misschien begrijp ik je wel helemaal verkeerd, maar het lijk mij niet logisch om eval te gebruiken voor het includen. Hierdoor ben je denk ik bezig een probleem op te lossen wat niet het probleem is.
-----
Maar dan nog blijft het zelfde probleem van de volgorde.
Op welk moment include't het framework die class?
-----
Eventueel kan je het ook doen bij de class zelf.
(Met c++ had ik dat ook af en toe voor, in .h files - Daar bestaat ook een oplossing die hier wat op trekt)
Gewijzigd op 23/01/2012 16:55:16 door Kris Peeters