Visualizzazione dei risultati da 1 a 7 su 7

Discussione: OOP e proprietà vuote

  1. #1
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155

    OOP e proprietà vuote

    Ciao a tutti!
    Finalmente ho deciso di iniziare a programmare ad oggetti in php, quindi ho dato una letta alla vostra guida e poi mi sono messo all'opera.

    Ora vi spiego: sto facendo un sito che utilizza il login di facebook, ed ho creato la classe User che dovrebbe gestire il login e contenere i dati dell'user loggato.

    Codice PHP:
    class User{
        protected 
    $facebook;
        public 
    $user;
        
        public function 
    __construct(){
            
    // Inizializza Facebook SDK 
            
    $this->$facebook = new Facebook(array(
             
    'appId'  => App::id,
             
    'secret' => App::secret,
            ));
             
            
    $this->$user $facebook->getUser();
            
        }

    Solo che la riga $this->$facebook = ... mi dà l'errore Fatal error: Cannot access empty property.
    Allora ho provato a commentare tutto ed inserire echo $this->$facebook e l'errore è lo stesso... Ma se sto dando un valore alla variabile non me ne frega se è vuota, giusto?

    Io non ho proprio capito il perchè di questo errore... Spero che qualcuno possa illuminarmi!
    Grazie a tutti e

  2. #2
    il fatto è che hai creato un oggetto USER nella cui funzione CONSTRUCT, che inizializza le variabili usate all'interno di tale classe, inizializzi un altro oggetto, FACEBOOK. Ma esso, essendo definito come variabile protetta deve fare riferimento ad un altro oggetto di nome appunto FACEBOOK.
    e cmq è meglio che definsici quest'ultimo al di fuori di USER in modo magari che erediti le proprietà e metodi di USER. ad esempio:

    Codice PHP:
    class User {
      
    //qui definisci metodi e proprietà relativi alla classe User
      
    public $user;
      public function 
    setUser($nome) {
        
    $this->user=$nome;
      }
    public function 
    getUser() {
        return 
    $this->user;
      }
    }

    class 
    Facebook extends User {
      
    //qui definisci metodi e proprietà relativi alla classe Facebook
      // ma puoi usare tranquillamente proprietà e metodi di User
      
    public function connettiFB() {

      }
    }
    // definisce una istanza della classe FACEBOOK
    // e chiama i metodi di User
    $fb = new Facebook();
    $fb->setUser 'Giuseppe';
    echo 
    $fb->getUser(); 

  3. #3
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Forse non mi sono spiegato bene...
    La classe Facebook deriva da un altro file che ho scaricato dal sito developers di facebook, e funziona, e questo codice
    Codice PHP:
    $facebook = new Facebook(array( 
             
    'appId'  => App::id
             
    'secret' => App::secret
            )); 
              
            
    $this->$user $facebook->getUser(); 
    L'ho copiato pari pari dal tutorial che c'è sul sito, e scrivendolo come funzione di primo livello funziona, quindi non è quello il problema... il discorso è che anche questo
    Codice PHP:
    class User
        protected 
    $facebook
        public 
    $user
         
        public function 
    __construct(){ 
            echo 
    $this->$facebook;
        } 

    dà lo stesso errore, ed è per questo che non capisco proprio dove sbaglio

  4. #4
    potresti postare l'url da dove l'hai preso? thx!!!!

  5. #5
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    https://developers.facebook.com/docs...tting-started/
    Nel primo codice di esempio c'è quella parte

  6. #6
    Sostituisci:

    Codice PHP:
    ...
    $this->$facebook
    ... 
    con:

    Codice PHP:
    ...
    $this->facebook
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Hai ragione!
    Che pirla che sono !

    Grazie mille

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.