php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.04.2011, 21:58  
Erfahrener Benutzer
 
Registriert seit: 30.03.2010
Beiträge: 176
PHP-Kenntnisse:
Fortgeschritten
Tholi ist in Verruf geraten
Standard OOP - Konstruktor Parameter sind undefined

Moin Leute,

erprobe mich gerade an dem OOP von PHP und versuchen gerade den Konstruktor mit Parametern zu füttern.

Stehe gerade ein wenig auf dem Schlauch.

Fehlermeldung:

Warning: Missing argument 1 for::__construct(), called in C:\...\login.php on line 5 and defined in C:\...\datenbank.php on line 50

Notice: Undefined variable: query in C:\...\datenbank.php on line 55

Der erste Aufruf:

Login.php

PHP-Code:
$ausgabe = new Ausgabe();
echo 
$ausgabe->getAllLayouts(); 
Ausgabe.php
PHP-Code:
class Ausgabe extends Datenbank 
public function 
getAllLayouts() {
            
            
$query "SELECT picdumb, name FROM layout;";

            
            foreach (new 
Datenbank($query) as $result) {
                if (
$result) {        
                    while (
$row mysqli_fetch_row($result)) {        
                        
$layouts =  "$row[0]\n";        
                    }        
                }        
            }
            

            return 
$layouts;

        }

 } 
