Heim  >  Artikel  >  Backend-Entwicklung  >  php有没有定义全局变量的方法?

php有没有定义全局变量的方法?

WBOY
WBOYOriginal
2016-06-06 20:26:211320Durchsuche

在一个项目中定义几个全局变量还是很有用的,但是我没有发现定义全局变量的方法,只有global $var这样的,或者$GLOBALS['name']这样的,写起来很麻烦,因为你得在每个函数中都这样写。想使用静态函数来代替,但是函数调用又会影响性能,不知道有没有其他的定义全局变量的方法呢,php团队难道没考虑到这点?

回复内容:

在一个项目中定义几个全局变量还是很有用的,但是我没有发现定义全局变量的方法,只有global $var这样的,或者$GLOBALS['name']这样的,写起来很麻烦,因为你得在每个函数中都这样写。想使用静态函数来代替,但是函数调用又会影响性能,不知道有没有其他的定义全局变量的方法呢,php团队难道没考虑到这点?

首先,你的 $_GLOBALS 写错了,然后就是你不是已经知道怎么写全局变量了么。。。
你认为 函数调用又会影响性能,话说全局变量不也一样么(始终占着那块内存)。。。

全局变量是万恶之源。一旦项目有点规模了,鬼知道谁在哪里动了它。。。

如果是变量的话,是不推荐定义成全局的,因为等到项目扩大后,这个全局的变量是不可控的!
PHP中定义全局常量的方式:define('SYS_PATH', "Hello World");
我们公司定义全局常量的方式是定义在$config数组中。这也是常见的处理方式。

定义相关常量到一个文件 用到的时候引用这个文件就可以使用常量了 为什么一定要用全局变量呢

config.php里定义一个$app关联数组,在全局作用域require加载config.php文件,这样$app就是一个全局数组了,函数里可以global $app;声明后使用里面的量。

<code><?php //config.php
$app = array(
    'base_url'       => 'http://www.example.com/',
    'db_host'        => '127.0.0.1',
    'db_username'    => 'user',
    'db_password'    => 'pass',
    'db_name'        => 'mysql',
    'db_port'        => 3306,
    'db_prefix'      => '',
    'db_conn'        => 'db_conn_obj'
);
//functions.php
function cn_db() {
    global $app;
    $app['db_conn'] = @new mysqli($app['db_host'], $app['db_username'], $app['db_password'], $app['db_name']);
}
function cn_foo1() {
    global $app;
    if(!is_object($app['db_conn'])) cn_db();
    return $app['db_conn']->query('select user,host from user where user = \'root\'')->fetch_all();
}
function cn_foo2() {
    global $app;
    if(!is_object($app['db_conn'])) cn_db();
    return $app['db_conn']->query('select user,host from user')->fetch_all();
}</code>

在局部作用域中全局变量的语法就是这么定义的

PHP用常量

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn