Bonjour, j'utilise AMFPHP pour mes echanges flash->php, dans mes variables de session je stock mes instance de classe par exemple mysql et user.
Le probleme est que ej pense que AMFPHP fait un session_start avant d'éxécuter mes script, donc je ne peux pas lui charger les définitions de classe avant le session_start,j'ai essayé avec les fonction serialize et unserialize mais sans succes.


Ma classe Main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function __autoload($class) {
    $CLASS=strtolower($class);
    require_once "/".$CLASS."/".$class.".php";
session_start();
class Main
{
    function Main()
    {
 
    }
 
    function getContact()
    {
        $mysql=$_SESSION["mysql"];
        settype($mysql,"object");
        $res=$mysql->GetContact($_SESSION["myUser"]->Id);
        echo "mysql ".$mysql;
    }
}
?>
ma classe mysql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
require_once("/variable/Variable.php");
class Mysql
{
    function Mysql()
    {
    }
    function Connexion()
    {
        $server = "localhost";
        $basededonnees = "111" ;
        $utilisateur = "111" ;
        $mdp = "" ;
        $connection = mysql_pconnect($server,$utilisateur, $mdp)or die ("erreur de connexion");
        mysql_select_db($basededonnees, $connection) ;
        return $connection ;
    }
 
 
 
    function GetUser($Id)
    {
        $ID=new Variable($Id);
        $Id=$ID->getVar();
 
        $requete =  "SELECT
                    id_utilisateur as Id,
                    nom_utilisateur as nom,
                    prenom_utilisateur as prenom,
                    email_utilisateur as email,
                    telephone_utilisateur as telephone,
                    gsm_utilisateur as gsm
                    FROM utilisateur
                    WHERE id_utilisateur = '$Id' ";
       $res= mysql_query($requete,$this->Connexion() )OR die(mysql_error());
       return $res;   
 
    }
Le résult de AMFPHP

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
(Object)#0
  message = "faultCode:INVALID_AMF_MESSAGE faultString:'Invalid AMF message' faultDetail:'
Fatal error: Main::getContact(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Mysql" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition  in C:\vnd\php\services\vnd\web\Main.php on line 14
'"
  name = "Error"
  rootCause = (null)
Quand j'execute mes script sans AMFPHP j'ai aucun probleme au niveau des chargement de mes définition de classe et mes methodes sont accéssiblent