php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.04.2005, 18:11  
Gast
 
Beiträge: n/a
Standard Instanz einer Klasse innerhalb einer Funtion verwenden

Ich benutze PEAR::HTML_QuickForm für ein Anmeldeformular, diese Klasse ermöglicht es Kontrollfuntionen auf Eingabefelder anzuwenden. Mein Problem ist, dass ich der Funktion dafür nur einen Parameter übergeben kann und zwar einen String. Ich möchte in dieser Funktion jedoch die Instanz $db meiner Klasse MySQL benutzen. Ist dies Möglich oder habt ihr eine andere Idee, wie ich mein Problem lösen könnte?
(define ('DB', $db) halte ich für keine gute Lösung, falls dies überhaupt möglich ist)
PHP-Code:
<?php
function checkField($value$field) { // $value=wert des feldes(z.B. 'John')  $field=Parameter, der von $form->AddRule uebergeben wurde (nur String)
  
$sql "SELECT * FROM spieler AS a, signup AS b WHERE
  a.$field='$value' OR b.$field='$value'"
;
  
$result $db->query($sql);  // Wie das loesen?
  
return $result->size() == 0;
}
$form->addElement(  // dem Formular ein Element hinzufuegen
  
'text'// Texteingabefeld
  
'nick'// name= nick
  
'Nick:' // Beschriftung
);
$form->registerRule(  // neue Regel registrieren
  
'checkField',  //name der Regel
  
'callback',  // die regel ist eine funktion
  
'checkField' // name der funktion, die aufgerufen wird
);
$form->addRule// eine Regel einem Element hinzufuegen
  
'nick'// dem Element 'nick'
  
'Nick ist bereits vergeben'// fehlermeldung
  
'checkField'// name der regel (die oben definierte)
  
'nickname'// PARAMETER, der der regel uebergeben wird (nur String)
  
'server' // serverseitige kontrolle
); 
?>
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.04.2005, 18:21  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

PEAR::HTML_QuickForm hab ich nie benutzt... könntest Du eine Ableitung der verwendeten Klasse erstellen, und der Instanz der Klasse (die hier dann checkField() ausführen soll) ein DB-Feld hinzufügen, so dass Du in chechField() auf $this->db zugreifen könntest?
__________________
mod = master of disaster
Waq ist offline   Mit Zitat antworten
Alt 13.04.2005, 19:37  
Erfahrener Benutzer
 
Registriert seit: 19.06.2004
Beiträge: 665
konsti
Standard

naja zur not halt
global $db;
wenns nich anders geht...
__________________
http://www.silvercoding.de
------------
ElePHPant Edit
konsti ist offline   Mit Zitat antworten
Alt 13.04.2005, 20:55  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

globals kannst du im anfängerbereich verwenden.

PHP-Code:
<?php
class FieldCheck {
   var 
$_db;
   function 
FieldCheck(&$db) {
     
$this -> _db = & $db;
  }  

  function 
checkField($value,$field) {
      
$db = & $this -> _db
     
// hier dein code
  
}

}

[ .... ]


$fc = & new FieldCheck($db); // ich nehme schwer an, dass $db in dem kontext verfügbar ist.

$form -> addElement();
$form->registerRule'checkField','callback', array(&$fc,'checkField')); 

[ ... ]

?>
axo ist offline   Mit Zitat antworten
Alt 13.04.2005, 20:59  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

übrigens ist " define ('DB', $db); "
nicht möglich, wie du als fortgeschrittene/r nämlich bereits wissen solltest, kannst du nur skalare werte als konstanten definieren. also strings und zahlen.
axo ist offline   Mit Zitat antworten
Alt 13.04.2005, 21:15  
Erfahrener Benutzer
 
Registriert seit: 19.06.2004
Beiträge: 665
konsti
Standard

... und bool ...
__________________
http://www.silvercoding.de
------------
ElePHPant Edit
konsti ist offline   Mit Zitat antworten
Alt 13.04.2005, 22:36  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Singleton kommt nicht in Frage?

PHP-Code:
$DB DB::get_instance(); // bzw. mt '&' in php < 5.0 
Basti
Basti ist offline   Mit Zitat antworten
Alt 13.04.2005, 22:54  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Gegen das Singleton spricht prinzipiell dasselbe wie gegen das hier:
http://www.phpfriend.de/ftopic36035.html (letztes Posting)
__________________
mod = master of disaster
Waq ist offline   Mit Zitat antworten
Alt 13.04.2005, 23:11  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Ist klar. Ich regle das i.d.R. auch über eine Factory, von der ich mir eine (ggf. Referenz auf eine) Instanz der benötigten Dienste ausspucken lasse. Aber, falls klar ist, dass es (vorerst) nur _eine_ DB-Verbindung geben wird, ist das eine schnelle und brauchbare Lösung.

Basti
Basti ist offline   Mit Zitat antworten
Alt 14.04.2005, 21:51  
Gast
 
Beiträge: n/a
Standard

danke für die zahlreichen antworten
ich fande die Lösung von axo am schönsten und habe die benutzt (auf php5 umgeschrieben)
  Mit Zitat antworten
Antwort


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
[Erledigt] Instanz einer Klasse mit unbekanntem Namen erstellen PHP Tipps 2005 4 06.02.2009 14:39
[Erledigt] Klasse / Funktionen verwenden PHP4ever PHP Tipps 2008 7 27.07.2008 16:24
funktion innerhalb einer Klasse mit call_user_func aufrufen phpbeginner PHP Tipps 2008 8 22.05.2008 16:20
HTML Klasse ecomeback PHP Tipps 2008 6 31.08.2007 22:32
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
gzip klasse verwenden oder nicht? danysahne333 PHP Tipps 2006 3 02.04.2006 13:58
[Erledigt] Instanz einer Klasse in SessionVariable PHP-Fortgeschrittene 2 21.02.2006 00:18
Zugriff auf eine Klasse innerhalb einer Funktion -&amp;gt; Fehle PHP-Fortgeschrittene 23 05.02.2006 13:02
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
Instanz über mehrere Seiten verwenden? becks123 PHP Tipps 2005-2 3 22.08.2005 10:10
define-Konstante in Klasse verwenden? bicpi PHP-Fortgeschrittene 4 04.08.2005 15:03
Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
[Erledigt] Instanz bilden innerhalb einer Klasse PHP Tipps 2004 7 11.12.2004 12:58
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46
[Erledigt] Übergabe einer Instanz einer Klasse PHP-Fortgeschrittene 2 24.08.2004 10:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php klasse instanz global intern referenz , instanzen in einer klasse verwenden, php instanz einer klasse, php funktionsparameter instanz einer klasse, function checkfield, klassen in einer funktion nutzen, php objekt instanz in funktion nutzen, klassen instanz verwenden, php5 function klasse übergeben, instanz einer klasse in einer anderen klasse verwenden, php instanzen erweiterter zugriff, php instanz klasse, php instanz global, php name einer instanz, klasse in funktion nutzen, klasse in einer anderen benutzen php, php instanz anlegen parameter übergeben, php klasse in funktion benutzen, php instanz klasse global, php instanz innerhalb einer funktion verwenden

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 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.