Sinds ben ik bezig met het afstoffen van mijn PHP-kennis en meteen maar in OO PHP5 te springen. Ik kom nu echter een aantal keer het zelfde probleem tegen:
Wanneer ik een object aan probeer te maken (maakt weinig uit of het een eigen object is of een PEAR object) stopt de hele applicatie zonder foutmeldingen of wat dan ook.
Het komt nu voor met deze code:
De output in dit voorbeeld is:
Een vergelijkbare situatie doet zich voor wanneer ik PEAR::Log gebruik met sql (MDB2).
Mijn ontwikkelomgeving is eclipse (php plugin). Voor het draaien van de scripts gebruik ik apache 2.2.4 en php 5.1.6, mysql 5.0.27. Dit hele gebeuren draait op een linux machine (Fedora Core 6).
Het is niet duidelijk wat er niet goed gaat en/of waarom niet, zowel de error_log als de access_log geven niets raars aan, ik zie alleen de request staan.
Heeft iemand dit eerder gehad en opgelost? Zie ik misschien iets heel duidelijks over het hoofd?
Het probleem is dus eigenlijk dat ik geen nieuwe instanties van classes aan kan maken, met de bovenstaande code.
Wanneer ik een object aan probeer te maken (maakt weinig uit of het een eigen object is of een PEAR object) stopt de hele applicatie zonder foutmeldingen of wat dan ook.
Het komt nu voor met deze code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| <?php /* Project: spcms * Filename: database.php * Created on May 28, 2007 8:13:17 PM * * @author Bob */ require_once 'MDB2.php'; require_once 'MDB2/Driver/mysql.php'; class Database { private $_dsn; private $_options; private $_conn; static $INSTANCE; private function __construct(Config $conf) { echo("construct"); $this->_dsn = $conf->dbtype .'://'.$conf->dbuser.':'.$conf->dbpass.'@'.$conf->dbhost.'/'.$conf->dbname; $this->_options = null; $this->_conn =& MDB2::connect($this->_dsn, $this->_options); echo("DSN: ".$this->_dsn); if(PEAR::isError($this->_conn)) { echo("Fatal error: database connection failed.<br />"); die($conn->getMessage()); } } public static function getInstance() { echo("hi!<br />"); if(!isset(self::$INSTANCE)) { echo("notset<br />"); $c = __CLASS__; self::$INSTANCE = &new $c; echo("done"); } else { echo("was set!"); } echo("RETURNED instance"); return self::$INSTANCE; } public function testMe(){ echo("YAY!"); } } ?> |
De output in dit voorbeeld is:
code:
1
2
| hi! notset |
Een vergelijkbare situatie doet zich voor wanneer ik PEAR::Log gebruik met sql (MDB2).
Mijn ontwikkelomgeving is eclipse (php plugin). Voor het draaien van de scripts gebruik ik apache 2.2.4 en php 5.1.6, mysql 5.0.27. Dit hele gebeuren draait op een linux machine (Fedora Core 6).
Het is niet duidelijk wat er niet goed gaat en/of waarom niet, zowel de error_log als de access_log geven niets raars aan, ik zie alleen de request staan.
Heeft iemand dit eerder gehad en opgelost? Zie ik misschien iets heel duidelijks over het hoofd?
Het probleem is dus eigenlijk dat ik geen nieuwe instanties van classes aan kan maken, met de bovenstaande code.
[ Voor 2% gewijzigd door MindStorm op 30-05-2007 16:51 . Reden: beetje verduidelijking, later volgt meer ]