php中的变量作用域
为什么我可以在函数内部定义类php中的变量作用域,php,oop,phpunit,Php,Oop,Phpunit,为什么我可以在函数内部定义类AdRequest的新实例,如下所示: require_once 'adRequest.php'; class adRequestTest extends PHPUnit_Framework_TestCase{ public $fixture; function testGetHash_returnsCorrectValue(){ $fixture = new AdRequest(); $fixture->site = "dummy.
AdRequest
的新实例,如下所示:
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture;
function testGetHash_returnsCorrectValue(){
$fixture = new AdRequest();
$fixture->site = "dummy.com";
}
}
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture;
$fixture = new AdRequest();
function testGetHash_returnsCorrectValue(){
$fixture->site = "dummy.com";
}
}
但当我试图创建这样的实例时:
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture;
function testGetHash_returnsCorrectValue(){
$fixture = new AdRequest();
$fixture->site = "dummy.com";
}
}
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture;
$fixture = new AdRequest();
function testGetHash_returnsCorrectValue(){
$fixture->site = "dummy.com";
}
}
我得到了这个错误:
PHP分析错误:语法错误,意外的“$fixture”(T_变量),
期望函数(T_函数)
在类声明和方法之间放置的任何内容都必须是该特定类的属性,而不是代码 在您的情况下,您应该:
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture = new AdRequest();
function testGetHash_returnsCorrectValue(){
$fixture->site = "dummy.com";
}
}
类定义只能包含成员声明——方法、实例变量、常量等等。它们不能像函数体那样包含任意代码。如果要创建一次实例并在每个函数中使用它,请使用
setUp()
,在每个testXxx()方法之前调用setUp()
这是某个特定测试框架的特性吗?正常的PHP初始化方法是\uu construct()
。