php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.02.2006, 11:47   #1 (permalink)
Gast
 
Beiträge: n/a
Standard Zugriff auf eine Klasse innerhalb einer Funktion -> Fehle

Hi all,

habe aktuell einen "kleinen" Fehler, wo ich nicht so ganz verstehe, warum es so nicht gehen will, bzw. wie man das "problem" lösen kann.

Also, ich habe eine DB Klasse die ich mit
Code:
$db = new db($db_server,$db_user,$db_password,$db_name);
initialisiere. Soweit so gut geht das alles perfekt.

Nun möchte ich innerhalb einer Funktion auf die DB Klasse zugreifen.

Mache ich innerhalb der Funktion ein
Code:
global $db;
geht das auch problemlos.

Versuche ich hingegen die variable über
Code:
test($db);
bzw.
Code:
function test($db){
zu übergeben um auf die DB klasse zuzugreifen, kommt nur ein "Call to a member function....." fehler.

Hat mir da jemand eine erkärung für?

Normalerweise ist das doch überhaupt kein problem, Daten an eine Funktion zu übergeben, mit "normalen" variablen klappt das fehlerfrei, nur bei o.g. Funktion scheint es nicht zu klappen.

Danke schonmal im vorraus für evt. Tips.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.02.2006, 11:59   #2 (permalink)
Gast
 
Beiträge: n/a
Standard

Wie genau sieht Dein Funktionsaufruf und die Funktion aus?


Btw: Die Frage gehört sicherlich nicht in den Fortgeschrittenenbereich...
  Mit Zitat antworten
Alt 05.02.2006, 12:06   #3 (permalink)
Gast
 
Beiträge: n/a
Standard

1.) Warum sollte das NICHT eine Fortgeschrittene Frage sein.

Ich habe nur einige teile meiner Scripte von reinen Funktionen jetzt angefangen auf Klassen umzustellen.

2.)
Code:
$result = $db->query("datenbank Query")
Und nochmals, benutze ich
Code:
global $db;
funktioniert alles Fehlerfrei. Nur möchte ich davon wegkommen, da mir das zu unübersichtlich ist in jeder Funktion erst ein
Code:
global a,b,c,d,e,f,g,h,i,j,etc.;
einfügen zu müssen

Ich möchte wie es OOP konform ist, alles in den Funktionsaufruf reinpacken können, damit besser zu sehen ist, welche Daten überhaupt an eine Funktion übergeben wurden.
  Mit Zitat antworten
Alt 05.02.2006, 12:15   #4 (permalink)
Gast
 
Beiträge: n/a
Standard

Wenn Du meine Frage ignorierst, kann ich auch nich weiterhelfen.

Offensichtlich ist die Variable, die den Weg in Deine Funktion kein Objekt. Wie
es dazu kommt, kannst nur Du wissen, wenn Dein Skript weiterhin 'top
secret' bleiben soll.

Also viel Glück...

/edit:

Hierzu noch:
Zitat:
Zitat von MS Master
1.) Warum sollte das NICHT eine Fortgeschrittene Frage sein.
Weil einem Fortgeschrittenen klar sein sollte, wie eine Variable an eine Funktion übergeben wird.
  Mit Zitat antworten
Alt 05.02.2006, 12:16   #5 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Schön, dass du die Fehlermeldung einfach abgeschnitten hast.
Hieß es "Error : Call to a member function on a non-object."?
^^
Zergling-new ist offline   Mit Zitat antworten
Alt 05.02.2006, 12:17   #6 (permalink)
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Zergling
Hieß es "Error : Call to a member function on a non-object."?
^^
Dahingehend hatte auch ich spekuliert.
  Mit Zitat antworten
Alt 05.02.2006, 12:18   #7 (permalink)
Gast
 
Beiträge: n/a
Standard

Und damit es verständlicher ist, nochmals ein beispiel:

Code:
$db = new db($db_server,$db_user,$db_password,$db_name);
$result = $db->query("datenbank Query")
geht , seit über 1 Jahr, in mehreren Hunder scripten bisher fehlerfrei.

