qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Mi 18.01.2012 09:48
Titel Warum funktioniert das nicht? (PHP) |
|
|
Ich kann nicht verstehen warum dieser (Lern-) PHP-Code nicht funktioniert. Wenn ich die Variable $grf_img immer brav als Parameter verwende bzw. per Return zuweise, geht es natürlich, aber gerade das wollte ich "wegoptimieren". Auch wenn ich die Global-Definition in die Funktion grf_init hineinschreibe, geht es nicht, jedenfalls nicht bei "www.coderun.com". Danke für Tips.
Code: |
<?php
global $img_grf;
function grf_init($w,$h)
{
$img_grf=imagecreate($w,$h);
}
function grf_show()
{
header('Content-Type: image/gif'); imagegif($img_grf);
}
grf_init(100,100);
grf_show();
?> |
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 18.01.2012 11:18
Titel
|
|
|
Du musst das global-Keyword innerhalb der Funktionen verwenden, um im lokalen Scope auf Variablen im "globalen"/äußeren Scope zuzugreifen: http://php.net/manual/en/language.variables.scope.php
Die Semantik ist: "Hol mir Variable $a von außen hier rein", und nicht "Mach Variable $a verfügbar für alles unter mir".
Du optimierst damit aber nix weg, sondern erreichst das Gegenteil --- unwartbaren Code. Das ist ein klassisches Antipattern.
Zuletzt bearbeitet von bacon am Mi 18.01.2012 11:19, insgesamt 1-mal bearbeitet
|
|