| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jun 2003
Beiträge: 145
|
hallo, ich beschäftige mich gerade mit meinem ersten oop-projekt, und habe ein problem (...) ![]() ich habe eine beliebige klasse (CLASS_NAME) mit einer funktion drinne (funktion($arg1,$arg2,$arg3))... ich starte den konstruktor mittels PHP-Code: die argumente sind aber definitiv angegeben... was muss ich beachten, damit das ganze wie gewünscht funkt? gruß + dank!
__________________ 23.000th FF-Member :) |
| | |
| | #2 (permalink) |
| schnarchnase Registriert seit: Jan 2002 Ort: konstanz
Beiträge: 2.953
|
wenn dein konstruktor ein argument erwartet, darfst du ihn nicht so aufrufen ![]() nehmen wir also an: PHP-Code: PHP-Code:
__________________ perlen vor die säue. |
| | |
| | #3 (permalink) | |
| Neuer User Registriert seit: Jun 2003
Beiträge: 145
| Zitat:
warum muss ich die klasse mit klammern aufrufen? [new myClass2("")] und was bewirkt: $my = new myClass2($hjell); ? vielen dank aber schon mal ![]() edit:tatsächlich: wenn ich die klasse per new CLASS_NAME('','',''); aufrufe funktioniert es, aber warum es so sein muss, leuchtet mir nicht ein?!
__________________ 23.000th FF-Member :) Geändert von greener (21-06-2004 um 10:53 Uhr) | |
| | |
| | #4 (permalink) |
| schnarchnase Registriert seit: Jan 2002 Ort: konstanz
Beiträge: 2.953
|
naja... es geht nur darum: der konstruktor einer klasse wird, so er denn existiert (einfach eine funktion in der klasse, die den selben namen wie die klasse selbst trägt), auf jeden fall aufgerufen, wenn du die klasse mit "new" initialisierst; und zwar immer bevor alles andere passiert. wenn also dein konstruktor argumente erwartet, du die klasse aber ohne argumente aufrufst, erzeugst du ein warning. vielleicht solltest du deine klasse mal hier posten - was intern passiert ist jetzt auch nicht wichtig, das könntest du zu zwecken der lesbarkeit rauslassen. nur die funktions-köpfe sind wichtig. dann können wir mal anschauen, was passiert und wo der fehler liegen könnte.
__________________ perlen vor die säue. |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Jun 2003
Beiträge: 145
|
ok: PHP-Code: PHP-Code:
__________________ 23.000th FF-Member :) Geändert von greener (21-06-2004 um 11:01 Uhr) |
| | |
| | #6 (permalink) |
| schnarchnase Registriert seit: Jan 2002 Ort: konstanz
Beiträge: 2.953
|
na da haben wir's ja schon. die klasse db_action hat einen konstruktor, der db_action($action,$table,$extra,$array_type,$addke y=0) heißt und einige argumente haben will ... hier ist es wohl etwas verwirrend, dass die klasse großgeschrieben ist und der konstruktor 1. nicht an der ersten stelle steht und 2. klein geschrieben ist. php wird wohl den groß- kleinschreibefehler ignorieren (was es eigentlich nicht sollte ) und bei initialisierung mit "new" versuchen, die funktion db_action aufzurufen. und weil die mehrere argumente erwartet, bekommst du ein warning.tipp: 1. achte peinlichst genau auf die groß- und kleinschreibung. das spart dir viele bugs 2. die mehrheit der oop-leute haben sich eine bestimmte art angewöhnt, klassennamen auszuwählen. die form lautet: "DiesIstEinGuterKlassenName" und nicht "dies_ist_ein_guter_klassenname" oder "DIES_IST_EIN_GUTER_KLASSENNAME". großbuchstaben mit underscore ist für "konstanten" reserviert. richtig wäre also eher "DbAction", und dein konstruktor sollte am besten die erste funktion innerhalb der klasse sein, und ebenfalls "DbAction" heißen. alle anderen methoden in der klasse sollten mit kleinbuchstaben beginnen, und dann diese groß-klein-schreibung beherzigen. underscores "_" in funktionsnamen sind für echte "funktionen" reserviert, die nicht an klassen gebunden sind, z.b. integrierte funktionen in php oder selbst geschriebene funktionen. mit diesen tipps erhöhst du die lesbarkeit deines codes enorm ... und andere können dir leichter und schneller helfen.
__________________ perlen vor die säue. |
| | |
| | #8 (permalink) |
| flachzange Registriert seit: Jun 2003 Ort: berlin
Beiträge: 3.932
|
das problem liegt daran das du dir bisher nicht bewusst warst das eine funktion innerhalb der klasse die genau so heißt wie deine klasse (case ist egal) als konstruktor gild. du musst lediglich die zweite funktion umbenennen und es wird erstmal so laufen wie gewünscht |
| | |
| | #12 (permalink) | |
| Inventar Registriert seit: Jul 2002
Beiträge: 6.882
| Zitat:
__________________ (\__/) (='.'=) (")_(") | |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |