MB: assoziative Werte mit __set() und Index in numerisches array einfügen?

Beitrag lesen

moin,

schau Dir mal die ArrayObject-Klasse aus der SPL an.

Ok. Meine Intension ist, Zugriff auf ein public Property eines Objektes zu haben, welches von der programmlogik nicht oder bedingt verändert werden darf.

sehr trivial habe ich das gemacht:

class FooBar {

    private $baz;

    public function baz(){
        return $this->baz;
    }
    
}

... in die zielführende Richtung in PHP habe ich das gemacht ...

class FooBar {

    private $baz;

    public function __get( string $property ) {
        return $this->$property;
    }
}

...und Erreichung der Intension ...

class FooBar {

    private $fuz;
    private $baz;

    public function __get( string $property ) {
        return $this->$property;
    }
    
    public function __set( string $property, $value ) {
        if( $property === 'fuz' and is_string( $value ) ) { 
            $this->fuz = $value;
        }
        if( $property === 'baz' and is_array( $value ) ) { 
            $this->baz = $value;
        }
    }
}

am ende hat das Progrämmchen den gewünschten effekt:

  • Objekt
  • Public Property (keine Getters & Setters)
  • nicht oder bedingt änderbar

😉

lgmb