PHP在类方法中使用全局变量

PHP在类方法中使用全局变量,php,class,oop,variables,global-variables,Php,Class,Oop,Variables,Global Variables,我正在努力使$var1工作在许多不同的方法 var1是从包含url部分的数组中提取的结果 经验: $url='localhost/site/className/edit/254/…' $arr[var1]=“编辑” $arr[var2]=“254” $var1 = 'something'; class myClass{ function doSomething(){ echo $var1; } } $obj = new myClass(); $obj->

我正在努力使$var1工作在许多不同的方法

var1是从包含url部分的数组中提取的结果

经验:

$url='localhost/site/className/edit/254/…'

$arr[var1]=“编辑”

$arr[var2]=“254”

$var1 = 'something';

class myClass{
    function doSomething(){
        echo $var1;
    }
}

$obj = new myClass();
$obj->doSomething();
输出:

注意:未定义变量:var1 in

有什么办法可以解决它吗?

2种方法可以解决它:

首先,最好将变量作为函数参数传递:

$var1 = 'something';

class myClass{
    function doSomething($var){
        echo $var;
    }
}

$obj = new myClass(); //You could also pass it to constructor
$obj->doSomething($var1);
第二,工作,但被认为是一种坏习惯:


你读了吗?你需要将var1传递到该方法中才能使用它。。。阅读第一条评论中关于变量作用域的链接。这个问题似乎离题了,因为在询问我阅读和搜索之前,海报似乎没有阅读过任何PHP文档,只是没有进一步解释问题..我正在尝试使用$var1处理许多不同的方法,并将其作为实例变量。对于单元测试,第二种解决方案是可以接受的:
$var1 = 'something';

class myClass{
    function doSomething(){
        global $var1 ;
        echo $var1;
    }
}

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