znalazlem posta na podobny temat i wszyscy twierdzili, ze przed wyciagnieciem obiektu z $_SESSION musi byc zadeklarowana definicja klasy. Lecz moze mi ktos napisac czy ta definicja MUSI byc w kodzie napisana czy moze byc w jakis sposob zaincludowana?
Pytam sie bo mi wlasnie includowanie nie dziala:(
Napisalem prosty skrypt testowy
definicja klasy
Kod
<?php
class obiekt{
private $x;
private $y;
public function __construct($x,$y){
$this->x=$x;
$this->y=$y;
}
}
?>
class obiekt{
private $x;
private $y;
public function __construct($x,$y){
$this->x=$x;
$this->y=$y;
}
}
?>
plik nr 1
Kod
<?php
session_start();
include('obiekt.php');
$p=new obiekt(43,453);
$_SESSION['pp']=$p;
$_SESSION['g']='test';
header("Location: i2.php");
exit();
?>
session_start();
include('obiekt.php');
$p=new obiekt(43,453);
$_SESSION['pp']=$p;
$_SESSION['g']='test';
header("Location: i2.php");
exit();
?>
i plik nr 2
Kod
<?php
session_start();
include('obiekt.php');
$z=$_SESSION['pp'];
$x=$_SESSION['g'];
print_r($x);
echo '
';
print_r($z);
exit();
?>
session_start();
include('obiekt.php');
$z=$_SESSION['pp'];
$x=$_SESSION['g'];
print_r($x);
echo '
';
print_r($z);
exit();
?>
w przegladarce uzyskuje komunikat o obiekcie typu
Kod
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => obiekt [x:private] => 43 [y:private] => 453 )
Dziala poprawnie jesli zamiast includa w pliku nr 2 wkleje definice klasy. Ale mija sie to troche z celem wedlug mnie. Jesli stworze kilka plikow wykorzystujacych ta klase i pozniej bede chcial ja zmodyfikowac to bym musial wszystkie pliki po koleji poprawiac.
Wie ktos co robie zle??