Visualizzazione dei risultati da 1 a 8 su 8

Discussione: classi extends

  1. #1

    classi extends

    Ciao vorrei capire la differenza fra $this-> e :: in una classe figlia riferito a una varibile o a una funzione della classe madre

  2. #2
    Il primo si usa per attributi di istanza il secondo per attributi statici (o di classe)
    <?
    class prova {
    public $a;
    public static $b;
    }

    class prova1 extends prova{
    function __construct() {
    $this->a=1;
    self::$b=1;
    }
    }

    class prova2 extends prova{
    function __construct() {
    $this->a=2;
    self::$b=2;
    }
    }


    $x=new prova1();
    $y=new prova2();
    echo $x->a, $y->a; // mostra 1 e 2

    echo prova1::$b, prova2::$b, prova::$b;
    // mostra sempre 2 perche l'attributo statico è associato (o se vuoi condiviso) tra tutte le classi e non è legato alle istanze
    ?>
    Fidatevi del dottor Auz!
    http://dottorauz.blogspot.com

  3. #3
    Il discorso non mi e' molto chiaro in questo esempio trovato in rete l'operatore :: non e' usato per metodi statici

    Codice PHP:
    class {
       function 
    example() {
           echo 
    "I am A::example() and provide basic functionality.
    \n"
    ;
       }
    }

    class 
    extends {
       function 
    example() {
           echo 
    "I am B::example() and provide additional functionality.
    \n"
    ;
           
    parent::example();
       }
    }

    $b = new B;

    // This will call B::example(), which will in turn call A::example().
    $b->example(); 

  4. #4
    Originariamente inviato da kappaekappa
    Il discorso non mi e' molto chiaro in questo esempio trovato in rete l'operatore :: non e' usato per metodi statici
    Come da manuale:

    http://www.php.net/manual/en/languag...ekudotayim.php
    The Scope Resolution Operator [cut] is a token that allows access to static, constant, and overridden members or methods of a class.

  5. #5
    Vi ringrazio, ma non riesco a capire perche una cosa del genere non funziona

    Codice PHP:
    class A{
    public 
    $var
    public function __construct(){
    $this->var=1;
    }
    public function 
    faiqualcosa(){
    echo 
    "qualcosa";
    }
    }
    class 
    extends A{
    public function 
    __construct(){
    parent::__construct();
    }
    }
    $c=new B;
    $re=$c->var;
    $c->faiqualcosa// mi dovrebbe stampare qualcosa
    echo $re;// mi dovrebbe stampare 1 
    cosa non va e come faccio a farlo funzionare?

  6. #6
    Il codice che hai postato NON funziona perchè solleva un Parse Error. Inoltre, per richiamare i metodi delle classi è necessario indicare le parentesi.

    Ti suggrisco di abilitare la visualizzazione di tutti gli errori in fase di sviluppo, altrimenti non sarai mai in grado di identificare gli errori restituiti dal PHP.

  7. #7
    che intendi per parentesi al metodo?

  8. #8
    che questo:
    codice:
    $c->faiqualcosa; // mi dovrebbe stampare qualcosa
    non significa niente!

    Si scrive così:
    codice:
    $c->faiqualcosa();
    perchè è una funzione e non una variabile.
    Administrator of NAMDesign.Net

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.