php 中的变量范围
variables scope in php
为什么我可以像这样在函数内部定义 class 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";
}
}
我收到这个错误:
PHP Parse error: syntax error, unexpected '$fixture' (T_VARIABLE),
expecting function (T_FUNCTION)
无论您在 class 的声明和方法之间放置什么,都必须是特定 class 的属性,而不是代码。
在你的情况下,你应该输入:
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture = new AdRequest();
function testGetHash_returnsCorrectValue(){
$fixture->site = "dummy.com";
}
}
class 定义只能包含成员声明 -- 方法、实例变量、常量等。它们可能不像函数体那样包含任意代码。
如果您想创建一次实例并在每个函数中使用它,请使用 setUp()
,在每个 testXxx() 方法之前调用 setUp()
<?php
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture;
public function setUp() {
$this->fixture = new AdRequest();
}
function testGetHash_returnsCorrectValue(){
$this->fixture->site = "dummy.com";
}
为什么我可以像这样在函数内部定义 class 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";
}
}
我收到这个错误:
PHP Parse error: syntax error, unexpected '$fixture' (T_VARIABLE), expecting function (T_FUNCTION)
无论您在 class 的声明和方法之间放置什么,都必须是特定 class 的属性,而不是代码。
在你的情况下,你应该输入:
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture = new AdRequest();
function testGetHash_returnsCorrectValue(){
$fixture->site = "dummy.com";
}
}
class 定义只能包含成员声明 -- 方法、实例变量、常量等。它们可能不像函数体那样包含任意代码。
如果您想创建一次实例并在每个函数中使用它,请使用 setUp()
,在每个 testXxx() 方法之前调用 setUp()
<?php
require_once 'adRequest.php';
class adRequestTest extends PHPUnit_Framework_TestCase{
public $fixture;
public function setUp() {
$this->fixture = new AdRequest();
}
function testGetHash_returnsCorrectValue(){
$this->fixture->site = "dummy.com";
}