php 全局变量global

php 全局变量global

“global”关键字的演示例子:

以下为引用的内容:

以下为引用的内容:

<?php

$my_var = 'Hello World';

test_global();

function test_global() {

    // Now in local scope
   
    // the $my_var variable doesn't exist
   
    // Produces error: "Undefined variable: my_var"
   
    echo $my_var;
   
    // Now let's important the variable
   
    global $my_var;
   
    // Works:
   
    echo $my_var;
   
}

?>
 

正如你在上面的例子中看到的一样,“global”关键字是用来导入全局变量的。看起来它工作的很好,而且很简单,那么为什么我们还要担心使用“global”关键字来定义全局数据呢?

下面是三个很好的理由:

1、  代码重用几乎是不可能的

如果一个函数依赖于全局变量,那么想在不同的环境中使用这个函数几乎是不可能的。另外一个问题就是你不能提取出这个函数,然后在其他的代码中使用。

2、  调试并解决问题是非常困难的

跟踪一个全局变量比跟踪一个非全局变量困难的多。一个全局变量可能会在一些不明显的包含文件中被重新定义,即使你有一个非常好的程序编辑器(或者IDE)来帮助你,你也得花了几个小时才能发现这个问题所在。

3、  理解这些代码将是非常难的事情

你很难弄清楚一个全局变量是从哪里来得,它是用来做什么的。在开发的过程中,你可能会知道知道每一个全局变量,但大概一年之后,你可能会忘记其中至少一般的全局变量,这个时候你会为自己使用那么多全局变量而懊悔不已。
那么如果我们不使用全局变量,我们该使用什么呢?下面让我们看看一些解决方案。

使用函数参数

停止使用全局变量的一种方法就是简单的把变量作为函数的参数传递过去,如同下面所示:

以下为引用的内容:

以下为引用的内容:

<?php

$var = 'Hello World';

test ($var);

function test($var) {

    echo $var;
}

?>
 

如果你仅仅只需要传递一个全局变量,那么这是一种非常优秀甚至可以说是杰出的解决方案,但是如果你要传递很多个值,那该怎么办呢?

比如说,假如我们要使用一个数据库类,一个程序设置类和一个用户类。在我们代码中,这三个类在所有组件中都要用到,所以必须传递给每一个组件。如果我们使用函数参数的方法,我们不得不这样:

以下为引用的内容:

以下为引用的内容:

<?php

$db = new DBConnection;

$settings = new Settings_XML;

$user = new User;

test($db, $settings, $user);

function test(&$db, &$settings, &$user) {

    // Do something
   
}

?>
 

 

时间: 2024-10-12 23:41:14

php 全局变量global的相关文章

php多次include后导致全局变量global失效的解决方法

这篇文章主要介绍了php多次include后导致全局变量global失效的解决方法,实例分析了$GLOBALS失效的原理与解决方法,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php多次include后导致全局变量global失效的解决方法.分享给大家供大家参考.具体分析如下: 在多个文件中,文件一个接一个include,但最后一个文件里的函数使用global后却无法引用全局变量.例如: a.php文件: ? 1 2 3 <?php $aa = 1; ?> b.php文件

php中全局变量global的使用演示代码_php技巧

我来给处入行的人讲解一下全局变量global的使用,"全局变量",这个名词中的全局两个字已经告诉我们这个变量在各个地方都能用,先看一个实例: 复制代码 代码如下: <?php $a = 1; $b = 2; function Sum() { global $a, $b; //在里面声明为全局变量 $b = $a + $b; } Sum(); echo $b; ?> 结果: 3 如果没有全局变量global在方法内是不能获得$a,$b值的,所以在方法里面想用外面的变量就需要先

php多次include后导致全局变量global失效的解决方法_php技巧

本文实例讲述了php多次include后导致全局变量global失效的解决方法.分享给大家供大家参考.具体分析如下: 在多个文件中,文件一个接一个include,但最后一个文件里的函数使用global后却无法引用全局变量.例如: a.php文件: <?php $aa = 1; ?> b.php文件: <?php include a.php function show(){ global $aa; var_dump($aa); } ?> 显示:null; 这种失效是由于多种原因造成的

php 全局变量global的使用方法

全局变量和"global"关键字 PHP默认定义了一些"超级全局(Superglobals)"变量,这些变量自动全局化,而且能够在 程序的任何地方中调用,比如$_GET和$ _REQUEST等等.它们通常都来自数据或者其他外部数 据,使用这些变量通常是不会产生问题的,因为他们基本上是不可写的. 但是你可以使用你自己的全局变量.使用关键字"global"你就可以把全局数据导入到一个 函数的局部范围内.如果你不明白"变量使用范围"

[Python学习] 专题六.局部变量、全局变量global、导入模块变量

        定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域.本文主要讲述全局变量.局部变量和导入模块变量的方法.         参考:<Python核心编程 (第二版)> 一. 局部变量         声明适用的程序的范围被称为了声明的作用域.在一个过程中,如果名字在过程的声明之内,它的出现即为过程的局部变量:否则出现即为非局部.例: def foo(x): print 'x = ',x x = 200 print 'Changed in foo(), x =

PHP中全局变量global和$GLOBALS[]的区别分析_php技巧

一.举例比较 例一: 复制代码 代码如下: <?php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1; ?> 因为$var1被删除了,所以什么东西都没有打印. 例二: 复制代码 代码如下: <?php $var1 = 1; function test(){ global $var1; unset($var1); } test(); echo $var1; ?> 意外的打印了1.证明

python 局部变量和全局变量 global介绍

什么是全局变量和局部变量 在函数外,一段代码最始开所赋值的变量,它可以被多个函数引用,这就是全局变量: 在函数内定义的变量名,只能被函数内部引用,不能在函数外引用这个变量名,这个变量的作用域就是局部的,也叫它为局部变量: 如果函数内的变量名与函数外的变量名相同,也不会发生冲突.好比下面这种情况: x = 100 def func():     x = 55 x = 100这个赋值语句所创建的变量X,作用域为全局变量: x = 55这个赋值语句所创建的变量X,它的作用域则为局部变量,只能在函数fu

PHP中全局变量global详解

变量的范围即它定义的上下文背景(也就是它的生效范围).大部分的 PHP 变量只有一个单独的范围.这个单独的范围跨度同样包含了 include 和 require 引入的文件.例如:  代码如下 复制代码 <?php $a = 1; include 'b.inc'; ?> 这里变量 $a 将会在包含文件 b.inc 中生效.但是,在用户自定义函数中,一个局部函数范围将被引入.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内.例如:  代码如下 复制代码 <?php $a = 1;

PHP中全局变量global和$GLOBALS[]的区别

一.举例比较 例一:  代码如下 复制代码 <?php    $var1 = 1;    function test(){        unset($GLOBALS['var1']);    }    test();    echo $var1;    ?>   因为$var1被删除了,所以什么东西都没有打印. 例二:  代码如下 复制代码 <?php    $var1 = 1;    function test(){        global  $var1;        unse