Ankündigung

Einklappen
Keine Ankündigung bisher.

Statische Methoden aufrufen -> Fehlermeldung

Einklappen

Neue Werbung 2019

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

  • Statische Methoden aufrufen -> Fehlermeldung

    hi

    nach längerer Zeit mit prozeduraler PHP-Programmierung will ich jetzt endlich "richtig" in OOP einsteigen. Aller Umstieg ist aber schwer

    In einem kleinen Projekt habe ich zwei Klassen die in zwei Dateien aufgeteilt sind. Im Script (index.php) habe ich folgenden Autoloader eingebaut:
    PHP-Code:
    function my_autoload($class_name)
    {
      
    $file 'classes/'.strtolower(str_replace('\\','/',$class_name)).'.php';
      if(
    file_exists($file))
      {
        require_once(
    $file);
      }
    }
    spl_autoload_register('my_autoload'); 
    Wenn ich dann eine Klasse instanziere klappt das und ich kann diese verwenden:

    PHP-Code:
    use user\user;
    $user = new user();

    use 
    ausgabe\ausgabe;
    $ausgabe = new ausgabe(); 
    Jetzt benötige ich aber in einer Methode in der Klasse "user" eine Methode der Klasse "ausgabe". Die ist dort wie folgt definiert:

    PHP-Code:
    class ausgabe {
      public static function 
    text$text ) {
        echo 
    $text;
      }

    Wenn ich aber jetzt in der Klasse "user" die Funktion direkt aufrufe

    PHP-Code:
    ausgabe::text"Max Muster" ); 
    kommt diese Fehlermeldung:

    Fatal error: Class 'ausgabe' not found in /var/www/html/index.php on line 77
    Wenn ich die Klasse "ausgabe" direkt in die index.php kopiere, also nicht in eine extra Datei auslagere funktioniert der Aufruf.

    Hab ich da ein Problem mit dem Autoloader?

    Oder noch ein dicken Denkfehler drin?

    Gruss


  • #2
    wass rufst du wie auf ?
    klingt so als hast du ein fehler mit namespaces ..
    PHP-Code:
    \Ausgabe\ausgabe::text("this is shit"); 
    schon probiert ?

    statische methoden sind nicht der bringer, hab ich nie mit dem autoloader probiert...
    und so eine echo methode muss ja auch nicht zwingend sein...
    nebenbei bemerkt.
    die methode gibt einen string zurück, der wird ge-echoed

    Kommentar


    • #3
      hi

      vielen Dank für deine schnelle Antwort.

      Zitat von tomBuilder Beitrag anzeigen
      wass rufst du wie auf ?
      klingt so als hast du ein fehler mit namespaces ..
      PHP-Code:
      \Ausgabe\ausgabe::text("this is shit"); 
      schon probiert ?
      mich hat die Sache heute nacht keine Ruhe gelassen. Der Ansatz mit dem Namespace hab ich dann heute morgen ausprobiert => tut!

      Dein Posting war dann eine zusätzliche Bestätigung das ich auf dem richtigen Dampfer bin.

      vielen Dank!

      Gruss

      Kommentar


      • #4
        Zitat von Programmierer Beitrag anzeigen
        Dein Posting war dann eine zusätzliche Bestätigung das ich auf dem richtigen Dampfer bin.

        vielen Dank!

        Gruss
        Na so halb. Vergiss als erstes statische Methoden, wenn du wirklich OOP lernen willst

        Kommentar


        • #5
          Zitat von xm22 Beitrag anzeigen

          Vergiss als erstes statische Methoden, wenn du wirklich OOP lernen willst
          Solche Sprüche/Meinungen ohne Hintergrundinformationen haben für OOP-Einsteiger keinen Wert. Statische Methoden, richtig eingesetzt, haben auch in der OOP-Welt ihre Berechtigung.
          Dazu ein Link: Is using a lot of static methods a bad thing?

          PHP-Klassen auf github

          Kommentar


          • #6
            Solche Sprüche/Meinungen ohne Hintergrundinformationen haben für OOP-Einsteiger keinen Wert.
            Da hast Du in der Tat Recht. Programmierer Es geht darum, dass es bei OOP um Objekte und Zustände und deren Verhalten geht. Statische Methoden sind ein Konstrukt, dass damit rein gar nichts zu tun hat. Aus diesem Grunde, empfehle ich Dir - sollte es Dir mit OOP wirklich ernst sein, die mit großer Skepsis zu verwenden.

            Statische Methoden, richtig eingesetzt, haben auch in der OOP-Welt ihre Berechtigung.
            Dazu ein Link: Is using a lot of static methods a bad thing?
            Nur, weil irgendeiner auf Stackoverflow seine Meinung dazu geschrieben hat, macht es das in Hinblick auf OOP nicht richtiger. Statische Methoden sind Krücken, die benötigt werden, weil man auf die Art und Weise, wie die meisten Pogrammiersprachen verwendet werden, reine Funktionen schlecht machbar sind.

            Sprüche
            Gute Güte, bleib mal entspannt...

            Kommentar


            • #7
              in Python bspw., machen statische methoden durchaus sinn, in php nur bedingt.
              als anfänger allerdings sollte man sich erstmal komplett davon fernhalten, will man oop lernen.
              da bin ich voll bei xm22
              lich habe das ja auch als arg vermerkt und bin im text drauf eingeganen.

              Kommentar

              Lädt...
              X