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

    PHP5: variabili di classe e visibilità

    Buongiorno a tutti.
    Sto cercando di implementare un'applicazione di browsing FTP tramite PHP5, ma non riesco a capire il comportamento del linguaggio riguardo le variabili di classe.

    Vi posto il codice per chiarezza.
    codice:
    <?php
    
    class FTPDriver{
    	private $ftp_conn;
    		
    	function __construct($ftp_host, $ftp_use, $ftp_pass){ // apre la connessione al server FTP
    		$this->ftp_conn = ftp_connect($ftp_host)
    			or die("FUCK!!!");			
    		ftp_login($this->ftp_conn, $ftp_user, $ftp_pass)
    			or die("FUCK YOU TOO!!!");
    			print($this->ftp_conn);
    	}	
    	
    	function __deconstruct(){// chiude la connessione al database
    	  ftp_close($this->ftp_conn)
    		or die("Errore durante la chiusura della connessione al server FTP");
    	}
    	
    	public function getList(){
    	  //print($this->ftp_conn);
    	  if(!$files_list = ftp_nlist($this->ftp_conn, ftp_pwd($this->ftp_conn))){
    	    return false;
    	  }
    	  // creo un oggetto DOM che conterrà i dati in formato xml
    	  $objXML = new DOMDocument();
    	  // definisco l'elemento principale <list>
    	  $list = $objXML->createElement("list"); // creo l'elemento
    	  $list = $objXML->appendChild($list); // lo appendo nell'albero (ora ho un puntatore all'elemento inserito)
    	  // riempio l'albero xml con i dati prelevati dalla query
    	  foreach($files_list as $file_name){
    		// definisco l'elemento <file>
    		$file = $objXML->createElement("file"); 
    		$file = $list->appendChild($file);
    		$file->setAttribute("name", $file_name);
    		// inserisco il sotto-elemento <size>
    		$size = $objXML->createElement("size", ftp_size($this->ftp_conn, $file_name));
    		$file->appendChild($size);
    		// inserisco il sotto-elemento <modified>
    		$modified = $objXML->createElement("modified", ftp_mdtm($this->ftp_conn, $file_name));
    		$file->appendChild($modified);
    	  }	
    	return $objXML;			
    	}
    	
    	function getFile($file_name){// recupero il file specificato da $file_name
    	  return ftp_get($this->ftp_conn, $file_name, $file_name, FTP_BINARY);
    	}
    	
    	function putFile($file_name){
    	  return ftp_put($this->ftp_conn, $file_name, $file_name, FTP_BINARY);
    	}	
    }
    ?>
    Il problema si verifica nella riga in grassetto. Avendo dichiarato la variabile ftp_conn come variabile privata di classe, non dovrebbe essere disponibile in ogni metodo richiamabile?
    L'applicazione prevede il reindirizzamento ad una pagina index che letta da url l'azione da intraprendere richiama un metodo su di una classe Rpc (remote procedure call), che dopo eventuali controlli di sessione richiama a sua volta uno dei metodi presenti nella classe esposta.
    L'errore rilevato in fase di compilazione riguarda appunto $ftp_conn, che assume valore 0 al di fuori del costruttore, anche se acceduta tramite il costrutto $this->ftp_conn.

    Please help me!

  2. #2
    Up :P

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Scusa l'ovvieta' della domanda ma non si sa mai. A naso ci sai sicuramente fare ma capita di avere spesso persone che si avvicinano alla OOP su questo forum, quindi non ti arrabbiare se la domanda e' semi-offensiva.

    1) Inizializzi una istanza di questa classe, vero? Fai vedere il codice?
    2) Hai provato a verificare (con un meraviglioso print di debug) che il costruttore venga chiamato?

    Inoltre: che versione di PHP 5 stai usando? Ce ne sono alcune che sono ricoperte di bug orrendi.
    There are 10 types of people in the world - those who understand binary and those who don't.

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.