php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.04.2007, 20:44  
Erfahrener Benutzer
 
Benutzerbild von zwerg
 
Registriert seit: 12.08.2005
Beiträge: 437
zwerg
Standard [Erledigt] phpdatei auslesen

Gute abend,
ich bin auf der suche nach einer PHP-Funktion die PHPDateien auslesen kann. Das heißt wenn z.b. eine If-Abfrage in der Datei steht soll diese übernommen werden.
include() nützt mit leider wenig,da dies in einem String passieren soll.
Ich dachte erst an file_get_contents() aber das liest leider nur den geparsten code aus.
Nochmal kurz: Eine Funktion,welche in etwa wie file_get_contents funktioniert aber auch den ungeparsten code weitergibt.

Hier mal ein kleines beispiel:
test1.php
PHP-Code:
$select=mysql_query([...]);
$show=mysql_fetch_data($select);

echo 
$show['id']; 
test2.php
PHP-Code:

[...]
$display fread("index.html");
[...]
$display str_replace("{read_test1.php}",gesuchte_funktion(test1.php), $display);
echo 
$display
index.html
Code:
hallo user,dies ist deine id {read_test1.php}!
Bei dem mysql_query() und dem auslesen(fread()) hatte ich keine Lust den vollen Quellcode zu schreiben,er ist ja auch für mein problem belanglos
Ich hoffe ich konnte mein Problem einigermaßen schildern, danke für jede Hilfe!
Gruß,
zwerg
zwerg ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.04.2007, 20:56  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo zwerg,

ich kann nicht wirklich verstehen, wie du bei file_get_contents() bereits geparsten Code (= HTML) bekommst?! Einzige Möglichkeit ist für mich, dass du eine Datei per URL aufrufst.

Grunsätzlich ist file_get_contents() jedoch für lokale Dateien gedacht, so dass du dort den PHP-Code bekommen solltest.

Andere Alternative ist es die Datei per fopen() zu öffnen und den Inhalt per fread() auszulesen.

Aber grundsätzlich wäre es hilfreich noch ein paar Worte zum Nutzen und dem Zeil das du verfolgst zu posten. Bei deinem Post stehe ich geistig irgendwie im Wald.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 02.04.2007, 22:31  
Erfahrener Benutzer
 
Benutzerbild von zwerg
 
Registriert seit: 12.08.2005
Beiträge: 437
zwerg
Standard

Erstmal danke für deine Hilfe.
Ich schreibe an einer kleinen Templateklasse für mein cms,welches ich im moment zur Übung schreibe.
Diese Templateklasse soll alle Dateien die mit dem Delimitern "{F" und "}" umschlossen sind ( in der index.tpl des Templates ) eindbinden.
Da ich in der index.php, welche die index.tpl einbindet, den conections zur MySQL und die überprüfung der User eingebaut habe brauche ich den PHPCode.

Mein Ansatz:
Ich lade die index.tpl und ersetze {Fcontent} durch file_get_contents(content/news.php):
PHP-Code:
<?
  
class template {
    
    [...]

  public function 
replace_function() {
    
$this->template str_replace("{Fcontent}",file_get_contents('content/news.php'),$this->template);
  }

