Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] OOP INPUT Namespace?!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] OOP INPUT Namespace?!

    Hallo zusammen,
    hier ein Codebeispiel:

    PHP-Code:
    protected $_view null,
                  
    $_request,
                  
    $_response;

        public function 
    __construct(View $viewRequest $requestResponse $response)
        {
            
    $this->_view $view;
            
    $this->_request $request;
            
    $this->_response $response;
        } 
    Was bringt das: View $view?
    Wofür ist das View?

  • #2
    Das nennt sich "type hinting"
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      PHP-Code:
      <?php
      class OtherClass {
          public 
      $var 'Hallo Welt';
      }

      class 
      MyClass
      {
          public function 
      test(OtherClass $otherclass) {
              echo 
      $otherclass->var;
          }
      }

      $myclass = new MyClass();
      $myclass->test(new OtherClass());
      ?>
      Damit will man also nur festlegen, dass der Inputwert von der Klasse OtherClass ist.

      PHP-Code:
      <?php
      class OtherClass {
          public 
      $var 'Hallo Welt';
      }

      class 
      MyClass
      {
          public function 
      test($otherclass) {
              echo 
      $otherclass->var;
          }
      }

      $myclass = new MyClass();
      $myclass->test(new OtherClass());
      ?>
      Würde ja theoretisch auch so klappen!?

      Kommentar


      • #4
        Ja, $otherclass muss vom Typ OtherClass sein, ansonsten wirft PHP einen Fatal Error.
        MfG

        Kommentar


        • #5
          Es ist so etwas ähnliches wie instanceof falls dir das mehr sagt

          PHP-Code:
          <?php
          class template
          {

          }



          class 
          foo {
              public function  
          __construct(template $template) {

              }
          }

          $te = new template();

          $foo = new foo($template);  => catchable fatal errorArgument 1 passed to foo::__construct() must be an instance of templatenull givencalled in C:\xampp\xampp\htdocs\vb43\classtest.php on line 17 and defined in C:\xampp\xampp\htdocs\vb43\classtest.php  on line 10
          $foo1 
          = new foo($te); => alles ok



          //früher war sowas nötig:

          class foo {
              public function  
          __construct($template) {
                   if (!(
          $template instanceof template))
          {
            
          //es passt nicht, macht etwas
          }

              }
          }

          Kommentar


          • #6
            Achso okay, instanceof sagt mir schon viel mehr. Danke erledigt!

            Kommentar


            • #7
              Type Hinting ergänzt das System der Interfaces. Ein Interface definiert ein Objekt in seinen nach außen sichtbaren Methoden. Ein Type Hint garantiert, dass nur Objekte mit einer bestimmten Schnittstelle verarbeitet werden (der Rest erzeugt nen Fehler). Damit kannst Du Dir zumindest im Hinblick auf die Verfügbarkeit von Methoden weitere Prüfungen dieses Objektes sparen.
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar

              Lädt...
              X