Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Methode wird nicht gefunden

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Methode wird nicht gefunden

    Guten Tag liebe Community.
    Ich arbeite derzeit an einer Content Management System und bin derzeit bei dem MVC Routing. Ich habe leider nur ein kleines Problem.

    Ich überprüfe ob die URL leer ist (falls sie leer ist, soll der IndexController zum Einsatz kommen). Das Problem ist, er findet die Methode "Main", obwohl sie definiert und vorhanden ist.

    Fehlermeldung:
    Code:
    Fatal error: Call to undefined method XXX\Controller\IndexController::Main() in /Applications/XAMPP/xamppfiles/htdocs/XXX/classes/mvcclasses/SimpleRouting.php on line 10
    Mein Code (SimpleRouting):
    PHP-Code:
    class SimpleRouting {
      public function 
    __construct() {
        
    $route = (empty($_GET['site'])) ? '' $_GET['site'];

        if(empty(
    $route)) {
          require 
    APP_ROOT.'/joy/controllers/IndexController.php';
          
    $index = new \Joy\Controller\IndexController;
          
    $index->Main();
          return 
    FALSE;
        }
      }

    Wie man sieht, rufe ich die Methode "Main" auf, leider wird sie nicht gefunden.
    Hier nochmal der IndexController:
    PHP-Code:
    <?php
    namespace Joy\Controller;
    use 
    Joy\Classes\MVCClasses\Controller as Controller;
    class 
    IndexController extends Controller {
      public function 
    Main() {
        echo 
    "test";
      }
    }
    Was habe ich falsch gemacht? :S
    MfG.
    Dir gefällt mein Beitrag, ich habe Dir geholfen?
    Bewerte mich doch einfach!

  • #2
    Zeigt APP_ROOT auf das passende Verzeichnis?

    Grundsätzlich sieht das für mich okay aus.

    Code:
    <?php
    
    namespace Joy\Classes\MVCClasses;
    
    class Controller
    {
    
    }
    
    namespace Joy\Controller;
    
    use Joy\Classes\MVCClasses\Controller as Controller;
    
    class IndexController extends Controller {
      public function Main() {
        echo "test";
      }
    }
    
    namespace Foo;
    
    class SimpleRouting {
      public function __construct() {
        $route = (empty($_GET['site'])) ? '' : $_GET['site'];
    
        if(empty($route)) {
          #require APP_ROOT.'/joy/controllers/IndexController.php';
          $index = new \Joy\Controller\IndexController;
          $index->Main();
          return FALSE;
        }
      }
    }
    
    new SimpleRouting();
        // "test"
    Für Code mit Namespaces bitte [code][/code] verwenden. Das kriegt der PHP-Highlighter hier nicht auf die Kette.

    Kommentar


    • #3
      Zitat von mermshaus Beitrag anzeigen
      Zeigt APP_ROOT auf das passende Verzeichnis?

      Grundsätzlich sieht das für mich okay aus.

      Code:
      <?php
      
      namespace Joy\Classes\MVCClasses;
      
      class Controller
      {
      
      }
      
      namespace Joy\Controller;
      
      use Joy\Classes\MVCClasses\Controller as Controller;
      
      class IndexController extends Controller {
        public function Main() {
          echo "test";
        }
      }
      
      namespace Foo;
      
      class SimpleRouting {
        public function __construct() {
          $route = (empty($_GET['site'])) ? '' : $_GET['site'];
      
          if(empty($route)) {
            #require APP_ROOT.'/joy/controllers/IndexController.php';
            $index = new \Joy\Controller\IndexController;
            $index->Main();
            return FALSE;
          }
        }
      }
      
      new SimpleRouting();
          // "test"
      Für Code mit Namespaces bitte [code][/code] verwenden. Das kriegt der PHP-Highlighter hier nicht auf die Kette.
      Danke für den Tipp! Ja, APP_ROOT zeigt auf das richtige Verzeichniss, leider findet er die Methode "Main" nicht, was echt strange ist.

      MfG.
      Dir gefällt mein Beitrag, ich habe Dir geholfen?
      Bewerte mich doch einfach!

      Kommentar


      • #4
        Bei mir klappt das. Muss an einem Fehler liegen der außerhalb des von dir geposteten Codes liegt.

        Kommentar


        • #5
          Zitat von monolith Beitrag anzeigen
          Bei mir klappt das. Muss an einem Fehler liegen der außerhalb des von dir geposteten Codes liegt.
          Dann schaue ich mir nochmal alles an, und werde ggf. diesen Post ändern!
          MfG.
          Dir gefällt mein Beitrag, ich habe Dir geholfen?
          Bewerte mich doch einfach!

          Kommentar


          • #6
            Tut mir leid für den Doppelpost, aber ich bin langsam wirklich am verzweifeln.
            Ich habe von meinem Code $index->Main(); entfernt, um zu überprüfen ob mein Routing auf den Konstruktor anspringt, leider fehlgeschlagen.

            Ich bekomme weder einen Wert zurück, noch weiß ich was ich falsch gemacht habe.
            Ich lade später alle Files hoch auf GitHub (CMS wird sowieso Open-Source sein :P), damit Ihr noch eine Übersicht habt, als das ich alle Codes hier poste.

            MfG.
            Dir gefällt mein Beitrag, ich habe Dir geholfen?
            Bewerte mich doch einfach!

            Kommentar


            • #7
              Das wäre wohl ganz gut

              Kommentar


              • #8
                So, hier habt Ihr eine Übersicht: https://github.com/meikelsmirnow/joyCMS
                MfG.
                Dir gefällt mein Beitrag, ich habe Dir geholfen?
                Bewerte mich doch einfach!

                Kommentar


                • #9
                  Hi,

                  ich hab mir dein Projekt mal geclonded. Du hast zwei Ordner namens "controller" und controllers".

                  Beide haben eine "IndexController.php". Du referenzierst

                  Code:
                  require APP_ROOT.'/joy/controllers/IndexController.php';
                  Dort ist die Main() Methode aber nicht enthalten.

                  Im Ordner "controller" ist sie allerdings in der ."IndexController.php" enthalten.

                  Dort hast du auf Zeile 7 allerdings noch einen Syntax Error, den du vorher bereinigen müsstest.

                  Ich hoffe damit kommst du weiter.

                  Kommentar


                  • #10
                    Zitat von moveax Beitrag anzeigen
                    Hi,

                    ich hab mir dein Projekt mal geclonded. Du hast zwei Ordner namens "controller" und controllers".

                    Beide haben eine "IndexController.php". Du referenzierst

                    Code:
                    require APP_ROOT.'/joy/controllers/IndexController.php';
                    Dort ist die Main() Methode aber nicht enthalten.

                    Im Ordner "controller" ist sie allerdings in der ."IndexController.php" enthalten.

                    Dort hast du auf Zeile 7 allerdings noch einen Syntax Error, den du vorher bereinigen müsstest.

                    Ich hoffe damit kommst du weiter.
                    Stimmt, ich hatte zwar 2 Ordners angelegt, aber vergessen die eine zu löschen. In beiden Datein war eig. die Main() Methode vorhanden, lag anscheinend daran das ich mein Cache nicht gecleared hatte. ._.

                    Oh, ich schaue mir das gleich mal an mit dem Syntax Error.
                    MfG.
                    Dir gefällt mein Beitrag, ich habe Dir geholfen?
                    Bewerte mich doch einfach!

                    Kommentar

                    Lädt...
                    X