[linux-l] ein biscchen offtopic: php Frage

Guntram Trebs gunni at mathematik.hu-berlin.de
Sa Nov 23 13:42:25 CET 2002


On Sat, 23 Nov 2002, Steffen Dettmer wrote:

> na, entweder ist es wie bei Perl, dann sind beide im Prinzip das
> gleiche, sobald man es als Zahl interpretiert, sonst nicht. Oder
> es gibt eben Zahlen und Strings, dann ist's nie das gleiche
> (außer, man wandelt es eben in Zahlen um).
>
> > Einen Variable hat keinen Typ, vielleicht kommt ja sowas nochmal.
>
> Was ist mit Objekten? Sowas gibt's doch in PHP?
>

ja, die gibt es

Was ich meinte, ist folgendes:

<?PHP

class foo {
  function foo() {}
}

$a = 1;
$a ="1";
$a = array();
$a = new foo();
?>

ist korrekter Code, die Variable $a hat keinen Typen, nur der Wert der
Variable hat zu jedem Zeitpunkt einen bestimmten Typen, einen Integer,
einen String, ein Array oder eine Klasse.

Das hat ja manchmal Vorteile, oft will man aber eh nur einen bestimmten
Typen haben und um Fehler zu vermeiden diesen festlegen. Das geht leider
nicht.

Gerade bei assoziativen Arrays kann man sich da sehr dumme Fehler
reinholen, wenn man auf x["1"] fälschlicherweise mit x[1] zugreift oder
umgekehrt.

> > Und 11 ist auch was anderes als 011.
>
> 011 ist oktal?

genau, ein Kumpel wollte mal Handynummern vergleichen und hat das mit
Zahlen gemacht. (eigentlich sollte man Strings dafür verwenden)

<?PHP
$x = 0179;
echo $x;
?>

hat dann 15 ausgegeben. (und das Ganze hat eh nicht korrekt funktioniert)

Eigentlich hätte PHP an der Stelle sogar einen Syntax-Fehler wegen
der 9 melden müssen, man kann ja auch nicht $x = 12z; schreiben.

Wer seine Scripte möglichst korrekt schreiben möchte, sollte am Anfang
<?PHP
error_reporting(E_ALL);
?>
verwenden. Aber Vorsicht, viele Websites dürften danach nicht mehr
wiederzuerkennen sein, vor lauter Fehlermeldungen.

Ich mach das neuerdings so, daß ich beim Testen E_ALL einschalte und
online dann error_reporting(0) setze, teilweise sogar dynamisch, sprich
wenn ich selber drübersurfe ist es gesetzt, bei allen anderen nicht.
Das hat sich schon ausgezahlt, da ich Fehler gefunden haben, die ich sonst
nie entdeckt hätte.

> > Aber das wolltest Du bestimmt alles nicht wissen, oder?
>
> Doch, meine Frage hast Du sehr ausführlich und interessant
> beantwortet, danke!

Na gut, hatte schon befürchtet, das läuft wieder auf so eine Perl ist
besser als PHP-Diskussion heraus.

Daß PHP noch in den Kinderschuhen steckt, ist mir klar, ich bin da auch
schon verzweifelt an einigen Bugs und Kinderkrankheiten.

Perspektivisch werde ich wohl versuchen, auf serverseitiges Java
umzustellen. Hab da aber noch nicht viel Erfahrungen. Aber ich hoffe mal,
daß dann viel weniger Fehler im Code sind, die Komponenten besser
wiederverwendet werden können und schneller entwickelt werden können. Die
OO-Unterstützung von PHP reicht mir nicht.

Guntram





Mehr Informationen über die Mailingliste linux-l