访问未定义为全局的PHP类中的全局字符串

时间:2012-10-06 18:43:30

标签: php class global-variables

我有一个难以调试的独特情况。

我需要在php类中设置一个未严格定义为全局的全局字符串,该类必须位于另一个文件中。

带有字符串的file.php只有这个:

//this cannot be changed
$foo_version = '1.1.1';

尝试访问此字符串的example.php文件必须使用类:

class Bar extends Task {

      public function main() {

           require_once('../file.php');
           //global $foo_version; this doesn't work
           // update the database with this string, does not work

           update_option( 'db_field', $foo_version );

          }
      }

如何让$foo_version返回课堂内的某些内容?

在课堂外也无法定义/完成任何事情。

2 个答案:

答案 0 :(得分:1)

如果您包含该文件,并且变量位于包含文件中,则可以使用它。

class Bar extends Task 
{
    public function main() {
       require_once('../file.php');
       update_option( 'db_field', $foo_version );
    }
}

答案 1 :(得分:0)

您拥有的是变量$foo_version,可以轻松更改。您可以使用define将其设为常量see PHP DOC

define("FOO_VERSION", "1.1.1");

class Bar extends Task {
    public function main() {
        require_once ('../file.php');
        update_option('db_field', FOO_VERSION);
    }
}

如果您坚持将require_once替换为require,您的代码将起作用,因为PHP会检查该文件是否已被包含,如果已包含,则不再包括(要求)。

如果你在另一个类中使用过这个肯定不行。将您的代码更改为以下

class Bar extends Task {
    public function main() {
        require ('../file.php');
        update_option('db_field', $foo_version);
    }
}