ich finde keine Antwort in irgendwelchen Foren auf meine Frage. Ich hatte einen dreiwöchigen Kurs in Java; deswegen wollte ich OOP auch in php probieren, aber irgendwie kann ich nicht einmal einen einfachen String in einer anderen Datei ausgeben.
Habe zwei Dateien: Test.class.php und test.php
Test.class.php
[code]class Test {
public $var = “”;
private function setString()
{
// Den String setzten
}
public function getString()
{
// Den String zurückgeben
return $this->var;
}
}[/code]
test.php
include_once("Test.class.php");
$test = new Test();
$test->getString();
echo $test->var; // Gibt nichts aus
Funktioniert nicht. Was mache ich falsch?
LG und danke
[Edit]Ja stimmt, du hast Recht. Ich habe das nur so schnell hingeschrieben und wohl einen kleinen Fehler gemacht. Wollte nicht meine gesamte 400-zeilige class posten. Funktioniert trotzdem leider nicht.[/Edit]
Viel gelernt zu haben, was das Konzept OO generell angeht, scheinst du dort aber nicht …
Der Code sieht reichlich unsinnig aus.
Was soll die Methode setString machen, und wer und von wo aus soll die aufrufen?
Was ist $this->String, was getString zurückliefern soll? Warum ist keine solche Eigenschaft angelegt?
$test->getString();
echo $test->String; // Gibt nichts aus
Warum machst du nichts mit dem Rückgabewert der Methode getString?
Und wieder: Was soll $test->String sein?
Du verwechselst „funktioniert nicht“ mit einer sinnvollen Problembeschreibung.
Du hast offenbar das error_reporting nicht vernünftig eingestellt (E_ALL). Damit würde dich PHP darauf hinweisen, wenn du bspw. auf nicht vorhandene Eigenschaften zuzugreifen versuchst.
Beim Java-Kurs haben wir mehr oder weniger die Grunglagen der Programmierung gelernt. Schleifen, DatenTypen, (casten) etc. … und in der zweiten Wochen konnte ich leider nicht teilnehmen, sodass mir einiges fehlt.
[quote]Der Code sieht reichlich unsinnig aus.[/quote] Für dich vielleicht, aber nicht für einen blutigen Anfäger, wie mich. Ich kenn das, wenn ich jemandem Mathe erklären muss. Setze bitte nicht zu viel voraus!
“return $this->var;”, so haben wir das bei Java gemacht, wenn man die Variable von einer anderen class sogar eines anderen package zurückgreifen will, wenn man sie vorher als private definiert hat. Ich weiß leider nicht, wie man das mit php anders machen kann.
setString() wird nicht aufgerufen, sondern nur in der gleichen class verwendet, deswegen auch private function … sie setzt nur den String, z.B. $this->var = “Bla bla bla”;
php sagt mir, dass die Variable, die ich in test.php ausgeben will null sei.
Wenn du die Variable nur innerhalb der gleichen Klasse setzen willst, ist dafür einen eigenen Funktion ziemlich unsinnig, höchstens mit dem Setzen sind noch weitere Aktionen verbunden. Die Variable sollte außerdem als protected deklariert werden, da man auf sie ja per Funktion zugreift:
[code]<?php
class Test {
protected $_string;
// Konstruktor, Werte beim erstellen der Klasse setzen
public function __construct($string=’’)
{
$this->setString($string);
}
// Funktion zum setzen der Variable von außen
public function setString($string)
{
$this->_string = $string;
}
// FUnktion, um Variable auszulesen
public function getString()
{
return $this->_string;
}
}
// Beispiel:
header(“Content-Type: text-plain”); // Textausgabe, ohne HTML