class

3 отговора 195 прегледа
#1

class

//php 4.3.11
a.php:
<?php
session_start();

class class1 {
var $a;
function class1($data) {
$this->a = $data;
}
}

$_SESSION['a'] = new class1(5);
?>

b.php:
<?php
session_start();
var_dump($_SESSION['a']);
echo "
";
var_dump($_SESSION['a']->a);
?>

Резултат:
object(__PHP_Incomplete_Class)(13) { ["__PHP_Incomplete_Class_Name"]=> string(6) "class1" ["a"]=> int(5))
NULL

Прочетох, че това било проблем със сериализацията в РНР 4
Въпроса ми е как мога да заобиколя проблема, без да отивам на РНР 5?

Да взема да си ида... или да ида да си взема?!?
Отговор
в отговор на Hilander #2

Re: class

class.php
<?php
class class1 {
var $a;
function class1($data) {
$this->a = $data;
}
}

?>

a.php
<?php

require_once('class.php');

session_start();
$_SESSION['a'] = new class1(5);
echo '<a href="b.php">b</a>';
?>

b.php

<?php
require_once('class.php');
session_start();
echo '<pre>';
var_dump($_SESSION['a']);
var_dump($_SESSION['a']->a);
?>

Отговор
в отговор на Hilander #3

Re: class

Проблема ти е че php енжина не може да намери
дефиницията на класа. Затова:
1. Направи си файл, със дефиницията на класа кръсти го class1.php
например.


<?
////////////////////////////////////
// class1.php
////////////////////////////////////
class class1 {
var $a;
function class1($data) {
$this->a = $data;
}
}
?>


2. Инклудвай този файл всеки път преди session_start().


<?
////////////////////////////////////
// a.php
////////////////////////////////////
require_once('class1.php');
session_start();
$_SESSION['a'] = new class1(5);
?>


Съответно:


<?
////////////////////////////////////
// b.php
////////////////////////////////////
require_once('class1.php');
session_start();
var_dump($_SESSION['a']);
echo " ";
var_dump($_SESSION['a']->a);
?>


Съветът ми е да минеш на PHP5, обаче.
Edit: Докато съм писал ПХП Шматка ме е изпреварил ..
От неизбежното се възмущава само този, който е неразумен.

Редактирано от Учeщ на

Отговор
в отговор на Учeщ #4

Re: class

Благодаря
класа ми си е в отделен файл, но за по-прегледно го написах така и съм ви заблудил
сега само преместих инклудето след сессион_start и стана

Да взема да си ида... или да ида да си взема?!?
Отговор