Datenbank.php
PHP-Code:
class Datenbank extends Settings implements Iterator{

public function 
__construct($query) { ...}

Hoffe jemand hat da einen Tipp für mich, warum $query nicht definiert ist.

Danke im voraus!
__________________
Look at This!
Digital-Duty.DE
Für Syntax-Fehler übernehme ich keine Haftung!
Tholi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.04.2011, 22:04  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Tholi Beitrag anzeigen
Hoffe jemand hat da einen Tipp für mich, warum $query nicht definiert ist.
Weil du hier
PHP-Code:
$ausgabe = new Ausgabe(); 
keinen Parameter für den Konstruktor, den diese Klasse von Datenbank erbt, übergeben hast.

Bspw., eine besonders sinnvolle Vererbungshierarchie scheint das nicht zu sein.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 23.04.2011, 22:15  
Erfahrener Benutzer
 
Registriert seit: 30.03.2010
Beiträge: 176
PHP-Kenntnisse:
Fortgeschritten
Tholi ist in Verruf geraten
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Weil du hier
Bspw., eine besonders sinnvolle Vererbungshierarchie scheint das nicht zu sein.
Wie würde eine sinnvolle Hierarchie in etwa aussehen? Fand diese bisher sinnvoll. *G*
__________________
Look at This!
Digital-Duty.DE
Für Syntax-Fehler übernehme ich keine Haftung!
Tholi ist offline   Mit Zitat antworten
Alt 23.04.2011, 23:47  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Vererbung ist hier gar nicht notwendig. Ich habe das dumpfe Gefühl, dass du das Prinzip der Vererbung etwas missverstanden hast. Aus welchen Gründen erbt die Klasse Ausgabe von der Klasse Datenbank?
Trainmaster ist offline   Mit Zitat antworten
Alt 24.04.2011, 00:14  
Erfahrener Benutzer
 
Registriert seit: 26.12.2010
Beiträge: 175
PHP-Kenntnisse:
Anfänger
elise befindet sich auf einem aufstrebenden Ast
Standard

und... warum sollte eine Ausgabe eine Datenbank sein? Bedenke: Vererbung wird als "is-a", also "ist-ein" Beziehung definiert.
Datenbank hat höchstens eine Methode "gebeAus"...
__________________
OSL♥
elise ist offline   Mit Zitat antworten
Alt 24.04.2011, 10:05  
Erfahrener Benutzer
 
Registriert seit: 30.03.2010
Beiträge: 176
PHP-Kenntnisse:
Fortgeschritten
Tholi ist in Verruf geraten
Standard

Meine Idee dahinter war, dass ich nur eine Funktion aus der Klasse Ausgabe aufrufen muss und diese dann auf die Datenbankklasse zugreift.

Da ich aber ungern schon bei der Ausgabeklasse einen Parameter mit angeben möchte, hab ich gestern noch alle Vererbungen heraus genommen und lief dann auch soweit. Vom Gefühl her kann es das noch nicht sein, kann mich da aber auch täuschen.
__________________
Look at This!
Digital-Duty.DE
Für Syntax-Fehler übernehme ich keine Haftung!
Tholi ist offline   Mit Zitat antworten
Alt 24.04.2011, 11:05  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Sofern dir die Übergabe per Parameter lästig erscheint, kannst du dir einen DI-Container basteln, welcher dir entsprechend eine Instanz der gewünschten Klasse zurückliefert. Zur Einführung empfehle ich dir folgenden Link: http://fabien.potencier.org/article/...tion-container. Oder aber du gehst einen Schritt weiter, und analysiert bspw. den DIServiceManager des APF Frameworks. Wie gesagt, die Injizierung per Container ist die eine Option.

Zuletzt hast du natürlich die Möglichkeit, die Datenbank-Klasse als Singleton zu implementieren. Infolgedessen hast du globalen Zugriff auf diese Klasse, in etwa so: Database::getInstance().
Trainmaster ist offline   Mit Zitat antworten
Alt 25.04.2011, 22:53  
Erfahrener Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 226
DirkHo befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

löse das doch lieber so, dass die Datenbank eine statische Methode "getConnection" (Singleton) o.ä. anbietet, mit der du dir die DB-Verbindung in deine Ausgabe-Klasse holen kannst.

Sinnvoll ist es in der Art wie du das hast (von den Klassen-Namen her) definitiv nicht.

Viele Grüße,
Dirk
DirkHo ist offline   Mit Zitat antworten
Alt 26.04.2011, 09:46  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 603
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Edit://

Falscher Thread... bin wohl zu müde

Geändert von dreamcatcher (26.04.2011 um 10:46 Uhr).
dreamcatcher ist offline   Mit Zitat antworten
Alt 26.04.2011, 11:01  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Trainmaster Beitrag anzeigen

Zuletzt hast du natürlich die Möglichkeit, die Datenbank-Klasse als Singleton zu implementieren. Infolgedessen hast du globalen Zugriff auf diese Klasse, in etwa so: Database::getInstance().
Zitat:
Zitat von DirkHo Beitrag anzeigen
Hallo,

löse das doch lieber so, dass die Datenbank eine statische Methode "getConnection" (Singleton) o.ä. anbietet, mit der du dir die DB-Verbindung in deine Ausgabe-Klasse holen kannst.

Sinnvoll ist es in der Art wie du das hast (von den Klassen-Namen her) definitiv nicht.

Viele Grüße,
Dirk
Warum denn unbedingt ein SingleTon? Wenn dann würde ich das hier über eine Registry lösen, so hat man wenigstens noch die Möglichkeit mehrere Datenbankobjekte zu hinterlegen, mit einem SingleTon nimmt man sich diese Möglichkeit aber.
DIContainer wäre natürlich ne gute Alternative.

@TE
Du solltest dich mit Vererbung mal ein wenig intensiver auseinandersetzen. Du scheinst kein bisschen zu wissen was es damit auf sich hat, sonst hättest du solch wilden Cauderwelch nicht zusammengeschrieben. Eeine Kind Klasse (erbende Klasse) ist immer eine spezialisierte Klasse einer Basis (vererbenden Klasse).

Beispiel.
Ein Auto ist ein KFZ.
Ein Moderator ist ein spezieller Benutzer in einem System.

Aber eine User ist keine Datenbank oder eine Ausgabe ist keine Datenbank. Nun ich denke an den ganz kurzen Worten solltest du schon erkannt haben was bei dir falsch läuft.

Gruß Litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   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
Website in OOP: Wie am besten vorgehen? GreenDelta PHP Einsteiger 13 29.01.2011 12:25
Undefined offset / verschachtelte For-Schleifen Phoenix@ PHP Tipps 2010 3 20.08.2010 09:13
Fehler: Undefined offset ttmobil PHP Tipps 2010 4 04.07.2010 19:37
100% OOP wirklich sinnvoll ? Pehapeh PHP-Fortgeschrittene 31 04.12.2009 11:19
Notice: Undefined property Thoresus PHP Tipps 2009 2 17.08.2009 23:30
Formular läuft lokal, online nicht simon1101 PHP Tipps 2009 9 25.03.2009 12:16
Problem Undefined variable: banbanban PHP Tipps 2009 5 04.03.2009 17:55
Use of undefined constant xxx - assumed 'xxx' in xxx ??? Natheedo PHP Tipps 2009 1 08.01.2009 00:43
[Erledigt] Undefined variable Fehler SilferSurver PHP Tipps 2009 2 05.01.2009 02:07
php datei löschen djscaleo PHP Tipps 2008 21 14.11.2008 15:47
Undefined variable Undefined property: block xxJJxx PHP Tipps 2008 16 05.08.2008 15:30
Notice: Undefined index Kein Genie PHP Tipps 2008 5 23.04.2008 17:40
Undefined index PHP Tipps 2005 5 05.02.2005 14:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
oop konstruktor, undefined index bei übergabeparameter, warning: missing argument 1 for artikel::__construct(), php oop constructor, notice: undefined index: database, undefined paramters php wegmachen, php prameter im konstruktor, \artikel::__construct\, missing argument php klassen konstruktor, php construct parameter, ausgabe trotz undefined offset, php function undefined parameter, parameter undefined, parameterwert bei oop, parameter an konstruktor übergeben php, php undefined parameter, php __construct parameter __dir__, notice: undefined index: datenbank in c:, konstruktor oop, php objektorientiert konstruktor datenbank

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:34 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