instance uitlezen in __construct
Ozzie PHP
23/11/2010 10:45:11Wie kan mij dit uitleggen? Als ik de 1e keer Foo::setInstance() aanroep dan wordt in de __construct() var_dump(self::$instance) uitgevoerd. Waarom komt hier als resultaat NULL uit? Als ik vervolgens Foo::test() of nog een keer Foo::setInstance() aanroep dan krijg ik wel een object terug. Kan iemand me dat uitleggen?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
Foo::setInstance(); // resultaat is NULL
Foo::test(); // resultaat is object(Foo)#4 (0)
Foo::setInstance(); // resultaat is object(Foo)#4 (0)
?>
Foo::setInstance(); // resultaat is NULL
Foo::test(); // resultaat is object(Foo)#4 (0)
Foo::setInstance(); // resultaat is object(Foo)#4 (0)
?>
Code (php)
Gewijzigd op 23/11/2010 10:45:36 door Ozzie PHP
PHP hulp
25/12/2024 04:23:33TJVB tvb
23/11/2010 10:49:34is toch logisch?
Wat je doet is:
1 aanroepen setInstance()
2 er wordt een nieuwe Foo gemaakt
3 in de constructor van Foo gebeurt een var dump van $instance
4 Foo wordt in $instance geplaatst
5 aanroepen test()
6 test doet een var dump van $instance
7 aanroepen setInstance()
8 er wordt een nieuwe Foo gemaakt
9 in de constructor van Foo gebeurt een var dump van $instance
10 Foo wordt in $instance geplaatst
de eerste vardump is bij stap 3 terwijl je pas bij stap 4 de variabele set.
Wat je doet is:
1 aanroepen setInstance()
2 er wordt een nieuwe Foo gemaakt
3 in de constructor van Foo gebeurt een var dump van $instance
4 Foo wordt in $instance geplaatst
5 aanroepen test()
6 test doet een var dump van $instance
7 aanroepen setInstance()
8 er wordt een nieuwe Foo gemaakt
9 in de constructor van Foo gebeurt een var dump van $instance
10 Foo wordt in $instance geplaatst
de eerste vardump is bij stap 3 terwijl je pas bij stap 4 de variabele set.
Ozzie PHP
23/11/2010 10:52:59Thanks voor je snelle reactie, maar die new Foo() die wordt toch in de setInstance() al in de variabele self::$instance gezet?
TJVB tvb
23/11/2010 10:56:34Ja, maar je maakt eerst die Foo aan, tijdens het aanmaken (in de constructor) roep je die vardump aan en daarna plaats je het in de variabelen.