Ankündigung

Einklappen
Keine Ankündigung bisher.

Klasse wird nicht gefunden

Einklappen

Neue Werbung 2019

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

  • Klasse wird nicht gefunden

    Hallo,

    ich habe eine Klasse erstellt für den Aufbau einer Datenverbindung, welche aus einer anderen Klasse heraus aufgerufen wird bzw. eine statische Methode wird aufgerufen.

    Auf meinem Oflinesystem (XAMPP unter Windows 10 mit PHP 5.6.) läuft das Ganze auch fehlerfrei.

    Sobald ich das Ganze dann auf unseren Linux Server (SUSE SLES mit PHP 5.5.x) ausführen will, kommt did Fehlermeldung, das die Klasse App\\Database\\Connection\ConnectDB nicht gefunden werden kann. Das Verzeichnis App wird über PSR-4 geladen. Alle anderen Funktionalitäten mit anderen Klassen funktionieren - nur diese eine nicht.

    Hier mal der Code ConnectDB.php:

    PHP-Code:

    namespace App\DataBase\Connection;


    class 
    ConnectDB
    {
        
    // Hold the class instance.
        
    private static $instance null;
        private 
    $conn;

        private 
    $host;
        private 
    $user;
        private 
    $pass;
        private 
    $name;

        protected static 
    $container;

        
    // The db connection is established in the private constructor.
        
    private function __construct()
        {
            
    $this->host self::$container['host'];
            
    $this->user self::$container['username'];
            
    $this->pass self::$container['password'];
            
    $this->name self::$container['database'];

            
    $this->conn = new \PDO("mysql:host={$this->host};
                dbname=
    {$this->name}"$this->user,$this->pass,
                array(\
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
        }

        public static function 
    getInstance($container)
        {
            
    self::$container $container;
            if(!
    self::$instance)
            {
                
    self::$instance = new ConnectDB();
            }

            return 
    self::$instance;
        }

        public function 
    getConnection()
        {
            return 
    $this->conn;
        }

    Aufgerufen wird sie von hier (Auth.php):

    PHP-Code:

    namespace App\Auth;

    use 
    App\DataBase\Connection\ConnectDB;


    class 
    Auth
    {
        protected 
    $container;

        public function 
    __construct($container)
        {
            
    $this->container $container;

        }

        public function 
    getDataBase(){
            
    //var_dump(ConnectDB::class);
            //die();

            
    $instance ConnectDB::getInstance($this->container['db']);
            
    $conn $instance->getConnection();

            
    var_dump($conn);
            die();
        }

    Der Fehler wird hier angezeigt in der Errorlog des Apache - $instance = ConnectDB::getInstance($this->container['db']);
    Meldung: PHP Fatal error: Class 'App\\Database\\Connection\\ConnectDB' not found in ...

    Ich kann mir das nicht erklären, da andere Klassen funktionieren. Liegt es daran, dass ich eine statische Methode aufrufe?

    Ich würde mich sehr über Eure Hilfe freuen

    Gruß

    Reiner



  • #2
    klingt nach kein Autoloader vorhanden.

    Kommentar


    • #3
      Die Klasse ist Müll. Verabschiede dich von dem ganzen static-Zeug,

      Kommentar


      • #4
        Manche packen halt gern ein Marmeladenbrot in ein Marmeladenbrot um dann ein Marmeladenbrot zu haben.

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          Manche packen halt gern ein Marmeladenbrot in ein Marmeladenbrot um dann ein Marmeladenbrot zu haben.
          Marmeladenbrotception?

          Kommentar


          • #6
            Es war ein Schreibfehler in einem Namespace.

            Gruß

            Reiner

            Kommentar


            • #7
              Die Klasse ist ein ganzer Fehler.

              Kommentar


              • #8
                Dann sag doch mal, warum sie ein "ganzer Fehler ist" und was man statt dessen besser machen kann. Ich bin halt nicht der Profi und stehe nicht so tief in der Materie. Deshalb habe ich die Frage auch bei "PHP Einsteiger" gestellt in der Hoffnung, dass man auch mal hilfreiche Tipps fürs weitere Vorgehen erhält. Ansonsten braucht man kein Forum.

                Kommentar


                • #9
                  Zitat von rebelhig Beitrag anzeigen
                  Dann sag doch mal, warum sie ein "ganzer Fehler ist" und was man statt dessen besser machen kann.
                  Hab ich doch schon: Das ganze static-Zeug weglassen. Das bringt nur unnötige Abhängigkeiten. Wobei die Klasse ConnectDB für mich keine ersichtliche Daseinsberechtigung hat. Warum arbeitest du nicht gleich mit PDO in getDataBase()?

                  Kommentar


                  • #10
                    Schreibt er doch:

                    Zitat von hellbringer Beitrag anzeigen
                    Die Klasse ist Müll. Verabschiede dich von dem ganzen static-Zeug,
                    The string "()()" is not palindrom but the String "())(" is.

                    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

                    Lädt...
                    X