Php 从类中的函数中访问变量(作用域?)

Php 从类中的函数中访问变量(作用域?),php,class,function,variables,scopes,Php,Class,Function,Variables,Scopes,我对课程相当陌生,我一直在网上寻找一些关于这方面的教程,但不幸的是,我没有找到解决方案。如果你们能给我任何帮助,我将不胜感激 我有两个文件 1.variables.inc.php: $myvar = "hello world"; 2.myclass.php: include("variables.inc.php"); class myClass { function doSomething() { echo "myvar: $myvar"; } } 问题是: $

我对课程相当陌生,我一直在网上寻找一些关于这方面的教程,但不幸的是,我没有找到解决方案。如果你们能给我任何帮助,我将不胜感激

我有两个文件

1.variables.inc.php:

$myvar = "hello world";
2.myclass.php:

include("variables.inc.php");
class myClass {

    function doSomething() {
        echo "myvar: $myvar";
    }
}
问题是: $myvar返回空值。我尝试在函数doSomething{和echo…)之间添加这一行: 全球$myvar; 但它似乎也不是这样。有什么建议吗?

$myvar是在全局范围内定义的

如果真的需要访问,那么

function doSomething() { global $myvar; echo "myvar: $myvar"; }
但是,在其他作用域中使用全局变量被认为是不好的做法

有关更详细的说明,请参见官方PHP手册中的章节。

$myvar是在全局范围内定义的

function doSomething() {
  global $myvar;
  echo "myvar: $myvar";  
}  
如果真的需要访问,那么

function doSomething() { global $myvar; echo "myvar: $myvar"; }
但是,在其他作用域中使用全局变量被认为是不好的做法

有关更详细的说明,请参阅官方PHP手册中的章节。

切勿将全局类与类一起使用

function doSomething() {
  global $myvar;
  echo "myvar: $myvar";  
}  
如果类中需要变量,则将其注入方法或构造函数:

class myClass {

function doSomething($myvar) { echo "myvar: $myvar"; }

}

$obj = new myClass;
$obj->doSomething($myvar);
永远不要使用全局类

如果类中需要变量,则将其注入方法或构造函数:

class myClass {

function doSomething($myvar) { echo "myvar: $myvar"; }

}

$obj = new myClass;
$obj->doSomething($myvar);

为什么会被认为是坏习惯?@Jay:,或者是我的一种。如果你知道这是一种坏习惯,为什么要建议它;s@meze:我建议不要使用globals。提供这些代码是为了解释globals是如何工作的。@Jay:主要是因为类和函数的一个用途是将变量封装到声明它们的代码区域中。也就是说为了方便自动内存管理和降低意外重用其他地方现有变量的风险,使用全局变量几乎无法实现这些目标。为什么这会被视为不好的做法?@Jay:,或者我的一个。如果你知道这是一个不好的做法,为什么要建议它;s@meze:我建议不要使用globals。代码是provided是关于全局变量如何工作的解释。@Jay:主要是因为类和函数的一个用途是将变量封装到声明它们的代码区域中。这样做是为了便于自动内存管理,并减少意外地在其他地方重用现有变量的风险。使用全局变量几乎可以这就是我们的目标。