<?php
class Test
{
private $a = 10;
public $b ='abc';
}
class Test2 extends Test
{
function __construct()
{
echo $this->a;
echo $this->a = 20; // wh
}
}
$test3 = new Test2();
Répondre
echo $this->a;
échos valeur de la propriété de la classe a
. Cette propriété est non définie, car la propriété a
de la classe Test
est privée et n'est donc pas disponible dans la classe Test2
. Ainsi, la propriété a
est créée dans la classe Test2
.
echo $this->a = 20; // wh
part le prochain: attribue 20-a
propriété (qui a été créé sur la ligne précédente) et fait écho à la suite de la cession qui est 20
.
La solution:
class Test
{
// protected property is avalilable in child classes
protected $a = 10;
public $b ='abc';
}
class Test2 extends Test
{
function __construct()
{
echo $this->a;
$this->a = 20;
echo $this->a;
}
}
$test3 = new Test2(); // outputs 10 20
Vous devriez changer
private $a = 10;
à:
protected $a = 10;
Bien sûr, mais la question est "pourquoi" ? Vous pourriez apprendre une chose ou deux de [la réponse de u_mulder] (https://stackoverflow.com/a/46745074/1415724). –
merci walid ajaj –
Bleh. Je ferme a voté pour la mauvaise raison. J'aurais dû duper ce sur https://stackoverflow.com/questions/4361553/what-is-the-difference-between-public-private-and-protected – Machavity
merci pour votre aide –