Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Standard-Klasse und Autoload

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Standard-Klasse und Autoload

    Hallo zusammen,

    ich bin nach längerer Abstinenz wieder zur php-Entwicklung gekommen.
    Nun experimentiere ich gerade mit Klassen und vor allem dem spl_autoload.
    Soweit so gut...
    Meine Autoloader-Funktion lädt die Klassen die ich erstellt habe auch korrekt.
    Aber wenn ich jetzt auf eine Standard-Klasse zugreifen will gibt es eine Fehlermeldung weil der Autoloader versucht, diese ebenfalls in meinen Unterverzeichnissen zu suchen.
    Was muss ich tun, damit z.B. $zip = new ZipArchive(); nicht mehr zu einem Fehler
    "Class 'UpdateRolloutO\\core\\ZipArchive' not found" führt?

    Mein Autoloader sieht so aus:
    PHP-Code:
     public function register ()
      {
        
    spl_autoload_register ( array ($this'loadClass') );
      }

      public function 
    loadClass$className )
      {
        if ( 
    $this->namespace !== null )
        {
          
    $className str_replace $this->namespace '\\'''$className );
        }

        
    $className str_replace '\\'DIRECTORY_SEPARATOR$className  );

        
    $file ROOT_PATH $className '.class.php';

        if ( 
    file_exists ($file) )
        {
          require_once (
    $file);
        }
      } 
    Hoffe mir ist zu helfen

    Chris


  • #2
    Wieso nutzt du nicht composer. Das kümmert sich ganz allein ums autoloading.

    Kommentar


    • #3
      Falls du schauen willst: http://php-de.github.io/jumpto/composer/
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Das liegt vermutlich nicht an deinem Autoloader, sondern daran, dass du in einer Datei mit namespace-Statement bist?

        use ZipArchive;

        oder $var = new \ZipArchive();

        Ansonsten bastelt PHP den aktiven Namespace vor den Klassennamen.

        Kommentar


        • #5
          Composer wird ihm nicht helfen.

          Dir fehlt ein

          use \ZipArchive; // backshlash !
          bzw.:

          $zip = new \ZipArchive; // backlsash !
          edit: zu langsam
          Zitat von nikosch
          Naja, anscheinend spricht die Steckdose kein HTTP. LOL

          Kommentar


          • #6
            Danke Nermshaus und Suralc, genau das war der Fehler...
            Ich sollte erst die Bücher lesen und dann losprogrammieren

            Kommentar

            Lädt...
            X