neue Database Klasse macht Probleme
hallo zusammen,
Allgemeine Frage: Post 5 Hinweis:Die funktionen in functions.php wurden, außer der klassen initialisierung in getPage und dispMenu, NICHT verändert und haben bisher einwandfrei funktioniert. Es wurde nur die connect.db.php in eine class umgeschrieben und die entsprechenden klassen aufrufe in getPage und dispMenu eingetragen. Ich habe die functions.php eigentlich nur aufgeführt, weil dort der Fehler gemeldet wird. Auch das mail script ist kein problem, funktionierte bisher super und wurde auch nicht geändert und um das geht es auch nicht. wie gesagt nur die connect.db.php wurde in eine class umgeschrieben und die entsprechenden einträge in die functions gesetzt. Das heißt die Änderung der connect.db.php in eine class und die entsprechenden einträge in den functions haben den fehler ausgelöst, somit muss irgendwo dort der fehler liegen. zumindest wenn man der logik folgt;) ich dachte mir, da ich nun ein größeres Projekt vor mir habe, nutze ich mal OOP in PHP. Ich hatte bisher noch nichts mit OOP in PHP zu tun und gleich hauts mir einen Fehler um die Ohren, den ich einfach auf teufel komm raus nicht sehe. Habe mal OOP Programmiert aber das war nicht PHP und ist zudem über 10 Jahre her.^^ nun ich habe zu beginn mir einfach gedacht meine datenbank verbindung in eine klasse umzusetzen. ja das hab ich mir so gedacht, aber PHP irgendwie nicht. :lol: ich würde euch nun mal den entsprechenden code und den fehler dazu posten und würde mich sehr freuen, wenn ihr mir sagen könntet, wo der fehler liegt. vielleicht hab ich ja auch was mit den augen. also erstmal den fehler: Code:
Parse error: syntax error, unexpected 'mailsenden' (T_STRING), da alles mit der database klasse anfing poste ich mal nicht nur die functions.php sondern auch die connect.db.php. connect.db.php PHP-Code:
PHP-Code:
ich habe die oben im Fehler erwähnte Zeile 14 mit einem Kommentar (/*Fehler Zeile 14*/) markiert. ich seh da einfach keinen fehler. habe die ganze functions.php und connect.db.php kontrolliert, da ja auch oft fehler durch vorangegangene oder folgende zeilen entstehen, aber ich finde den fehler einfach nicht. vielleicht sind meine augen ja nicht gut.^^ ich bin für jede hilfe dankbar. gruß knuff |
Du verwendest die veralte mysql API.
Verwende stattdessen mysqli (mit i am Ende) siehe auch PHP: Choosing an API - Manual Mail funktioniert nicht lokal.. Verwende auch hier besser phpmailer. |
Zitat:
die functions.php ist bis auf den class aufruf von database unverändert und hat bisher tadellos funktioniert. einzig die class in connect.db.php ist neu und die entsprechenden aufrufe in functions.php in den funktionen getPage und dispMenu und seit dem meckert php. die funktionen aus der functions.php haben vorher ausnahmslos einwandfrei funktioniert und bis auf die klassen initialisierung habe ich auch nichts geändert. mit mysqli hab ich auch schon gelesen muss mich ma mehr schlau zu machen, ABER daran kannst nicht liegen, weil wie gesagt die funktionen sind bis auf die klassen initialisierung unverändert und haben bisher einwandfrei funktioniert. also wo liegt das problem? für mich sieht alles gut aus. seh keinen fehler. aber vielleicht seh ich auch den wald vor lauter bäumen nicht? gruß knuff |
Da musst du wohl debuggen.
Ich bin auch kein grosser Fan von OOP in PHP, von daher kann ich dir leider auch nicht weiterhelfen. Ich würde den Connect nie in eine Klasse packen, dafür gibt es ja mysqli oder PDO, die bringen die Klasse schon mit. |
ich bekomme den eindruck OOP in PHP scheint allgemein nicht so gebräuchlich bzw. beliebt zu sein, da sich bis auf ein user, und dieser sagt auch selbst kein fan von OOP in PHP zu sein, niemand dazu äußert oder bin ich einfach zu ungeduldig?
ich habe ein größeres projekt vor mir mit userverwaltung und diversen features die aufeinander aufbauen. normalerweise hätte ich dies prozedural umgesetzt, dann jedoch kam mir der gedanke dies in OOP umzusetzen, um mehr struktur hineinzubringen und zusätzliche sicherheit durch kapselung. dies sind für mich die ausschlaggebenen vorteile von OOP in PHP, da meines erachtens die anderen aspekte von OOP in PHP ein stück weit oder weitgehend auf der strecke bleiben. aber gut mehr struktur und sicherheit waren für mich zwei gute aspekte mich dafür zu entscheiden. aber nun schreibe ich meine erste klasse und prompt funktioniert es nicht und außer einem user, der selbst sagt kein fan von OOP in PHP ist, äußert sich niemand dazu, wobei man annehmen kann, dass meine oben vorgestellte klasse noch eine sehr einfache struktur hat. dies hört sich für manche wohl wie ein vorwurf an, aber ich möchte ausdrücklich betonen, dass dies nicht so gemeint ist! die oben genannten punkte stellen keinen vorwurf in irgendeiner art da! es geht viel mehr darum, das diese punkte mich nun wieder verunsichern, ob OOP wirklich so nützlich bzw. praktisch ist, wenn sich scheinbar keiner damit befasst. nochmals ich werfe es niemanden vor das sich hier bisher keiner äußert, ich frage mich halt nur ob dieser umstand dafür spricht, dass OOP in PHP nicht so gefragt ist und die masse eher prozedural programmiert. da ich mit OOP in PHP bisher keine erfahrung habe, kann ich es selbst nicht beurteilen und versuche daher die erfahrungen anderer in meine entscheidung einzubeziehen. das lässt nun folgenden gedanken in mir aufkommen: is die tatsache, dass sich kaum jemand zu dem thema äußert, ein indiz dafür das die mehrheit eher klassich prozedural programmiert, da sich OOP in PHP als wenig vorteilhaft erwiesen hat? oder ist die tatsache, dass sich kaum jemand äußert, nur der beweis für meine ungeduld?;) vielleicht kann mir ja jemand denkanstöße geben. gruß knuff |
Es könnte auch daran liegen, dass kaum jemand Lust hat das Rad neu zu erfinden und die meisten daher mit fertigen Frameworks arbeiten. Ich würde PHP nicht ohne OOP schreiben, das halte ich für schlecht wartbar. Abgesehen davon, dass ich aktuell fast ausschließlich Javascript schreibe, würde ich bei PHP-Projekten zu Silex, Symfony oder Agavi greifen. Wenn es kein Framework sein soll, dann wenigstens PDO und Swiftmailer, wobei dir dann immer noch einige wichtige Komponenten fehlen. Ich befürchte aber, diese Info war jetzt für dich auch nicht sonderlich zielführend?!
|
In Zeile 13 ist an Position 101 ein Minuszeichen das da nicht hingehört und den Syntax-Error verursacht. :roll:
Welchen Editor nutzt Du? Wenn Du Objektorientiert entwickeln willst, lies dich in die Materie ein. Wenn man das Prinzip einmal verstanden hat, ist es offensichtlich, bis dahin gibt es aber viele Irrwege. Das Problem ist, dass man sich auf diesen Irrwegen mehr Nach- als Vorteile verschafft. Wenn dich das Thema interessiert, kann ich r.je - Tom Butler on programming und Design Patterns & Refactoring empfehlen. Bei Sourcemaking sind auch die üblichen Antipattern beschrieben und wie man soche erkennt, bzw. welche Alternativen es gibt. |
@knuff: Bitte nicht jeden Gedanken dreimal abgewandelt posten. scnr :) Das macht es teilweise etwas unangenehm zu lesen.
Allgemein: OOP ist in PHP keinesfalls unüblich. Wenn du dir moderne Frameworks oder Komponeten ansiehst, ist die Chance sehr groß, dass die objektorientiert programmiert sind. Zitat:
Zitat:
Siehe allgemein auch diese Standardantwort von phpforum.de: Standardantwort zu mail() - PHP Forum: phpforum.de Das wurde hier auch schon so ähnlich gesagt. Das Versenden von Mails ist total hakelig, wenn du alles von Hand (halbwegs) protokollgerecht[1] formatieren willst. Damit haben sich glücklicherweise schon die Entwickler entsprechender Klassen befasst. Zitat:
PHP-Code:
- PHP: Constructors and Destructors - Manual Das hier… PHP-Code:
Ich könnte noch mehr zu deinem geposteten Code schreiben, aber im Grunde läuft es immer darauf hinaus, mysqli oder PDO zu nutzen und erst mal keine eigene derartige Klasse zu schreiben. 1: Längst nicht alle Mail-Middleware oder alle Mail-Clients halten sich so richtig an die Protokolle. |
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
gruß knuff |
Zitat:
PHP: Overview - Manual - weiter unten die Tabelle "Comparison of MySQL API options for PHP" - dort findest du keinen Grund, warum die veraltete API besser wäre. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:24 Uhr. |
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
© Dirk H. 2003 - 2023