Ankündigung

Einklappen
Keine Ankündigung bisher.

Constant expression contains invalid operations

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

  • Constant expression contains invalid operations

    Hallo liebe Community,

    leider benötige ich schon wieder eure hilfe. Bei meinem versuch bzgl. eines Logsystems erhalte ich beim erzeugen der Class diesen fehler:
    HTML-Code:
    Fatal error: Constant expression contains invalid operations in C:\\htdocs\dashboard\assets\php_inc\MySQL.inc.php on line 18
    MySQL.inc.php
    PHP-Code:
     <?php
       
    include 'LogSystem.php';
     use 
    LogSystem\LogSystem as LogSyS;
       class 
    MySQL extends LogSystem{
            const 
    FILEPATH "";
       private 
    $hostname null;
     private 
    $port null;
     private 
    $username null;
     private 
    $password null
    ;  private $dbname null;
       public 
    $Log = new LogSyS();
       function 
    __construct() {
     
    $conData getConnectionData();
     
    $this->hostname $conData->hostname;
     
    $this->port $conData->port;  $this->username $conData->username;
     
    $this->password $conData->password;  $this->dbname $conData->dbname;
     }
       function 
    createMySQLConnection() {
        try {
     
    $pdo = new PDO('mysql:host=localhost;dbname=test''username''password');
     } catch(
    Exeption $e) {
       }

    }
       private function 
    getConnectionData() {

     
    $handle fopen (self::FILEPATH"r");
     
    $rawData json_decode(fread ($handlefilesize ($dateinamen)));
     
    fclose ($handle);
       return 
    $rawData;  }    }    ?>
    LogSystem.php

    PHP-Code:


      <?php
       
    class LogSystem {
        public const 
    ERRORFILEPATH "../data/Log.log";
       public function 
    __construct() {
        }
       public function 
    writeLogEvent($ErrorType$ErrorMessage) {
       
    $timestamp time();
     
    $datum date("H:i:s - d.m.Y"$timestamp);
       
    $ErrorString "[" $datum "] " $ErrorType " = " $ErrorMessage;
       if(!(
    file_exists(self::ERRORFILEPATH))) {  if(!(createNewLogfile())) throw new Exception("Error Processing 'createNewLogfile' Request"1);
     }
       if(!(
    file_put_contents(self::ERRORFILEPATH$ErrorStringFILE_APPEND))) throw new Exception("Error Processing 'writeContent' Request"1);
        return 
    true;
     }
       
    /*  * @return boolean true if everything was correct | false if errors occurred  */  private function createNewLogfile() {
     try {  
    $datei fopen(self::ERRORFILEPATH'w');  fwrite($dateinull);  fclose($datei);    return true;  } catch(Exeption $e) {  return false;  }  ?>
    Danke für eure hilfe.


  • #2
    Hast du die Meldung einmal gegoogelt? Wäre um einiges weniger Arbeit gewesen als das hier zu posten. Nur so als Tipp

    Da gibts ganz viele Treffer. zB https://stackoverflow.com/a/40171696
    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


    • #3
      In deinem Code #1 wimmelt es nur so von Fehlern, ich wüsste nicht wo ich bei einer Aufzählung anfangen sollte. Nur ein Beispiel
      PHP-Code:
      $conData getConnectionData
      Hier sind gleich 2 Fehler drin.
      Vom nicht vorhandenen Konzept mal abgesehen. Was soll das werden?
      Und warum ein neuer Thread?
      Hast du überhaupt irgendwas aus dem Thread Logsystem in PHP verstanden und für dich mitnehmen können?
      PHP-Klassen auf github

      Kommentar


      • #4
        Der Code ist so halt nicht lesbar. Das ist einfach nur ein Durcheinander.

        Kommentar


        • #5
          PHP bringt von Haus aus schon alles mit um auftretende Fehler in einer Datei zu loggen, schau dir mal in der php.ini den entsprechenden Abschnitt an.

          Das war auch schon in https://www.php.de/forum/webentwickl...55#post1535455 ff. angesprochen worden.

          Kommentar


          • #6
            Die Fehlermeldung kommt hier her:

            PHP-Code:
            public $Log = new LogSyS(); 
            Siehe Beispiel 1 "Ungültige Deklarationen von Eigenschaften":
            http://php.net/manual/de/language.oop5.properties.php

            Kommentar


            • #7
              Hallo,

              ich habe dass schon bei vielen Beiträgen, nicht nur hier, gelsesen, dass der Code von Leuten 'schlecht' ist, ein heilloses Durcheinander herscht oder sonstiges, aber leider schreibt nie jemand einen gezielten Tipp bzw. einen Rat was der jenige verbessern kann. Es gibt nun mal auch leute, die es einfach nie anders erklärt/gelernt bekommen haben und genau dennen würde ein kleiner Tipp bestimmt helfen.

              LG

              Kommentar


              • #8
                Zitat von WebInsel Beitrag anzeigen
                ich habe dass schon bei vielen Beiträgen, nicht nur hier, gelsesen, dass der Code von Leuten 'schlecht' ist, ein heilloses Durcheinander herscht oder sonstiges, aber leider schreibt nie jemand einen gezielten Tipp bzw. einen Rat was der jenige verbessern kann. Es gibt nun mal auch leute, die es einfach nie anders erklärt/gelernt bekommen haben und genau dennen würde ein kleiner Tipp bestimmt helfen.
                Hast du dir nie fremden Code angeschaut?

                Und hast du kein ästhetisches Empfinden?

                Deine Variante:
                PHP-Code:
                 use LogSystem\LogSystem as LogSyS;
                   class 
                MySQL extends LogSystem{
                        const 
                FILEPATH "";
                   private 
                $hostname null;
                 private 
                $port null;
                 private 
                $username null;
                 private 
                $password null
                ;  private $dbname null;
                   public 
                $Log = new LogSyS();
                   function 
                __construct() {
                 
                $conData getConnectionData;
                 
                $this->hostname $conData->hostname;
                 
                $this->port $conData->port;  $this->username $conData->username;
                 
                $this->password $conData->password;  $this->dbname $conData->dbname;
                 }
                   function 
                createMySQLConnection() {
                    try {
                 
                $pdo = new PDO('mysql:host=localhost;dbname=test''username''password');
                 } catch(
                Exeption $e) {
                   }


                Eine sauber eingerückte Variante:
                PHP-Code:
                use LogSystem\LogSystem as LogSyS;

                class 
                MySQL extends LogSystem {
                    const 
                FILEPATH "";

                    private 
                $hostname null;
                    private 
                $port null;
                    private 
                $username null;
                    private 
                $password null;
                    private 
                $dbname null;

                    public 
                $Log = new LogSyS();

                    public function 
                __construct() {
                        
                $conData getConnectionData// <- string "getConnectionData"???
                        
                $this->hostname $conData->hostname;
                        
                $this->port $conData->port;
                        
                $this->username $conData->username;
                        
                $this->password $conData->password;
                        
                $this->dbname $conData->dbname;
                    }

                    public function 
                createMySQLConnection() {
                        try {
                            
                $pdo = new PDO('mysql:host=localhost;dbname=test''username''password');
                        } catch (
                Exeption $e) {
                            
                // ignore exception?
                        
                }
                    }

                Kommentar


                • #9
                  Zitat von hellbringer Beitrag anzeigen
                  Hast du dir nie fremden Code angeschaut?
                  Und hast du kein ästhetisches Empfinden?
                  ..
                  Das mit dem sauberen einrücken habe ich im Code Editor(VS Code) genauso wie du, leider funktioniert beim kopieren hier ins Forum irgendwas, dies führt dann zum obigen Code.
                  Ich habe schon selbst noch versucht etwas zuretten, aber leider ohne erfolg.

                  Mir geht größtenteils darum, dass in Massenhaft Beiträgen(nicht nur hier) immer gesagt wird 'schlecht programmierter Code' etc., dann aber keine verbesserungs vorschläge bzw. Tipps/hilfen gegeben werden und somit Code von anderen villeicht etwas unerfahreneren Programmierern, welche die Tematik gerade lernen abgewärtet wird.

                  LG

                  Kommentar


                  • hausl
                    hausl kommentierte
                    Kommentar bearbeiten
                    WebInsel, bitte keine Full-Qoutes. Danke!

                • #10
                  Versuch mal den Code mit STRG+SHIFT+V einzufügen oder direkt aus einem reinen Texteditor.
                  Dir wurden aber jetzt schon mindestens 2 konkrete Stellen genannt, die falsch sind. Hast du hier denn bereits ansetzen können?

                  Kommentar


                  • #11
                    Oder mal einen anderen Browser probieren. Bei mir funktioniert das problemlos Code aus Visual Studio Code ins Forum zu kopieren. Und andere Leute schaffens ja auch. Die Einstellung "geht nicht, kann man halt nichts machen" ist da nicht sonderlich förderlich, wenn man Hilfe sucht. Dann musst du dich eben bemühen, damit es funktioniert. Und wenn du jetzt 1 Stunde daran sitzt, dass du Code ins Forum bekommst, ist es immer noch besser, als 50 oder 100 Leser vertun Minuten ihrer Zeit den Code-Haufen zu entschlüsseln.

                    Kommentar


                    • #12
                      Zitat von Meister1900 Beitrag anzeigen
                      Dir wurden aber jetzt schon mindestens 2 konkrete Stellen genannt, die falsch sind. Hast du hier denn bereits ansetzen können?
                      Nein leider nicht.

                      Kommentar


                      • #13
                        Gibt es eventuell jemanden der es mir nochmal erklären könnte?

                        Kommentar


                        • #14
                          Zitat von jspit Beitrag anzeigen
                          In deinem Code #1 wimmelt es nur so von Fehlern, ich wüsste nicht wo ich bei einer Aufzählung anfangen sollte. Nur ein Beispiel
                          PHP-Code:
                          $conData getConnectionData(); 
                          Was ist daran genau falsch?

                          Ich weiße doch der Variable $conData doch einfach nur den return Wert der function getConnectionData oder?

                          Kommentar


                          • #15
                            Der Aufruf muss so lauten:

                            PHP-Code:
                            $conData $this->getConnectionData(); 
                            Die Klammern scheinst du ja nachträglich noch korrigiert zu haben.

                            Kommentar

                            Lädt...
                            X