kostenloser Webspace werbefrei: lima-city


Daten aus Datei lesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    ich habe ein klasse geschrieben in der aus Templates eine Seite mit inhalt wird aber die untenstehende funktion liefert keine rückgabe



    //als $Templatefile wir index.tpl angegeben die sich im gleichen Ordner wie die klasse gespeichert ist und 2 Zeilen mit Blind-Text 
    //enthält. Die klasse erzeugt sich selbst.
    
    	function template_get_info($Templatefile)
    	{		
    		$handle = fopen( $Templatefile, 'a+' );
    		
    		while ( $this->temp_erg = fread( $handle, "4096" ) )
    		{
    			
    		}
    
    		fclose( $handle );
    
                    return $this->temp_erg;
    	}




    Beitrag zuletzt geändert: 7.3.2012 14:39:14 von nilsmargotti
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du solltest 'r' statt 'a+' nehmen, denn a+ setzt den Dateizeiger auf das Ende der Datei und da kannst du folglich nichts mehr lesen ;)
  4. Also kann chatstory nur zustimmen.

    Was mir aber noch aufgefallen ist, du benötigst keine WHILE -Schleife wenn in der nichts passiert.

    Du kannst, desweiteren filesize($datei); statt 4096 verwenden. Welches dann gleich die ganze Datei einliest.

    Wenn deine Datei größer ist als 4096 bytes wird der rest nicht mehr eingelesen.

    Mehr informationen unter: http://php.net/manual/de/function.fread.php
  5. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    Da ist jetzt nur noch ein problem wenn ich die funtione über

    $site = new Template_class()
    
    $site->template_get_info_file("index.tpl");


    aufrufe funktioniert es einwand frei.

    Aber wenn ich sie in der klasse aufrufe

    function __destruct()
    {
           $this->template_get_info_file("index.tpl");
    }


    funktioniert es nicht.
    Eigendlich müsste das aber gleich gehen, oder?
  6. nilsmargotti schrieb:
    Da ist jetzt nur noch ein problem wenn ich die funtione über

    $site = new Template_class()
    
    $site->template_get_info_file("index.tpl");


    aufrufe funktioniert es einwand frei.

    Aber wenn ich sie in der klasse aufrufe

    function __destruct()
    {
           $this->template_get_info_file("index.tpl");
    }


    funktioniert es nicht.
    Eigendlich müsste das aber gleich gehen, oder?


    So wie ich das sehe rufst du im ersten Code eine klasse auf, die wahrscheinlich irgendwo in deinem Restlichen Code deklariert ist, ansonsten kannst du die 1. Zeile weglassen..

    Im 2. Rufst du destruct (mach kaputt) auf ^^ Ich kann jetzt nur aufgrund den bisher geposteten Code was sagen aber:
    Der Browser Parsed php von oben nach unten, das heißt deine Datei wird aufgerufen und gleich wieder zerstört.. Mach wenig Sinn oder?

    Wenn du deine classe unbedingt wieder zerstören willst könntest du das in einer if anweisung tun, zum Beispiel wenn der Benutzer die Seite wieder verlässt oder so ^^
  7. warum eigentlich so kompliziert mit fopen() ... fread() ... fclose()

    ... geht doch viel einfacher ... mit file_get_contents()

    function template_get_info($Templatefile)
    	{		
                    $this->temp_erg = file_get_contents($Templatefile);
                    return $this->temp_erg;
    	}


    Dann hast Du auch kein Problem mit Dateizeiger oder Dateigröße

    und ich denke es geht auch ohne Funktion, finde die hier etwas überflüssig,
    da passiert ja nicht viel, ausser Datei Inhalt einlesen, also einfach direkt einlesen

    abstatt
    $this->temp_str = template_get_info($Templatefile);

    direkt so
    $this->temp_str = file_get_contents($Templatefile);

    also file_get_contents() ist ja für sich schon eine PHP-Interne Funktion

    eine Funktion lohnt sich doch nur, wenn mann mehrere Aufgaben in einem Aufruf erledigen will
    und ich sehe hier nur eine Aufgabe, also würde ich es direkt machen


  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!