Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler bei Klassenaufruf

Einklappen

Neue Werbung 2019

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

  • Fehler bei Klassenaufruf

    Hallo zusammen,
    wie gaaanz viele Personen habe ich auch ein Problem.
    Ich bin Anfänger, entsprechend schreibe ich in dieses Forum, und bitte um kurze Hilfe.

    Ich bekomme immer den Fehler "Fatal error: Cannot declare class TPLINKClient, because the name is already in use in /var/www/html/HS110_1/TPLINKClientClass.php on line 39" und weiß nicht mehr weiter.
    In einer Datei TPLINKClientClass.php gibt es eine Klasse TPLinkClient, die erzeugt wird. Anscheinend wird diese zu oft versucht zu erzeugen oder nicht zerstört/beendet.

    In Zeile 39 steht foglendes:
    PHP-Code:
    class TPLINKClient{

    private 
    $UDP;
    private 
    $IP;
    public 
    $socket
    .....

    Mein Vorhaben ist, ein WLan-Steckdose der Fa. TPLink zu schalten.
    Entsprechend habe ich einen Button im HTML Formular platziert.
    Als erstes soll der aktuelle Zustand ermittelt und als Text im Button angezeigt werden. Das funktioniert auch.
    Wenn ich auf den Button drücke soll die Steckdose schalten. Auf Grund meiner Fehlersuche wird bei HS110Schalten immer True (zum Einschalten) übergeben.
    Aber zum Schalten komme ich gar nicht, da hier immer die o. g. Fehlermeldung erscheint.

    Schaut mal bitte ob Ihr eine Idee habt, woran es liegen könnte.

    Vielen Dank.

    PHP-Code:
      <form method="POST">
        <label>Lampenstatus</label>
        <input type="submit" name="StatusHS110" value="<?php include 'Test.php'; echo HS110Info ('192.168.178.4');?>"/>
        <?php
          
    if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['StatusHS110']))
          {     
           include 
    'Test.php';
           
    HS110Schalten (true,'192.168.178.4');
          }
        
    ?>   
      </form>
    PHP-Code:
    <?php
          error_reporting
    (E_ALL);
          
    ini_set('display_errors'true);    
        function 
    HS110Info ($IP)
        {
            include 
    'TPLINKClientClass.php';
            
    $TPLINKSocket = new TPLINKClient(false,$IP);
            
    $sendMessage $cmdList["info"];
            
    $responses =  $TPLINKSocket->sendReceive($sendMessage);
            
    $jsonResponses json_encode($responses);
            
    $TPLINKSocket->closeSocket();
            unset(
    $TPLINKSocket);
            
    $StatusLampe strpos($jsonResponses'"relay_state":1');
            return 
    $StatusLampe 'On' 'Off';
        }    

        function 
    HS110Schalten($An$IP)
        {
            include 
    'TPLINKClientClass.php';
            
    $TPLINKSocket = new TPLINKClient(false,$IP);
            if (
    $An == True)
                {
    $sendMessage $cmdList["on"];}
            else
                {
    $sendMessage $cmdList["off"];}
            
    $responses =  $TPLINKSocket->sendReceive($sendMessage);
            
    $jsonResponses json_encode($responses);
            
    $TPLINKSocket->closeSocket();
            unset(
    $TPLINKSocket);    
        }
    ?>


  • #2
    Die Fehlermeldung sagt alles. Du willst eine Klasse deklarieren, die es schon gibt.

    Du solltest dich davon verabschieden Klassen-Dateien mit include einzubinden. Sowas macht man nicht und eine der Gründe ist der aufgetretene Fehler. Beschäftige dich mal mit Autoloading.

    Übrigens sollten Klassendateien genau so wie die Klasse benannt werden. Also die Klasse TPLINKClient sollte in der Datei TPLINKClient.php deklariert werden.

    Kommentar


    • #3
      Danke für den Hinweis.
      Werde mich nachher mal mit Autoload beschäftigen.

      Kommentar

      Lädt...
      X