Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PEAR, PECL und Frameworks > Smarty register_function ohne Globals
Antwort
 
Themen-Optionen
Alt 13.11.2007, 15:34   Nach oben    #1
nox
Männlich :)
 
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 22
Standard Smarty register_function ohne Globals

Hi,

nach langer pause in sachen php lass ich mich dann doch nochmal hier blicken und muss direkt eine Frage loswerden.

Zu meinem Problem:

PHP-Code:
function getUserOnline($params)
 {
    global 
$db;

    
$sql "SELECT `userid`
            FROM `" 
DBPREFIX "sessions`";

    
$result $db->query($sql);
    return 
$db->num_rows($result);

 }

$Smarty->register_function('getuseronline''getUserOnline'); 
Funktioniert genau wie es soll, zumindest fast. Ich arbeite nur sehr ser ungern mit globals auf on. Eigentlich nie! Das wollte ich auch nicht ändern jedoch weiss ich nicht wie ich das Object "$db" anders in die funktion reinbekommen sollte.

Für alle die noch nicht wissen was ich meine hier ein kleines Beispiel:

PHP-Code:
function getUserOnline($params)
 {
    
$sql "SELECT `userid`
            FROM `" 
DBPREFIX "sessions`";

    
$result $db->query($sql);
    return 
$db->num_rows($result);

 }

$Smarty->register_function('getuseronline''getUserOnline'); 
somit müsste ich ja das Object ($db) irgendwie bei der Funktion "register_function" mit übergeben, jedoch möchte ich es nicht im template lösen!

Schlechtes Beispiel:
PHP-Code:
function getUserOnline($params)
 {
    
$db $params['db'];

    
$sql "SELECT `userid`
            FROM `" 
DBPREFIX "sessions`";

    
$result $db->query($sql);
    return 
$db->num_rows($result);

 }

$Smarty->register_function('getuseronline''getUserOnline'); 
dazugehörige Template:
HTML-Code:
Online: {getuseronline db=$db}
Habs jetzt nicht getestet ob so überhaupt funktioniert aber ich denke doch schon.

Also vielleicht jemand einen kleinen Tipp für mich ?

Danke schonmal im vorraus!

Gruß nox
nox ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2007, 15:45   Nach oben    #2
Bleistift
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 287
Standard

Du machst etwas grundlegendes falsch... Im Template SQL-Anfragen zu machen ist ziemlich unschön. Das Template sollte eigentlich schon alle Daten haben. Folglich würde ich dir empfehlen diese Anfrage im PHP-Script zu implementieren, welches dann dein Template aufruft.
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2007, 15:47   Nach oben    #3
nox
Männlich :)
 
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 22
Standard

Zitat:
Zitat von Bleistift Beitrag anzeigen
Du machst etwas grundlegendes falsch... Im Template SQL-Anfragen zu machen ist ziemlich unschön. Das Template sollte eigentlich schon alle Daten haben. Folglich würde ich dir empfehlen diese Anfrage im PHP-Script zu implementieren, welches dann dein Template aufruft.
ich mache keine sql abfragen im template das sind die phpdatein im hintergrund!
nox ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2007, 15:48   Nach oben    #4
Bleistift
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 287
Standard

Zitat:
Zitat von Lordnox Beitrag anzeigen
ich mache keine sql abfragen im template das sind die phpdatein im hintergrund!
Aber du rufst im Template eine Funktion auf, die einen SQL-Query sendet...
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2007, 15:51   Nach oben    #5
nox
Männlich :)
 
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 22
Standard

stimmt, gut jetzt weiss ich was du meinst, das problem ist, das es Modular aufgebaut sein soll, daher finde ich es sehr unpraktisch alle funktionen auszufürhren und mit $smarty->assign zu übergeben obwohl diese funktion in dem Template evtl. garnicht gebraucht wird!

Wenn du eine bessere Idee hast immer her damit, bin für alles offen!

Gruß nox
nox ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2007, 17:02   Nach oben    #6
Waq
Erfahrener Benutzer
 
Registriert seit: 18.08.2005
Beiträge: 108
Standard

- getUserOnline() direkt zusammen mit $db zu verpacken geht nicht, da es in PHP keine Closures gibt

- in einem Objekt geht es schon
Rohbau:

PHP-Code:
class GetUserOnline {
  private 
$db;
  public function 
userOnline() {
    
$this->db->...;
  }
}
$getUserOnline = new GetUserOnline($db);
$smarty->register_function("getuseronline",array(&$getUserOnline,'userOnline')); 
Waq ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
trigger_error bei Smarty Creativ PHP-Programmierung 5 23.10.2007 15:05
Mehrsprachigkeit mit Smarty Eyüp PEAR, PECL und Frameworks 7 08.06.2007 15:40
Verständnissfrage zu Smarty la-finest PEAR, PECL und Frameworks 7 26.09.2006 19:25
Navigation auf Smarty umstellen?! napsio PEAR, PECL und Frameworks 4 25.01.2006 19:22
PEAR Alternative zu Smarty ex³ PEAR, PECL und Frameworks 5 08.11.2005 21:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:11 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44