Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [__PHP_Incomplete_Class_Name]

    Ciao a tutti
    inserendo un oggetto prodotto in una variabile di sessione al momento di mostrare il suo contenuto per esempio con un print_r mi viene mostrato un errore [__PHP_Incomplete_Class_Name]
    Immagiino che ne abbiate già patlato ma pur avendolo cercato nel forum non ne trovo alcuna traccia.
    In php.net alla funzione unserialize se ne oarla +- diffusamente e mi pare di aver capitio che devo definire una funzione di callback che verrà chiamata automaticamente ogni volta.
    Pur non capendo molto questa fase l'ho fatto ma non cambia nulla
    L'output è corretto e i contenuti vengono mostrati tutti ma in testa c'è sempre quell'errore.
    Ho trovato un autore che dice di mettere all'inizio questa riga:

    ini_set('unserialize_callback_func', 'miafunzionedicallback');

    Quindi nel mio codice ho messo:


    <?php
    session_start();
    require('prodotto.class.php');
    ini_set('unserialize_callback_func', 'miafunzionedicallback');
    function miafunzionedicallback($classname)
    {return true;}

    natiralmente l'errore permane

    Grazie per l'aiuto

  2. #2
    Potresti postare il codice della classe o di una classe più semplice che genera l'errore?

    EDIT:
    In ogni caso, ricordati di includere il file contenente la definizione della classe, e tutti i file contenenti la definizione delle classi genitore, prima di avviare la sessione.

  3. #3
    Originariamente inviato da filippo.toso
    Potresti postare il codice della classe o di una classe più semplice che genera l'errore?

    EDIT:
    In ogni caso, ricordati di includere il file contenente la definizione della classe, e tutti i file contenenti la definizione delle classi genitore, prima di avviare la sessione.
    Codice PHP:
    <?PHP class prodotto      {//start classe prodotto protected $id; protected $name; protected $col; protected $size; protected $price; protected $Qty;  function __construct($id,$name,$col,$size,$price,$Qty)        {// inizio funxione __construct      $this->id=$id;     $this->name = $name;     $this->col=$col;     $this->size=$size;     $this->price = $price;     $this->qty = $Qty;     return $this;   }//fine funzione __construct }//fine classe prodotto ?>  <?php session_start(); require('prodotto.class.php'); ini_set('unserialize_callback_func''ritorna'); function ritorna($classname) {return "";} class carrello      { function __construct() { if (isset($_SESSION['carrrello'])) { $carrello=$_SESSION['carrello']; } else { $carrello=Array(0); $_SESSION['carrello']=$carrello; } }  //aggiunge al carrello function add($id,$name,$col,$size,$price,$Qty)      { $carrello=$_SESSION['carrello']; //lunghezza del carrello  $position=count($carrello); //$trovato=0; /*    for ($i=0;$i<count($carrello);$i++)         {//apertura for         //Verifico se il prodotto è presente nel carrello         if ($carrello->id[$i]==$id) $trovato=1;    }//chiusura for             //Se il prodotto è già presente aggiorno quantità e variante //           if ($trovato==1) $this->update($id,$qt,$vt); //           else {//altrimenti aggiungo il prodotto al carrello */  $prodotto=new prodotto($id,$name,$col,$size,$price,$Qty); $carrello[$position]=$prodotto; $_SESSION['carrello']=$carrello;  } }  ?>

    OUTPIT

    Array ( [0] => 0 [1] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [idrotected] => 1 [namerotected] => prodotto [colrotected] => bianco [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 4 ) [2] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [idrotected] => 2 [namerotected] => maglietta gialla [colrotected] => giallo [sizerotected] => terza [pricerotected] => 72,50 [Qtyrotected] => [qty] => 1 ) [3] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [idrotected] => 3 [namerotected] => prodotto 3 [colrotected] => nero [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 3 ) [4] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [idrotected] => 4 [namerotected] => prodotto 4 [colrotected] => rosso [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 55 ) [5] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [idrotected] => 5 [namerotected] => prodotto 5 [colrotected] => rosa [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 13 ) [6] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [idrotected] => 661 [namerotected] => cinometro per gatti [colrotected] => rosa [sizerotected] => [pricerotected] => 126,50 [Qtyrotected] => [qty] => 1 ) ) Array ( [0] => 0 [1] => prodotto Object ( [idrotected] => 1 [namerotected] => prodotto [colrotected] => bianco [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 4 ) [2] => prodotto Object ( [idrotected] => 2 [namerotected] => maglietta gialla [colrotected] => giallo [sizerotected] => terza [pricerotected] => 72,50 [Qtyrotected] => [qty] => 1 ) [3] => prodotto Object ( [idrotected] => 3 [namerotected] => prodotto 3 [colrotected] => nero [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 3 ) [4] => prodotto Object ( [idrotected] => 4 [namerotected] => prodotto 4 [colrotected] => rosso [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 55 ) [5] => prodotto Object ( [idrotected] => 5 [namerotected] => prodotto 5 [colrotected] => rosa [sizerotected] => terza [pricerotected] => 26,50 [Qtyrotected] => [qty] => 13 ) [6] => prodotto Object ( [idrotected] => 661 [namerotected] => maglia gatto [colrotected] => rosa [sizerotected] => [pricerotected] => 126,50 [Qtyrotected] => [qty] => 1 ) )

  4. #4
    Per favore, prova a postare nuovamente il codice in modo che non sia tutto su una unica riga.

  5. #5
    Originariamente inviato da filippo.toso
    Per favore, prova a postare nuovamente il codice in modo che non sia tutto su una unica riga.
    Codice PHP:

    <?php 
    session_start
    (); 
    require(
    'prodotto.class.php');
     
    ini_set('unserialize_callback_func''ritorna'); 

    function 
    ritorna($classname) {return "";} 

    class 
    carrello      


    function 
    __construct() 

    if (isset(
    $_SESSION['carrrello'])) 
    $carrello=$_SESSION['carrello']; } 
    else 
    $carrello=Array(0); $_SESSION['carrello']=$carrello

    }  

    //aggiunge al carrello 
    function add($id,$name,$col,$size,$price,$Qty)      

    $carrello=$_SESSION['carrello']; 

    //lunghezza del carrello  $position=count($carrello); //$trovato=0; /*    

    for ($i=0;$i<count($carrello);$i++)         
    {
    //Verifico se il prodotto è presente nel carrello         if ($carrello->id[$i]==$id) $trovato=1;    
    }            
    //Se il prodotto è già presente aggiorno quantità e variante //           if ($trovato==1) 
    $this->update($id,$qt,$vt); //           
    else 
    {
    //altrimenti aggiungo il prodotto al carrello */ 

    $prodotto=new prodotto($id,$name,$col,$size,$price,$Qty);

    $carrello[$position]=$prodotto

    $_SESSION['carrello']=$carrello;  

    }  
    ?>   

    <?PHP
    class prodotto 
        
    {//start classe prodotto
    protected $id;
    protected 
    $name;
    protected 
    $col;
    protected 
    $size;
    protected 
    $price;
    protected 
    $Qty;

    function 
    __construct($id,$name,$col,$size,$price,$Qty
          {
    // inizio funxione __construct
         
    $this->id=$id;
        
    $this->name $name;
        
    $this->col=$col;
        
    $this->size=$size;
        
    $this->price $price;
        
    $this->qty $Qty;
        return 
    $this;
      }
    //fine funzione __construct
    }//fine classe prodotto
    ?>

  6. #6
    Studiati questo codice:

    Codice PHP:
    <?php

    // require(dirname(__FILE__) . '/prodotto.class.php'); // This works

    session_start();

    // require(dirname(__FILE__) . '/prodotto.class.php'); // This raises __PHP_Incomplete_Class Object

    if (isset($_SESSION['prodotto'])) {
        
    print_r($_SESSION['prodotto']);
    } else {
        
    $prodotto = new prodotto(1'a''b''c'1001);
        
    $_SESSION['prodotto'] = $prodotto;
    }
     
    ?>
    [url="?"]Click Here[/url]

  7. #7
    Originariamente inviato da filippo.toso
    Studiati questo codice:
    mi sfugge qualche cosa:
    se lancio il codice dopo aver cancellato cookies e cache funziona bene ma se rucarico la pagina ritorna l'errore

    E lo faceva anche prima

  8. #8
    Nel mio primo posti ti ho scritto: ricordati di includere il file contenente la definizione della classe, e tutti i file contenenti la definizione delle classi genitore, prima di avviare la sessione.

    Nel codice di esempio ti ho indicato l'origine del problema commentando due righe identiche che, richiamate prima o dopo session_start() funzionano o sollevano l'errore che hai riscontrato.

    Il fatto che tu riscontri il problema solo nel momento in cui tenti di leggere l'oggetto dalla sessione dipende dal motivo indicato in precedenza e dimostrato dal codice d'esempio postato.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.