Sto diventando matto per una cosa che in verità dovrebbe essere stupidissima...non riesco ad implementare un Singleton Pattern!
Ho cercato in tutti i forum possibili immaginabili e ho provato tutte le seoluzioni, ma ogni volta che richiamo per esempio il metodo statico getInstanze(), quest'ultimo trova la variabile di classe statica sempre a null anche se è stata istanziata precedentemente! Come è possibile?
Nel caso specifico ho una index.php così fatta:
Codice PHP:
<?php
session_start();
try {
?>
<?php
include_once("config/Util.php");
include_once("config/Config.php");
include_once("fmwk/BaseServlet.php");
include_once("fmwk/HtmlUtil.php");
?>
<html>
<head></head>
<title>oCars</title>
<body>
<?php BaseServlet::getInstance()->initServlet(); ?>
</body>
</html>
<?php
} catch (Exception $e) {
$_SESSION['errore'] = $e;
require_once("front_end/common/globalException.php");
}
?>
e la classe baseServlet così fatta:
Codice PHP:
<?php
class BaseServlet {
private static $appConfig = null;
private static $instance;
private function __construct() {}
public static function getInstance() {
println("classe :".self::$instance);
if(!isset(self::$instance)) {
println("INSTANZIO...");
$object= __CLASS__;
self::$instance=new $object;
} else println("NON INSTANZIO");
return self::$instance;
}
function initServlet() {
if (self::$appConfig == null) {
println("parsing xml...");
$appConfig = simplexml_load_file('app-config.xml');
$config['initLang'] = (string)$appConfig->initLanguage['lang'];
$config['queryRepositoryPath'] = (string)$appConfig->queryRepository['path'];
$config['queryRepositoryName'] = (string)$appConfig->queryRepository['name'];
$config['dbName'] = (string)$appConfig->db['name'];
$config['dbHost'] = (string)$appConfig->db['host'];
$config['dbUser'] = (string)$appConfig->db['user'];
$config['dbPassword'] = (string)$appConfig->db['password'];
$config['frontEndPath'] = (string)$appConfig->front_end['path'];
$config['applicationResourcesPath'] = (string)$appConfig->applicationResources['path'];
$_SESSION['app-config'] = (array)$config;
$_SESSION['current-lang'] = (string)$config['initLang'];
} else println("NO PARSING");
}
}
?>
Il metodo getInstance() mi istanzia sempre una nuova classe BaseServlet...perchè??
Facio presente che questo pattern mi serve anche per parsare una sola volta i file xml e anche in questo caso non mi funziona!