Witam!
Posiadam trzy klasy w osobnych plikach.
astatic.php
<?php
class A
{
private static $var;
public static function Set($string)
{
self::$var = $string;
}
public static function Get()
{
echo self::$var;
}
}
?>
bstatic.php
<?php
include "astatic.php";
class B
{
public function __construct()
{
A::Set("test");
header("Location: cstatic.php");
}
}
$obj = new B();
?>
cstatic.php
<?php
include "astatic.php";
class C
{
public function __construct()
{
echo "Message from C: ";
A::Get();
}
}
$obj2 = new C();
?>
Moim celem jest inicjalizacja statycznego pola z klasy A z poziomu klasy B, a następnie przekierowanie do pliku klasy C, która to pole powinna odczytać.
Gdy umieściłem wszystkie klasy w jednym pliku i nie wysyłałem headera, wtedy wszystko działało. W tej chwili klasa C wyrzuca tylko napis: "Message from C:" bez wartości pola, a var_dump() statycznego pola z klasy A zwraca null.
Cała sytuacja sprowadza się do tego, że mam kontroler, do którego przesyłam dane w postaci POSTa, on wykonuje odpowiednie operacje i ustawia (lub nie) statyczne pole w pewnym modelu. Jego następnym zadaniem jest uruchomienie widoku, który to statyczne pole powinien odczytać, a uruchomienie chciałem wykonać za pomocą headera, jednak widzę, że mam do czynienia z utratą danych w wyniku tego.
Czy powinienem umieścić te klasy w jednym pliku za pomocą chociażby include'ów i sprowadzić wszystko do sytuacji, w której widok i kontroler korzystają z jednego obiektu modelu?
P.S. Proszę się nie obrażać na tego statica i sposób zwracania pola statycznego przez echo, to tylko dla testów ;)