全局变量在任何时候都可以在应用程序的任何部分使用,不需要传递。
**警告:**一个设计良好的应用程序不应该使用全局变量,因为它们违反了封装原则,如果处理不慎,会导致难以检测的错误。
使用实例。
$a = 1;$b = 2;function suma(): void{global $a, $b;$b = $a + $b;}suma();echo $b; //打印数字3,因为$b变量是全局的。
请注意,我们已经在自然环境之外获得了变量$a
和$b
。这种行为被称为 "魔术",因为如果另一个函数覆盖了当前正在使用的变量,应用程序就会出现意外情况。
正确的做法是,应用程序应该封装,每次都传递变量。
$a = 1;$b = 2;function suma(int $a, int $b): int{return $a + $b;}echo suma($a, $b); //打印出3
正因为如此,我们可以用不同的输入参数动态地调用该函数,其输出只取决于输入,而不取决于环境。
也许全局变量唯一合理的用途是在解析用户输入时,在这种情况下,我们谈论的是superglobal变量。
在这种情况下,这是一个简洁的设计,因为这个变量应该是只读的,而不是只写的,而且,它在整个应用程序中是相同的。
function getNameFromUrl(): string{return isset($_GET['名称'])? htmlspecialchars($_GET['名称']): '';}echo getNameFromUrl();
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | zh