PHP Class Probleme

Grugeschu

Lt. Commander
Registriert
Juli 2006
Beiträge
1.858
Moin ich versuche mich mal wieder mit PHP. Ich hab mal versucht selbst mit Klassen zu arbeiten.

Also die Klasse convert_txt öffnet eine Textdatei !ohne Endung!, aus dem Ordner content. Die Klasseninterne Funktion open_and_convert soll die Zeilenumbrüche in der Textdatei in HTML umsetzen. Das läuft ohne die Klasse schon soweit. Leider geht es nicht wenn ich ein Objekt wie hier im Code anlege und mit dem Parameter für $name versehe.

Hoffe ich hab mich nicht unverständlich oder zu schwammig ausgedrückt.
PHP:
class convert_txt
	{
	private $name;

	private function openfile_and_convert($name)
		{
		// $name erweitern um content/$name
		$pfad = 'content/';

		$buchstaben0 = strlen($name);
		$buchstaben1 = strlen($pfad);
		$buchstaben0 = $buchstaben0 + $buchstaben1;

		// Testausgabe der Zeichenlängen
		//echo $buchstaben0;

		$name = str_pad($name, $buchstaben0, $pfad, STR_PAD_LEFT);

		// Testausgabe des Dateinamen und Pfades
		//echo $name;

		$read_tmp = fopen("$name",'r');

		if ($read_tmp)
			{
			while (!feof($read_tmp))
				{
				$zeile = fgets($read_tmp);
				echo $zeile, '<br>';
				}
		
			fclose($read_tmp);
			}
			
		else 
			{
			echo 'Datei nicht gefunden';
			}

		echo '</br>';
				}
		
	}


//Content Ausgabe ( BrowserURL: index.php?cont=XYZ )
// Content default
$cont = 'start';


if ( $cont == 'start' )
	{
	echo ' bin in Start';
	echo $cont;
	$inhalt = new convert_txt('start');
	echo $inhalt;
	}

Das eine Problem was mir auffiel, dass die $inhalt Variable ja ein Array sein müsste, aber kann ein ein Objekt anlegen ohne eine Variable zu füllen?

Wenn ich $inhalt zu einem Array mache hab ich aber weiterhin das Problemchen. Tut mir leid aber das ist das erste mal das ich was mit Klassen mache, ich möchte es halt gerne lernen,
 
Zuletzt bearbeitet:
Hi, Frage:

1.
PHP:
        $buchstaben0 = strlen($name);
        $buchstaben1 = strlen($pfad);
        $buchstaben0 = $buchstaben0 + $buchstaben1;

        // Testausgabe der Zeichenlängen
        //echo $buchstaben0;

        $name = str_pad($name, $buchstaben0, $pfad, STR_PAD_LEFT);

Was soll das ganze??? Hier die korrekte Lsg:

PHP:
$name = $pfad . $name;

2.
PHP:
$inhalt = new convert_txt('start');
Die Parameter bei der Erstellung einer Instanz der Klasse werden an den Konstruktor übergeben, den du leider nicht hast. Also würde ich die openfile_and_convert in convert_txt umbenennen
oder
einen Konstruktor schreiben, der den Namen in der Klassenvariablen name speichert und die openfile_and_convert-Funktion aufruft.



Außerdem empfehle ich dir deinen eigenen Einrückstil zu vermeiden und den Verbreiteten zu nutzen:
PHP:
if( $bla=$foo ) {
	$x = 5;
}

Die Konditionen (if-Verzweigung) sollte man komplementieren. Dh:
FALSCH
wenn Bedingung erfüllt -> weiter, sonst -> Fehlermeldung
RICHTIG
wenn Bedingung nicht erfüllt -> Fehlermeldung, sonst -> weiter

Wenn du es machst wie gehabt und dann noch Sachen weiter überprüfen willst, dann hast du ganz viele Verzweigungen und ganz am Ende ein Haufen Fehlermeldungen, die du ganz schlecht den oberen Code zuordnen kannst. Ich habe da immer folgendes System:
PHP:
if( empty($x) )
	$err[] = "Eingabe darf nicht leer sein.";
elseif( $x>=$y )
	$err[] = "Eingabe muss kleiner als y sein.";
	
if( count($err)>0 )
	outputError($err); // Ausgabe vom Array mit den Fehlermeldungen
else {
	// do this
}

Kannst die Tips annehmen oder einfach überlesen, deine Sache! ;)
Gruß, hm
 
Danke,
ich wusste nicht das ich eine Variable so füllen kann.
Das mit den Klassen werde ich mir dann noch mal genauer zu Gemüte führen.
 
Zurück
Oben