Ich habe ein PHP-Programm, in dem ich eine Funktion und eine Klasse mit einer öffentlichen Konstruktfunktion habe. Ich muss die Funktion aus dem öffentlichen Konstrukt heraus wie im folgenden Code aufrufen:

class test {

    public $var0 = null;

    public function __construct() {

        $this->var0 = Tfunction('lol');

    }

}

function Tfunction ($String) {

    $S = ($String . ' !');

    return $S;

}

$j = new test();

echo($j);

Wenn ich dies ausführe, wird die Funktion nicht ausgeführt. Ich habe alles versucht, aber es möchte nicht "lol!" Wie könnte ich in meiner öffentlichen Variablen dies zum Laufen bringen?

Eine Sache zu beachten, ich bekomme keine Fehler, die mir sagen, dass die Klasse nicht auf die Schrift zugreifen kann oder so, es scheint nur, dass die Zeile ignoriert wird und $ var0 mit null abgelegt wird.

3
Mercury 26 Dez. 2015 im 21:08

2 Antworten

Beste Antwort

Der Fehler, der beim Ausführen Ihres Codes ausgegeben wurde, war:

'Objekt des Klassentests konnte nicht in Zeichenfolge konvertiert werden'

Es gibt zwei Möglichkeiten, wie Sie dieses Problem lösen können.

  1. Anstelle der Zeile echo($j); ändern Sie sie in echo($j->var0);

Anstatt jetzt zu versuchen, das Objekt zu drucken, drucken Sie jetzt die öffentliche Variable aus dem Objekt, das im Konstruktor festgelegt wurde.

  1. Fügen Sie Ihrem Objekt eine __toString () -Methode hinzu und geben Sie damit das var0-Feld aus.

    class test {
    
      public $var0 = null;
    
      public function __construct() {
    
        $this->var0 = Tfunction('lol');
    
      }
    
      public function __toString(){
    
        return $this->var0;
    
      }
    
    }
    
    function Tfunction ($String) {
    
      $S = ($String . ' !');
    
      return $S;
    
    }
    
    $j = new test();
    
    echo($j);
    

Wenn Sie nun versuchen, das Objekt mit echo($j); zu drucken, wird der von Ihnen zugewiesene __toString () zur Ausgabe Ihrer Variablen verwendet.

Beide Korrekturen bedeuten, dass 'lol!' wurde wie ursprünglich erwartet in mein Browserfenster ausgegeben.

0
dading84 28 Dez. 2015 im 22:36

Klassendeklaration ist falsch. Sie müssen ein Klassenobjekt erstellen

<?php   
class test {

    public $var0 = null;

    public function __Construct() {
   echo Tfunction('lol');



    }

}

$obj=new test();

function Tfunction ($String) {

    $S = ($String . ' !!');
    return $S;


}
?>
0
Anand Ontigeri 26 Dez. 2015 im 19:17