php.de
Alt 29.09.2007, 23:55  
Benutzer
 
Registriert seit: 19.11.2004
Beiträge: 65
anno
Standard eval

hallo,

also mit der eval funktion kann man ja die variablen in einem string umwandeln lassen, so dass die gewünschten werte im string enthalten sind.

geht das auch mit arrays?

gruß anno
anno ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.09.2007, 00:02  
Benutzer
 
Registriert seit: 01.07.2007
Beiträge: 47
PHP-Kenntnisse:
Fortgeschritten
ecomeback
Standard

Hallo anno,

was soll man bitte mit eval können? Entweder verstehe ich deine Frage nicht, aber ich glaube nicht, dass du mit eval in die richtige Kiste gegeriffen hast. Das wertet eine beliebige Zeichenkette als PHP aus.
ecomeback ist offline  
Alt 30.09.2007, 00:04  
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

eval = böse. Wenn man in diese Kiste greifen muss, hat man sicher vorher schon einen Design-Fehler begangen!
__________________
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 30.09.2007, 00:21  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Hallo anno,

was soll man bitte mit eval können? Entweder verstehe ich deine Frage nicht, aber ich glaube nicht, dass du mit eval in die richtige Kiste gegeriffen hast. Das wertet eine beliebige Zeichenkette als PHP aus.
ich denk mal das sieht ungefähr so aus (wie bei woltlab ) :

template datei:

Zitat:
<h1>$h1</h1>
php code:

PHP-Code:
eval('$var="'.file_get_contents('template.html').'";'); 
natrürlich geht das auch mit arrays:

Zitat:
<h1>{$h[0]}</h1>
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline  
Alt 30.09.2007, 00:49  
Benutzer
 
Registriert seit: 19.11.2004
Beiträge: 65
anno
Standard

Zitat:
Zitat von dr.e.
eval = böse. Wenn man in diese Kiste greifen muss, hat man sicher vorher schon einen Design-Fehler begangen!
warum denn das?


naja außer dem eval gibt es ja noch den .-Operator.

Wenn ich aber die design und logikebene trennen soll bleibt einem ja fast keine andere wahl. oder?

@brian johnson:
ja genau so siehts aus.
anno ist offline  
Alt 30.09.2007, 01:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Warum es Quatsch ist? Ganz einfach, du erzeugst mit PHP zur Laufzeit PHP-Code, den du dann ausführst. Das macht nur ganz selten Sinn (und ist nebenbei unglaublich schwer zu debuggen), meistens ist es aber wie erwähnt sowieso ein Design-Fehler und läßt sich durch einfache Handhabung umgehen.
Zergling-new ist offline  
Alt 30.09.2007, 02:26  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zudem bietet php die Ausgangs-Aufgabenstellung auch als normale Stringausgabe an:

PHP-Code:
<?
echo "<h1>$header</h1><h2>{$subheader['first']}<h2>";
// bzw.
$var "<h1>$header</h1><h2>{$subheader['first']}<h2>";
Vgl. Komplexe Syntax
Weitere Alternativen bieten
- der Punkt Operator
- Befehle wie sprintf (), vsprintf ()
- Ausgabe mit Output-Buffering
Für eval () braucht's schon relativ komplexe Anwendungsfälle. Die nicht zwingend 'Error by Design' darstellen müssen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 30.09.2007, 03:06  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Das ist wohl nicht unbedingt etwas, das zum Szenario von brian johnson passt.

Sinn der ganzen Sache ist ja, dass im Template beliebige vorher nicht bekannte Variablen stehen können. Die kann ich dann ja schlecht in den String schreiben.

Wie man das ohne das üble eval lösen könnte, fällt mir im Moment auch nicht ein.

Ob es allerdings sinnvoll ist, in Template alle möglichen Variablen zuzulassen, wage ich mal zu bezweifeln.
Man muss schon festlegen, welche Variablen verwendet werden dürfen und die kann man dann auch einzeln ersetzen.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 30.09.2007, 03:13  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich bezog mich auch auf anno. Ein Template könnte man über
PHP-Code:
<?
ob_start 
();
// Ausgabe Inhalte bzw. Einbinden des Templates
$var ob_get_contents ();
ob_end_clean ();
erreichen.
.
nikosch ist gerade online  
Alt 30.09.2007, 15:08  
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

@anno:

Zitat:
warum denn das?


naja außer dem eval gibt es ja noch den .-Operator.
Warum eval böse ist, haben meine Vorredner schon mehrfach ausgeführt, dazu möchte ich nichts weiter sagen. Auch der .-Operator nacht den Einsatz nicht besser.


Zitat:
Wenn ich aber die design und logikebene trennen soll bleibt einem ja fast keine andere wahl. oder?
Doch! nikosch77 hat bereits einen Weg aufgezeigt, der in vielen Template-Engines oder Frameworks (CakePHP, CodeIgniter, Zend Framework) verwendet wird und mit dem man Templates parsen kann. Ein IMHO weitaus besserer Weg ist es eine Hirarchie von Templates aufzubauen und diesen Baum entsprechend seiner Hirarchie am Schluss der Abarbeitung der einzelnen Knoten auszugeben. Das hat den Vorteil, dass man vor der endgültigen Ausgabe der Seite noch keine Ausgabe getätigt hat und noch weitere Header senden kann und man bessere Kontroller über die Ausgabe hat. Schau mal auf die Seite, die in meinem Footer steht, da ist so ein - wenn man es so nennen will - "Template-System" umgesetzt. Mehr Flexibilität geht meiner Ansicht nach nicht und man muss unter keinen mir bisher bekannten Umständen auf die Output-Buffering- oder geschweige denn eval-Variante ausweichen.
__________________
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  
 


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
Das Evil mit dem Eval fragnicht PHP-Fortgeschrittene 4 16.10.2007 08:44
eval, preg_match ? php phrasen ? ^^ notyyy PHP Tipps 2007 10 21.12.2006 16:24
Code per eval umsetzen und Funktion integrieren Tscheggi PHP Tipps 2006 6 10.05.2006 10:46
eval vs. Array PHP-Fortgeschrittene 14 08.02.2006 17:27
[Erledigt] Navigation auf Smarty umstellen?! PHP-Fortgeschrittene 3 10.01.2006 09:19
perl eval und $@ in php? PHP Tipps 2007 4 15.11.2005 13:59
array keys mit eval erzeugen ff-webdesigner PHP-Fortgeschrittene 4 22.10.2005 18:44
eval für arrays sysop PHP Tipps 2005-2 4 26.09.2005 20:23
eval und DB PHP Tipps 2005-2 8 03.09.2005 09:58
irc bot probleme mit fread & eval PHP-Fortgeschrittene 8 02.07.2005 01:28
eval() oder str_replace? Was ist performanter? daniel987 PHP-Fortgeschrittene 9 14.05.2005 20:38
eval() Problem PHP Tipps 2005 7 18.04.2005 15:45
[Frage] Eval führt sich nur 1x aus danach ist ende... PHP Tipps 2005 4 17.03.2005 13:52
eval fehler abfangen PHP Tipps 2005 9 18.02.2005 19:37
eval und Cookie PHP Tipps 2004 4 27.10.2004 23:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php eval böse, php eval 5.2 5.3, http://www.php.de/php-tipps-2008/44845-eval.html, eval php 5.3

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:07 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.