Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在另一个类中访问全局变量_Php_Scope - Fatal编程技术网

Php 如何在另一个类中访问全局变量

Php 如何在另一个类中访问全局变量,php,scope,Php,Scope,我遇到了一个问题,我有一个类bm_products\u filter,我无法从index.php文件中查看变量 我有两个文件:index.php和bm_products_filters.php 我在index.php中有一个查询,我想在bm_products_filters.php中响应它 (这里有一些数据库函数(它们正在工作,因为我可以正确地回显index.php中的变量) 我试图回显的变量是$test\u me 从index.php调用类bm_products_filter,如下所示: &

我遇到了一个问题,我有一个类
bm_products\u filter
,我无法从index.php文件中查看变量

我有两个文件:index.php和bm_products_filters.php

我在index.php中有一个查询,我想在bm_products_filters.php中响应它

(这里有一些数据库函数(它们正在工作,因为我可以正确地回显index.php中的变量)

我试图回显的变量是
$test\u me

从index.php调用类
bm_products_filter
,如下所示:

 <?php echo $oscTemplate->getBlocks('boxes_column_left'); ?>
但是我什么也没有得到。我想声明它为
全局
可能会起作用,但那不起作用。我想我需要以某种方式用
->
来调用它

不过我真的不太了解范围

希望我在这里提供了足够的信息?如果需要更多,请告诉我

更新:

这是我试图做的,但不起作用:

//index.php
    $product_count .= "SELECT COUNT(p.products_id) as total
                 from
                   " . TABLE_PRODUCTS . " p
                 left join " . TABLE_SPECIALS . " s
                   on p.products_id = s.products_id
                 left join " . TABLE_MANUFACTURERS . " m
                   on p.manufacturers_id = m.manufacturers_id
                 join " . TABLE_PRODUCTS_DESCRIPTION . " pd
                   on p.products_id = pd.products_id
                 join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c
                   on p.products_id = p2c.products_id                   
                 where
                   p.products_status = '1'
                   and pd.language_id = '" . (int) $languages_id . "'
                   and p2c.categories_id = '" . (int)$current_category_id . "'";

        $product_count_query = tep_db_query($product_count);
        $product_count_tally = tep_db_fetch_array($product_count_query);

        $test_me = $product_count_tally['total']; 

    function product_filter_count() {
        global  $test_me;   
        return $test_me;
    }


//bm_products_filter.php 

    echo product_filter_count();

我收到一个对未定义函数错误的调用。如果我在index.php中回显该函数,它会工作。为什么它在其他函数中不可见?

您需要在您想要访问它的任何函数/方法中添加
global$test\u me;

通过向构造函数添加
global$test\me;
并将该值设置为属性,可以在实例化时为整个类提供对该值的访问权限

class testclass {
    public gTestMe;
    public function __construct() {
        global $test_me;
        $this->gTestMe = &$test_me;
    }
}
将变量设置为属性时,可以通过在变量前面添加
&
来通过引用传递它

class testclass {
    public gTestMe;
    public function __construct() {
        global $test_me;
        $this->gTestMe = &$test_me;
    }
}
实际上,我不是100%确定通过参考部分。我将测试以确认,但它应该工作。确认它确实工作


我并不推荐使用这样的全局变量,因为这通常不是一个好的做法。有很多更好的方法可以实现类似的功能,而且更易于维护。

您需要在任何您想要访问它的函数/方法中添加
global$test\u me;

通过向构造函数添加
global$test\me;
并将该值设置为属性,可以在实例化时为整个类提供对该值的访问权限

class testclass {
    public gTestMe;
    public function __construct() {
        global $test_me;
        $this->gTestMe = &$test_me;
    }
}
将变量设置为属性时,可以通过在变量前面添加
&
来通过引用传递它

class testclass {
    public gTestMe;
    public function __construct() {
        global $test_me;
        $this->gTestMe = &$test_me;
    }
}
实际上,我不是100%确定通过参考部分。我将测试以确认,但它应该工作。确认它确实工作


我并不推荐使用这样的全局变量,因为这通常不是一个好的做法。有很多更好的方法可以实现类似的功能,而且更易于维护。

您应该尝试将其作为
会话变量
传递,或者作为
参数
传递到链接中。如果您使用as
会话变量
,只需
清除
会话值一旦您在
最后一页
中提交了事务,您应该尝试将其作为
会话变量
或作为
参数
在链接中传递。如果您使用as
会话变量
只要
清除
会话值,一旦您提交了事务在许多语言中,
最终页面中的事务,如果在函数/方法之外声明变量,则它们自动具有全局作用域,允许同一类中的任何方法(例如java)访问它们

php不会像那样授予全局作用域,因此您有两个选项

您可以使用全局关键字“


也可以将其作为参数传递给函数

<?php
    $test_me = "hello";
    function test($global_var)
    {
        $local_var = $global_var;
    }

    test($test_me)
?>


如果您想在多个类/文件中使用变量,我会将它们放在一个单独的文件中,然后在需要它们的文件中使用include或require语句。这样,您就不必在新文件中包含一堆不需要的php代码,只需包含变量。

在许多语言中,如果您在外部声明变量对于函数/方法,它们自动具有全局作用域,允许同一类中的任何方法访问它们(例如java)

php不会像那样授予全局作用域,因此您有两个选项

您可以使用全局关键字“


也可以将其作为参数传递给函数

<?php
    $test_me = "hello";
    function test($global_var)
    {
        $local_var = $global_var;
    }

    test($test_me)
?>


如果你想在多个类/文件中使用变量,我会将它们放在一个单独的文件中,然后在需要它们的文件中使用include或require语句。这样,你就不必在新文件中包含一堆不需要的php代码,只需包含变量。

+1代表&sign。我自己在一段时间前当tr正在尝试使用函数+1中的会话变量作为&sign。我在尝试使用函数中的会话变量时,不久前就发现了这一点感谢回复。我一直在尝试实现这一点,但我遇到了问题。如果有机会,请参阅我上面的编辑。感谢您的帮助。感谢回复。我一直在尝试暗示但我遇到了一些问题。如果有机会,请参阅我上面的编辑。谢谢你的帮助。你是否在bm_products_filter.php中包含index.php?我听起来就是这样。如果你在另一个文件的开头放上require_once index.php,它应该可以工作。你是否在bm_products_filter.php中包含index.php?听起来就是这样如果你把require_once index.php放在另一个文件的开头,它应该可以工作。