Nur jetzt möchte ich gerne ein
Zitat:
$db = new db($db_server,$db_user,$db_password,$db_name);

function test(){
$result = $db->query("datenbank Query")
}

test();
[/code] was natürlich gar nicht geht, da kein bezug zu "$db" vorhanden ist.

Wie bekomme ich die funktion "test" jetzt dazu, auf $db zugreifen zu können, OHNE das ich ein
Code:
global $db;
in die Funktion einfüge.

So geht das schon
Code:
$db = new db($db_server,$db_user,$db_password,$db_name);

function test(){
     global $db;
     $result = $db->query("datenbank Query")
}

test();
, nur möchte ich vom " global $db;" weg, und hin zu funktionen, wo alle parameter rein über den Funktionsaufruf zur verfügung gestellt werden.
  Mit Zitat antworten
Alt 05.02.2006, 12:19   #8 (permalink)
Gast
 
Beiträge: n/a
Standard

Ja, die fehlermeldung lautet komplett :
Code:
Call to a member function query() on a non-object in
  Mit Zitat antworten
Alt 05.02.2006, 12:20   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Der Funktion das Datenbank-Objekt als Parameter übergeben.
Zergling-new ist offline   Mit Zitat antworten
Alt 05.02.2006, 12:21   #10 (permalink)
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von karl-150
Wenn Du meine Frage ignorierst, kann ich auch nich weiterhelfen.

Offensichtlich ist die Variable, die den Weg in Deine Funktion kein Objekt. Wie
es dazu kommt, kannst nur Du wissen, wenn Dein Skript weiterhin 'top
secret' bleiben soll.

Also viel Glück...

/edit:

Hierzu noch:
Zitat:
Zitat von MS Master
1.) Warum sollte das NICHT eine Fortgeschrittene Frage sein.
Weil einem Fortgeschrittenen klar sein sollte, wie eine Variable an eine Funktion übergeben wird.
Äh hallo, ich HABE sowohl die Funktions Definition, als auch den Funtkionsaufruf im 1. Beitrag gepostet. !!!!
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

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
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
aufrufende Klasse und Funktion abfragen?? galaxyshadow PHP Tipps 2008 4 10.06.2008 06:43
funktion innerhalb einer Klasse mit call_user_func aufrufen phpbeginner PHP Tipps 2008 8 22.05.2008 16:20
Zugriff auf verschachteltes Objekt aus Funktion FloMX PHP-Fortgeschrittene 10 28.03.2006 17:01
aus einer funktion auf funktion anderer klasse zugreifen seejay PHP Tipps 2006 3 05.01.2006 10:37
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Ausgabe Var einer Klasse geht nicht mit externer Funktion HL1234 PHP-Fortgeschrittene 2 01.08.2005 19:40
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Problem mit einer rekursiven Funktion in einer Klasse ajo_silent PHP-Fortgeschrittene 6 13.06.2005 16:40
funktion in klasse ruft funktion in anderer klasse auf phpfortgeschrittener PHP Tipps 2005 6 17.04.2005 17:47
Instanz einer Klasse innerhalb einer Funtion verwenden PHP-Fortgeschrittene 9 14.04.2005 21:51
[Erledigt] Instanz bilden innerhalb einer Klasse PHP Tipps 2004 7 11.12.2004 12:58
[Erledigt] Object innerhalb einer XML Parser Funktion deklarieren PHP-Fortgeschrittene 0 10.12.2004 14:40
Funktion einer Klasse über Link aufrufen? MortakArtos PHP Tipps 2004-2 4 18.11.2004 12:05
Problem mit optionalen Parametern bei Funktion in Klasse RudiS PHP-Fortgeschrittene 6 24.09.2004 09:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
in einer funktion auf eine funktion der klasse zugreifen, klasse einer funktion übergeben, php innerhalb einer klasse auf eine klasse zugreifen, php klasse zugriff auf global funktin

Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, 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.