php中的变量范围

时间:2015-07-14 06:15:54

标签: 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.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错误:语法错误,意外'$ fixture'(T_VARIABLE),   期待功能(T_FUNCTION)

3 个答案:

答案 0 :(得分:1)

如果你想创建一次实例并在每个函数中使用它,使用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";
 }

答案 1 :(得分:0)

无论你在类的声明和方法之间放置什么,都必须是特定类的属性,而不是代码。

在你的情况下,你应该把:

require_once 'adRequest.php';

class adRequestTest extends PHPUnit_Framework_TestCase{

  public $fixture = new AdRequest();

  function testGetHash_returnsCorrectValue(){
    $fixture->site = "dummy.com";
  }
}

答案 2 :(得分:0)

类定义可能只包含成员声明 - 方法,实例变量,常量等。它们可能不像函数体那样包含任意代码。