Ankündigung

Einklappen
Keine Ankündigung bisher.

Properties von außen setzen verhindern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Properties von außen setzen verhindern

    Hallo,

    im folgenden Beispiel setze ich von außen einfach eine Eigenschaft fest. Kann ich verhindern, dass von außen eine Eigenschaft gesetzt wird, die nicht in der Klasse gesetzt wird?

    Liebe Grüße aus der Ferne sendet Maik

    PHP-Code:
    <?php
    class Test234 
    {

    }

    $a = new Test234();

    $a->wert="Moin";

    ?>

  • #2
    PHP-Code:
    class Foo {
        public function 
    __set($name$value) {
            throw new 
    Exception('Invalid property: ' get_class($this) . '::$' $name);
        }
    }

    $foo = new Foo();
    $foo->bar 123// Fatal error: Uncaught Exception: Invalid property: Foo::$bar 

    Kommentar


    • #3
      Super, danke dir! Das hatte mir gefehlt.

      Kommentar


      • #4
        Super, die Frage brannte mir auch schon unter den Nägeln

        Kommentar


        • #5
          Vielleicht sowas in der Art, wie es bei Roave/Dont gemacht wird?

          PHP-Code:
          trait DontSet {
              final public function 
          __set($propertyName$newValue): void {
                  
          $message sprintf(
                      
          "The object %s is not designed to allow any undefined or inaccessible properties to be written to."
                      
          $this::class
                  );
                  throw new 
          LogicException($message);
              }
          }

          class 
          Test234 {
              use 
          DontSet;

          Kommentar

          Lädt...
          X