array[5] = 4; } public function something() { //$this->array at this point"> array[5] = 4; } public function something() { //$this->array at this point"> array[5] = 4; } public function something() { //$this->array at this point" />

Verward over hoe php-objecten arrays verwerken

De uitvoer hiervan is "24", wanneer ik "44" zou verwachten.

class some_class {
    public $array = array();

    public function construct() {
        $this->array[5] = 4;
    }

    public function something() {
       //$this->array at this point is empty, why?
        echo (isset($this->array[5])) ? $this->array[5] : 2;
        $this->array[5] = 4;
       //Here, $this->array holds the value 4 in the key 5 correctly
        echo (isset($this->array[5])) ? $this->array[5] : 2;
    }
}

$some_object = new some_class();
$some_object->something();

Om het even welke ideeën waarom mijn verwachtingen worden verpletterd?

2
public function construct() moet public function __construct() zijn.
toegevoegd de auteur Mike Purcell, de bron

3 antwoord

Je aannemer is niet aan het vuren, het moet genoemd worden:

public function __construct(){
//constructor
}

anders wordt de array niet geïnitialiseerd.

9
toegevoegd

Uw vraag komt in feite neer op uw regel aan het begin van something() , met de vraag:

$this->array at this point is empty, why?

Dit is het geval omdat PHP-constructors de naam __ construct moeten krijgen , terwijl de uwe simpelweg de naam construct heeft.

4
toegevoegd

Uw functie construct() wordt nooit aangeroepen. Je moet het __ construct() noemen.

2
toegevoegd