Ciao vorrei capire la differenza fra $this-> e :: in una classe figlia riferito a una varibile o a una funzione della classe madre
Ciao vorrei capire la differenza fra $this-> e :: in una classe figlia riferito a una varibile o a una funzione della classe madre
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
Il discorso non mi e' molto chiaro in questo esempio trovato in rete l'operatore :: non e' usato per metodi statici
Codice PHP:
class A {
function example() {
echo "I am A::example() and provide basic functionality.
\n";
}
}
class B extends A {
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();
Come da manuale: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
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.
Vi ringrazio, ma non riesco a capire perche una cosa del genere non funziona
cosa non va e come faccio a farlo funzionare?Codice PHP:
class A{
public $var
public function __construct(){
$this->var=1;
}
public function faiqualcosa(){
echo "qualcosa";
}
}
class B 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
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.
che intendi per parentesi al metodo?
che questo:
non significa niente!codice:$c->faiqualcosa; // mi dovrebbe stampare qualcosa
Si scrive così:
perchè è una funzione e non una variabile.codice:$c->faiqualcosa();
Administrator of NAMDesign.Net