  public function 
load($file) {
            
$fp = @fopen($this->file"r")
               
$this->template fread($fpfilesize($this->file)); 
                 
fclose ($fp); 

        
$this->replace_function();
   }
?>
Diese Klasse wird in der index.php aufgerufen, genau die die MySQL-Klasse.
Wenn aber jetzt die news.php aufgerufen wird kommt nur der HTMLCode, der Teil der Dynamisch ist, sprich die Daten aus der Datenbank sind nicht vorhanden, ich denke mal weil es in der news.php keine direkte Verbindung zur Datenbank gibt.

Ich hoffe ich konnte mein problem etwas genauer schildern
zwerg ist offline  
Alt 02.04.2007, 23:12  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo zwerg,

ich hab diesen Satz schon oft angebracht, aber "will denn hier jeder seine Template-Klasse" selbst frickeln?

Wofür gibt es eigentlich fertige Klassen (Smarty) oder ganze Frameworks (Symphony, mein eigenes, ...)? Ich denke du solltest dir eine fertige Klasse nehmen. Diese wurden über einen längeren Zeitraum entwickelt und getestet. Ausserdem muss man das Rad nicht zig mal neu erfinden.

Zu deinem Code:
Mit deiner Ersetzung hast du das Problem, dass es nicht möglich ist rekursive Strukturen, sprich die Einbindung in die Einbindung zu machen. Ausserdem bist du relativ Statisch und kannst z.B. keine Platzhalter definieren. Deine load()-Funktion ist im Übrigen das selbe wie file_get_contents() und der Übergabe-Parameter $file wird darin nirgends bedacht.

Sorry, wenn meine Kritik hart klingt, aber ich denke es ist besser, eine fertige Klasse zu verwenden als allzu viel selbst zu schreiben. Das Thema kann nämlich beliebig komplex werden. Ein Beispiel findest du unter http://christian.zierpflanzenberatung.de.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 02.04.2007, 23:26  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

Zitat:
Zitat von zwerg
ich denke mal weil es in der news.php keine direkte Verbindung zur Datenbank gibt.
denkst du das oder weisst du es?
PHP-Code:
//nicht getestet
function parserchen($dateiname){
ob_start();
include(
$dateiname);//edit
$ret ob_get_contents();
ob_end_clean();
return 
$ret;
}


.....
$this->template str_replace("{Fcontent}",parserchen('content/news.php'),$this->template); 
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 03.04.2007, 10:32  
Erfahrener Benutzer
 
Benutzerbild von zwerg
 
Registriert seit: 12.08.2005
Beiträge: 437
zwerg
Standard

Zitat:
ich hab diesen Satz schon oft angebracht, aber "will denn hier jeder seine Template-Klasse" selbst frickeln? Sad
Weil ich es lernen will

Zitat:
Wofür gibt es eigentlich fertige Klassen (Smarty) oder ganze Frameworks (Symphony, mein eigenes, ...)? Ich denke du solltest dir eine fertige Klasse nehmen. Diese wurden über einen längeren Zeitraum entwickelt und getestet. Ausserdem muss man das Rad nicht zig mal neu erfinden.
Die Leute,die diese tollen Templatesysteme und Frameworks geschrieben haben sind ja nciht geboren worden und konnten das von Anfang an. Auch sie(ich denk mal du auch) haben klein angefangen und sich langsam hochgearbeitet.
Ich habe mir mal dein Framework angesehn und finde die Leistung wirklich sehr beachtlich, aber ich möchte meine Seiten mit meinem eigenen Können erstellen, und dazu brauch ich nunmal Übung...

Zitat:
denkst du das oder weisst du es?
Ich weiß es
Aber danke für die Funtkion, funktioniert einwandfrei
zwerg ist offline  
Alt 03.04.2007, 11:24  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Zitat:
Zitat von zwerg
aber ich möchte meine Seiten mit meinem eigenen Können erstellen, und dazu brauch ich nunmal Übung...
...die Du nicht bekommst, indem Du Dich gleich am Meisterstück versucht. Sei einfach erstmal Geselle und benutze Bestehendes. Dadurch bekommst Du wesentlich mehr Übung und Erfahrung. Dieses "Ich will von Anfang an alles selber machen" ist meist kontraproduktiv und führt in der Regel nur zu fehlerhaften Lösungen, verpassten Lernchancen und frustrierten und/oder verbohrten Entwicklern. Und immer daran denken: Wenn Du knallhart alles selber machen willst, darfst Du eigentlich auch kein php benutzen, sondern musst Dir Deine eigene Sprache entwerfen ...wenn da mal schon das Ende der Fahnenstange erreicht sein sollte.
Schnulli ist offline  
Alt 03.04.2007, 12:44  
Erfahrener Benutzer
 
Benutzerbild von zwerg
 
Registriert seit: 12.08.2005
Beiträge: 437
zwerg
Standard

Ich stehe ja nicht ganz am Anfang,ich habe ja schonmal ein kleines CMS entworfen.
Dieses CMS war ohne Klasse, einfach nur zusammengewürfelter Code. Das ganze strukturiere ich jetzt ganz neu, mit Klassen,einem Template- und Modulsystem.
Wenn ich ein besetehendes nehme, z.b. Joomla,dann lerne ich wie ich es installiere. Ich kann mir auch Stundenlagn den Quellcode anschauen und mir hinterher einreden ich hätte das verstanden.
Nein,ich bin auch nicht frustriert oder verbohrt, warum auch?Es ist mein Hobby, wenn es klappt freue ich mich, wenn nicht suche ich nach einer Lösung.
zwerg ist offline  
Alt 03.04.2007, 13:27  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Zitat:
Zitat von zwerg
Ich stehe ja nicht ganz am Anfang,ich habe ja schonmal ein kleines CMS entworfen.
Und welche Templatesysteme hast Du bereits genutzt? Welche Ansätze haben sie verfolgt? Was waren ihre Vor- und Nachteile?
Bitte nicht falsch verstehen. Natürlich kann es funktionieren, dass aus "einfach mal loslegen mit dem Entwickeln eines Templatesystems" ein tiefes Verständnis für die Materie entsteht. Die Erfahrung zeigt aber einfach, dass die Wahrscheinlichkeit beim schrittweisen Vorgehen (erst nutzen, dann refelektieren, dann verbessern, dann selbst entwickeln) höher ist.
Schnulli ist offline  
Alt 03.04.2007, 13:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo zwerg. Du sollst den Code von Joomla auch nicht angucken, sondern anwenden
Finde es prinzipiell richtig, einfach mal drauf loszucoden. Genauso hab ich es ja auch gemacht.
Nur warum nicht gleich am Anfang Ratschläge von Erfahrenen annehmen? Mit dieser Technik kommst du eben nicht weit, verwende statt Template-Engines und -Platzhaltern lieber eine PHP-Datei, zB dieser Art:

PHP-Code:
<html>
<head>
  <title><?php echo $this->title?></title>
</head>
<body>

<?php foreach ($this->products as $product): ?>
<?php 
echo $product?>
<?php 
endforeach; ?>

</body>
</html>
Eine kleine Template-Klasse dazu:
PHP-Code:
<?php
class NoNameTemplate
{
  function 
display($templateFile)
  {
     require 
$templateFile;
  }
}
// ..
$template = new NoNameTemplate();
$template->title 'mein Titel';
$template->products = array('Schere''Stein''Papier');
?>
Die kleinste aber effektivste Template-Klasse die es gibt. Zeig mir eine unkompliziertere und schnellere (ohne Caching, läßt sich aber einfach nachimplementieren)
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ordner auslesen und während des auslesen sortieren Dooki PHP Tipps 2008 6 14.05.2008 17:50
Vom Browser verschickte Daten auslesen und anzeigen? andy32 PHP Tipps 2008 3 22.08.2007 18:33
[Erledigt] Datenbank auslesen mit register_globals off PHP Tipps 2007 14 03.01.2007 17:12
[Erledigt] gelöst: Tabelle auslesen -&amp;amp;amp;amp;gt; Gleiche Einträge nur 1 Mal Datenbanken 3 31.03.2006 01:44
Textdatei auslesen, aber ohne Komentare HSFighter PHP Tipps 2006 31 23.02.2006 10:07
Cookies auslesen HSFighter PHP Tipps 2007 2 19.11.2005 14:56
[Erledigt] bestimmte ID's auslesen als array PHP Tipps 2007 2 31.10.2005 20:23
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
[Erledigt] Daten aus einer Datenbank auslesen Datenbanken 2 04.09.2005 19:13
Daten aus Pw-Geschütztem bereich auslesen PHP-Fortgeschrittene 2 26.08.2005 15:27
alle Verzeichnisse sortiert auslesen PHP Tipps 2005-2 7 17.07.2005 10:20
auslesen und nochmals auslesen?! $$$ ThiKool $$$ PHP Tipps 2005 23 10.03.2005 19:43
Klassen auslesen PHP Tipps 2007 8 10.01.2005 07:07
[Erledigt] Auslesen von Text incl. &quot; aus Textfeld PHP Tipps 2007 4 04.01.2005 13:30
[Erledigt] Daten von anderer Homepage auslesen PHP Tipps 2004-2 5 02.12.2004 18:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
joomla alternative file_get_contents

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.