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

    accedere a variabili di classe

    Salve a tutti, ho il seguente problema. Ho una classe php fatta in questo modo:

    class ContactList
    {
    var $owner;
    var $url;
    var $name;
    var $password;
    var $user;

    var $list_conversation = array();
    var $list_contact = array();
    var $z = 0;

    var $contact_x_number_conv = array();
    var $contact_x_time_conv = array();

    public function __construct($owner, $db_name, $db_url, $db_password, $db_user)
    {
    ....................................
    qui ci sono altre istruzioni che mettono valori negli array prima dichiarati
    ....................................
    }

    Poi ho un metodo della classe, che nelle mie intenzioni deve stampare il contenuto degli array:

    public function printArray()
    {
    print_r($list_conversation);
    print_r($list_contact);
    print_r($contact_x_number_conv);
    print_r($contact_x_time_conv);
    }


    Da un file php esterno io istanzio la classe e richiamo il metodo:

    include("ContactList.php");
    $cl = new ContactList(1, $db_name, $db_url, $db_password, $db_user);
    $cl->printArray();

    Il problema è che il metodo printArray() non mi stampa nulla, mentre se io faccio la stessa cosa dentro __construct il contenuto degli array viene stampato correttamente.

    Dove sbaglio ?

    Grazie della disponibilità
    Non ci sono Queen senza Freddie !

  2. #2
    Ti suggerisco di iniziare studiando le basi della programmazione object oriented del PHP:

    http://www.php.net/manual/en/language.oop5.basic.php

  3. #3
    Stai usando php4?

    Comunque...
    all'interno delle funzioni della classe devi utilizzare il magico $this per 'utilizzare' le proprietà di classe.
    Codice PHP:
    public function __construct($owner$db_name$db_url$db_password$db_user)
    {
    $this->list_conversation = array('cippa','lippa');
    //...
    }

    public function 
    printArray()
    {
      
    print_r($this->list_conversation);
      
    // ...

    Il $this fa si che quando viene invocata la funzione printArray o __construct che sia, vengano utilizzate le proprietà (in questio caso $list_conversation) che appartengono all'oggetto che ha chiamato il metodo! (nel tuo caso $cl).

    Quindi quando tu fai
    Codice PHP:
    $cl = new ContactList(1$db_name$db_url$db_password$db_user); 
    costruisci l'oggetto di tipo ConctatList, e le sue proprietà (grazie a $this) vangono settate grazie ai parametri che tu passi alla funzione.
    Quando poi chiami printArray() vengono stampate le sue (grazie a $this) proprietà.

    Tu prima invece dentro __construct definivi delle normali variabili, il cui scopo era la funzione, quindi se cercavi di stamparle da li tutto ok, se verchi di stamparle fuori da li le variabili sono vuote perchè non definite!!

    Quindi se vuoi istanziare la classe quella è la strada da seguire, altrimenti puoi utilizzare metodi e proprietà statici, ma quewsto è un'altro discorso.
    Ti consiglio comunque di ridarti una lettura ai principi del' OOP.
    Ciao!
    =======================
    http://www.abidibo.net

  4. #4
    Grazie della risposta...ora mi pare che funzioni! Comunque una bella ripassata ci vuole proprio ! :-)
    Non ci sono Queen senza Freddie !

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.