Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537

    [PHP] Problema con metodo di un oggetto

    Ragazzi ho scritto questo codice che mi stampa la caratteirstiche di un prodotto.
    Poi in un'istruzione chiamo il metodo modifica_nome(), ma quando ristampo l'array che contiene gli indirizzi delle variabili membro della classe le modifiche non vengono apportate.
    Help !!!!
    Vi posto il codice :

    Codice PHP:
    <?php
    require "prodotto.php";

    $prod = new Prodotto(102'Concime'12.3010000'Megalò');  // Creo oggetto

    $Descrizione $prod -> Descrizione();  // Prendo un array con i valori delle variabili membro

    $b = array('Id : ''Nome : ''Prezzo : ''Quantità : ''Negozio : ');  // Array di stringhe


    // Stampo i valori delle variabili membro
    echo "<ul> \n";
    for (
    $i 0$i 5$i++)
    {
      echo 
    "[*][b]$b[$i][/b]$Descrizione[$i] \n";
    }
    echo 
    "[/list]\n";


    // Modifica variabili membro
    $prod -> Modifica_Nome('Marmellata');

    // Ristampo i valori delle variabili membro dopo la modifica
    echo "<ul> \n";
    for (
    $i 0$i 5$i++)
    {
      echo 
    "[*][b]$b[$i][/b]$Descrizione[$i] \n";
    }
    echo 
    "[/list]\n";


    ?>

    E questa è la classe :


    Codice PHP:
    <?php

    class prodotto
    {
      private 
    $Id;
      private 
    $Nome;
      private 
    $Prezzo;
      private 
    $Quantita;
      private 
    $Negozio;
      
          public function 
    __construct($Id$Nome$Prezzo$Quantita$Negozio)
          {
            
    $this -> Id $Id;
            
    $this -> Nome $Nome;
            
    $this -> Prezzo $Prezzo;
            
    $this -> Quantita $Quantita;
            
    $this -> Negozio $Negozio;
          }
          
          
    // Funzioni che tornano valori variabili membro
          
          
    public function Id ()
          {
            return 
    $this -> Id;
          }
          
          public function 
    Nome ()
          {
            return 
    $this -> Nome;
          }
          
          public function 
    Prezzo ()
          {
            return 
    $this -> Prezzo;
          }
          
          public function 
    Quantita ()
          {
            return 
    $this -> Quantita;
          }
          
          public function 
    Negozio ()
          {
            return 
    $this -> Negozio;
          }
          
          
    // Funzioni per assegnamenti a variabili membro
          
          
    public function Modifica_Id($Id)
          {
            
    $this -> Id $Id;
            return;
          }
      
          public function 
    Modifica_Nome($Nome)
          {
            
    $this -> Nome $Nome;
            return;
          }
          
          public function 
    Modifica_Prezzo($Prezzo)
          {
            
    $this -> Prezzo $Prezzo;
            return;
          }
          
          public function 
    Modifica_Quantita($Quantita)
          {
            
    $this -> Quantita $Quantita;
            return;
          }
          
          public function 
    Modifica_Negozio($Negozio)
          {
            
    $this -> Negozio $Negozio;
            return;
          }
          
          
    // Funzione che torna tutti i valori delle variabili in un array
          
          
    public function Descrizione()
          {
            return 
    $a = array($this -> Id$this -> Nome$this -> Prezzo$this -> Quantita$this -> Negozio);
          }
      
    }

    ?>

  2. #2
    Il valore viene cambiato dentro a $prod, non dentro a $Descrizione.

    Un metodo per fare quello che chiedi è modificare il metodo Descrizione() in questo modo:

    Codice PHP:
          public function Descrizione()
          {
            return 
    $a = array(&$this -> Id, &$this -> Nome, &$this -> Prezzo, &$this -> Quantita, &$this -> Negozio);
          } 
    Non so quante e quali regole viola questo codice (incapsulazione?), e non te lo consiglio. Molto meglio sarebbe ottenere nuovamente un array Descrizione oppure utilizzare i metodo Id(), Nome() etc. per accedere alle versioni modificate delle proprietà private.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.