AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein PHP - sind hier "Sicherheitsexperten" an Board?
Thema durchsuchen
Ansicht
Themen-Optionen

PHP - sind hier "Sicherheitsexperten" an Board?

Ein Thema von himitsu · begonnen am 29. Jun 2010 · letzter Beitrag vom 9. Aug 2010
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.542 Beiträge
 
Delphi 12 Athens
 
#25

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 8. Aug 2010, 21:35
Wo jetzt erstmal wieder alles läuft und zusätzlich noch die mysql- und templatte-klassen fertig sind (und hoffentlich auch alles läuft)
und bevor ich mich ans Rechte und Benutzer-System wende, wollte ich mal wieder etwas fragen:


Und zwar hab ich von vielen Klassen deren Namen direkt für die Anbindung an die DB genutzt.
Leider kann man ja nicht von einer Klasse den Namen auslesen.
Der PHP-Parser hat was dagegen, wenn man den Klassennamen direkt als "String" verwenden will, aber diesen nicht schon als String in den Quelltext reinschreibt.
PHP-Quellcode:
class MeineKlasse {
}

echo MeineKlasse;
if (is_subclass_of($obj, MeineKlasse)) ...
Hier meckert er jedenfalls rum.
Zitat:
Notice: Use of undefined constant MeineKlasse - assumed 'MeineKlasse' in ... on line 6
Notice: Use of undefined constant MeineKlasse - assumed 'MeineKlasse' in ... on line 7
Und nein, den Namen als String will ich nicht angeben, denn da fallen Verschreiber nicht immer gleich auf.
Wenn man den Klassennamen nutzen würde, dann könnte eine Meldung ala "unbekannte Klasse" erzeugt werden.

nun war ich erstmal auf diese saublöde Idee (und verwende sie schon eine kleine Weile)
PHP-Quellcode:
class test {
  static function Name()
  {
    return get_called_class();
  }
}

echo test::Name();
leider finde ich das etwas umständlich,
aber immerhin kommt bei einem Verschreiber etwas wie "... besitzt diese Methode nicht"

Nun bin ich vor ein paar Minuten auf diese noch krankere Idee gekommen, hab's ausprobiert und erschreckender Weise scheint es zu funktionieren.
(also, es geht um die Konstante ... das __toString ist nur bei dem Test mit drin)
PHP-Quellcode:
class test {
  function __toString()
  {
    return get_called_class();
  }
}
define('test', 'test');

$test = new test;
if ($test instanceof test) echo 'yes';

echo test;
echo $test;
Wie gesagt, in diesem kleinen Test funktioniert es, auch wenn ich nicht verstehe, wie PHP nun zwischen der Konstannte und der Klasse unterscheidet.


Spricht jetzt irgendwas gegen dieses Vorgehen?
(natürlich würde ich mir diese Konstanten automatisch generieren lassen, um da ebenfalls Verscheiber zu unterbinden)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Aug 2010 um 21:40 Uhr)
  Mit Zitat antworten Zitat
 


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz