Posts Tagged - visibility

  • php

Acceder aux éléments protégés d'une class

Nous sommes parfois amenés à vouloir manipuler une propriété ou une méthode protected de nos class.

L’utilisation de la reflection est envisageable pour modifier la visibilité mais une autre solution élégante à base de closure est également possible.

Considérons la class suivante :

1
2
3
4
class Foo {
    protected $bar;
    protected function bar() {}
}

L’idée est d’utiliser le Closure::call introduit en php7 pour injecter une closure dans le scope d’une instance de la class Foo.

1
2
3
4
5
6
7
8
$foo = new Foo();

$closure = function () {
    $this->bar = false;
    $this->bar();
};

$closure->call($foo);

Une fois notre closure injecté, il lui est désormais possible d’acceder à toutes les proprietés et méthodes protected de notre class.

Certes, c’est pas usuel, mais vous êtes majeur et vacciné.

Read More