Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    79

    Classe php con campo auto incrementante

    Salve sto facendo una semplice classe cosi' strutturata:

    codice:
    class  Messaggio
    {
      private $idMessaggio;
      private $Mittente;
      private $Destinatario;
      private $Testo;
    
      public function  __construct($mitt, $dest, $text)
      {
        $this->Mittente = $mitt;
        $this->Destinatario = $dest;
        $this->Testo = $text;
      } 
      
      ...........
    
    }
    Il mio problema è che voglio il campo id che sia autoincrementante, ovvero ogni volta che istanzierò un oggetto di tipo messaggio, esso abbia automaticamente l'id, ogni istanza dell'oggetto deve quindi avere id diverso (che dovrà ovviamente essere il successivo dell'ultimo creato).
    Io mi ricordo che quando ero a scuola, avevo fatto una cosa simile in java e avevo fatto una cosa tipo

    private static final int idMessaggio = 0;

    e al'interno del costruttore mettevo

    this.iDmessaggio++;

    e ogni volta che istanziavo un nuovo messaggio esso aveva id diverso dal precedente.

    Come posso fare per fare una cosa uguale in php, perchè ho provato ad aggiungere
    private static final $idMessaggio=0; e nel costruttore $this->idMessaggio++; ma nn va...

  2. #2
    aspetta pareri più autorevoli ma...puoi provare a dichiarare tra i parametri:

    • un contatore statico che viene incrementato di uno dal costruttore (e, in funzione delle tue esigenze può essere decrementato di uno dal distruttore)
    • un id che il costruttore inizializza al valore attuale del contatore


    ciao

  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova cos'

    Codice PHP:
    <?php
    class  Messaggio
    {
        public static 
    $count=0;
      private 
    $idMessaggio;
      private 
    $Mittente;
      private 
    $Destinatario;
      private 
    $Testo;

      public function  
    __construct($mitt$dest$text)
      {
        
    $this->Mittente $mitt;
        
    $this->Destinatario $dest;
        
    $this->Testo $text;
      
    self::$count++;
      } 
      
      ...........

    }

    ?>
    per accederci
    Codice PHP:
    echo Messaggio::$count
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    79
    Ok ho risolto così

    codice:
    class Messaggio
    {
     private $idMessaggio;
     private $Mittente;
     private $Destinatario;
     private $Testo;
    
      public function __construct($mitt, $dest, $text)
      {
        static $ctr = 0;
        $this->Mittente = $mitt;
        $this->Destinatario = $dest;
        $this->Testo = $text;
        $ctr = $ctr + 1;
        $this->idMessaggio = $ctr;
    
      }
    
      public function getId()
      {
        return $this->idMessaggio;
      }
    }

  5. #5
    mmm, però non mi sembra corretto mettere una variabile statica nel costruttore. Io farei una cosa simile a come ti ha suggerito dottwatson, è più corretto anche dal punto di vista dell'OO

  6. #6
    dottwatson tutta la vita

    ma a che ti serve questa cosa?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.