Scusate sono poco esperto di programmazione php, pare che entrambi i codici funzionino fino ad un certo punto, forse il problema risiede nella struttura della pagina, che proverò a spiegare.
Nella pagina index.html c'è un pulsante che invia un valore <input> ad una classe che interroga il database e se incontra il valore, istanzia la variabile nella classe Singleton. Se il valore su db è stato trovato index.html chiama pagina1.html che visualizza la variabile istanziata su Singleton.
Entrambi i codici postati funzionano fino alla chiamata di pagina1.html dopo pare che la classe Singleton si resetti.
codice:
-- file Index.php
<?php
if (isset($_POST['bottone1'])) {
// input valore
$val=$_POST["valinput"];
// Db.php controlla valore su db e istanzia la variabile della classe Singleton
require_once( "Db.php");
$result= getLOG($val);
// fino a qui entrambi i codici funzionano
if ($result) { // se == true (no errori nella ricerca su db)
// va a pagina1.html, da qui la classe Singleton è resettata !
$codiceOK= Array ();$codiceOK[0]="val1";$codiceOK[1]="val2";
$prova=urlencode(serialize($codiceOK));
$URL="/Pagina1.php?valore=".$prova."'";
header ("Location: $URL");
}
?>
-- file Pagina1.php
<?php
require_once( "Singleton.php");
$classB = new Singleton();
$name=$classB::getName();
echo "name :".$name;echo "<br>";echo "<br>";
?>
-- file Singleton .php
class Singleton { // funziona con entrambi i codici postati}
-- file Db.php
function getLOG($log) {
// legge db e torna il valore da scrivere sulla variabile nel Singleton (torna false se non trova nulla)
...
// istanzia la variabile della classe Singleton
require_once( "Singleton.php");
$classA = new Singleton();
$classA::setName($mercato);
... }
Grazie ancora.