| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

01-07-2010, 18:21
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Dann muss das eine Template dem anderen Template das Objekt übergeben.
|

01-07-2010, 19:29
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 290
|
|
Naja super, dann hab ich auch wieder ein riesenobjekt das immer weitergegeben wird. Ich weiß mittlerweile, warum das bei mir nicht funktioniert, der Ablauf ist folgendermaßen;
PHP-Code:
// Index.php: if ($blub) req('dosomething.php') else req('dootherthings.php')
showTpl('index')
// index.tpl showTpl('header') showTpl('menu') showTpl('content') showTpl('footer')
// content.tpl if ($tpl['bla']) showTpl('start') else showTpl('ende')
Da ich dynamisch schaue, welche funktionalen (dosomething.php) Dateien eingebunden werden, und dementsprechend auch in den Templates dynamisch geschaut wird, welche Subtemplates gebraucht werden, weiß ich eben nie, 1. welche templates einbegunden werden und 2. welche daten sie brauchen.
Wenn ich in den funktionalen Dateien die Templates als Objekte erstelle, sind die ja im falschen Scope - da die Templates erst später tatsächlich angezeigt werden sollen.
|

01-07-2010, 19:33
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von ApoY2k
Da ich dynamisch schaue, welche funktionalen (dosomething.php) Dateien eingebunden werden, und dementsprechend auch in den Templates dynamisch geschaut wird, welche Subtemplates gebraucht werden, weiß ich eben nie, 1. welche templates einbegunden werden und 2. welche daten sie brauchen.
|
Dafür sollte der Controller zuständig sein. Für mich sieht das aus als hättest du viel zu viel Logik in die Templates ausgelagert.
Geändert von h3ll (01-07-2010 um 19:36 Uhr)
|

01-07-2010, 19:37
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 290
|
|
Die einzige Logik in den Templates sind for(each)-Schleifen, if-Abfragen oder eben neue Templates einbinden...
Beispiel:
PHP-Code:
if (isset($tpl['list']) && 1 <= count($tpl['list']))
{
foreach ($tpl['list'] as $row)
{
echo '<a href="?url='.$row['url'].'">'.$row['name'].'</a>';
}
}
Und ich habs im Grunde deshalb so zerstückelt, damit ich eben Funktion und Design getrennt habe.
Geändert von ApoY2k (01-07-2010 um 19:41 Uhr)
|

01-07-2010, 19:43
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Ich würde zumindest mal Layout von den Views trennen, das erleichtert vermutlich einiges.
|

01-07-2010, 19:45
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 290
|
|
Jetzt bin ich verwirrt... Die View ist doch das Layout?
|

01-07-2010, 19:52
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Nein. Das Layout ist quasi das "Drumherum". Also HTML-Header, Seitenheader, Footer, usw. Der Content besteht dann aus Views.
Schau dir zB. mal Zend_Layout und Zend_View an.
|

01-07-2010, 20:12
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 290
|
|
Okay, danke mal für deine Geduld. Werd wohl noch ein bisschen arbeiten müssen bis es passt  Wobei ich ehrlich gesagt die Idee mit der Template-"Registry" (passt glaub am besten) für mein Projekt am sinnvollsten erachte... einfach weil ich ehrlich gesagt (noch) nicht genug über MVC in PHP verstehe, um damit zurechtzukommen.
Aber für die nächste Version werd ichs mal in Betracht ziehen. Gibts dazu vll auch Tutorials, die es anhand einer normalen PHP-Installation (ohne den Zend-Framework-Kram) erklären?
Geändert von ApoY2k (01-07-2010 um 20:16 Uhr)
|

02-07-2010, 09:22
|
 |
ApoY2k
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 290
|
|
Ich wollte jetzt keinen neuen Thread aufmachen, frag einfach hier mal;
Ich wollte gerade mal alle Sessionbezogenen Daten in der $_SESSION speichern. Da ist mir die Idee gekommen, dass dazu ja eigentlich praktischerweise auch die Datenbankverbindung gehört.
Also habe ich das versucht
PHP-Code:
$_SESSION['db'] = new PDO(...);
Jedoch erhalte ich dadurch einen "Fatal error: Exception thrown without a stack frame in Unknown on line 0".
Wenn ich die Zeile auskommentiere, ist der Error weg.
Erstaunlicherweise funktionieren aber Anweisungen wie
PHP-Code:
$_SESSION['db']->query(...)->fetchAll();
einwandfrei.
Ist das ein PDO-Spezifisches Problem, dass man das nicht in der Session speichern kann? (Sollte man das überhaupt machen?)
|

02-07-2010, 09:31
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
hmm- ich würd ja wenigstens den Umweg über eine Zwischenvariable versuchen
Code:
$db_verb = new PDO (...);
$_SESSION['db']=$db_verb;
ich vermute, er meint, du sollst die mögliche Exception beim fehlgeschlagenen Erstellen des DB-Objektes abfangen .. bzw da ist eine aufgetreten ..
__________________
Wer LESEN kann, ist klar im Vorteil!
|

02-07-2010, 10:16
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Ressourcen kann man nicht serialisieren und daher nicht in einer Session speichern!
|

02-07-2010, 10:52
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Außerdem wäre das ziemlich unklug. Stell dir vor, man könnte eine Verbindung in der Session ablegen. Eine Session ist, sagen wir, 30 Minuten gültig. Wenn du jetzt 100 Besucher in 30 Minuten hast, wären auch ständig 100 Datenbankverbindungen offen.
Kurz gesagt: Eine Datenbankverbindung gehört nicht zur Sitzung, sondern zum Prozess und hat somit in der Session nichts verloren.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|