OO PHP,类函数变量

时间:2014-08-20 17:08:36

标签: php

我有这段代码:

include("classes/list.php");
    $start = new listPage();
    $start->category=3;

list.php:

class listPage
{
  public $category;

  function __construct()
  {
    echo $this->category;
  }
}

它没有用。 $ start->类别部分不设置变量的值。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

__construct会立即调用new listPage(),因此如果您向其传递值,则会将其发送到__construct方法。

include("classes/list.php");
$start = new listPage(3); // this will be passed to the constructor
echo $start->getCategory; // echo the category here or maybe use it to construct a URL

list.php:

class listPage
{
  public $category;

  public function __construct($cat)
  {
    $this->category = $cat; // the constructor will set the category sent to it
  }

  public function getCategory()
  {
      return $this->category; // just return the category instead of echoing it so that you can do whatever you want with it in your code where its being fetched.
  }
}

答案 1 :(得分:0)

问题是__construct()在类别设置为3之前被调用。您必须将echo放在一个单独的方法中,并在设置$ start-> category后调用它。

答案 2 :(得分:0)

只有在您首次使用$start = new listPage();

创建对象时才会发生构造

您需要做的是创建一个方法来获取您的参数:

class listPage
{
  public $category;

  function echoCategory($category){
      $this->category = $category;
      echo $this->category;
  }

}

然后你会这样称呼它:

include("classes/list.php");
$start = new listPage();
$start->echoCategory(3);

答案 3 :(得分:0)

在OOP中,构造方法用于构造您的对象,因此您可以初始化其中的参数,例如:

class myClass {
  public $myValue;
  function __construct() {
    $myValue = "someValue";
  }
}

实例化一个类时,构造函数方法会自动触发,即赋值(或者在你的情况下被回显)。

你应该改变你的类定义,要么你在instanciation上构建你的值,要么你创建了setter方法,第一个就像是

class listPage {
  public $category;

  function __construct($someVal) {
    $this->category = $someVal;
  }
}

$clazz = new listPage("someVal");
echo $clazz->category;

或者您创建了一个setter方法:

class listPage {
  public $category;

  function __construct() { }

  function setCategory($cat) { $this->category = $cat; }
}

$clazz = new listPage();
$clazz->setCategory("someVal");
echo $clazz->category;

为了进一步扩展讨论,你还可以使$category私有并使用setter和getter,然后你需要在最后一个例子中添加一个方法:

function getCategory() { return $this->category; }

如果要控制对变量的访问,这非常有用。

答案 4 :(得分:-1)

代码将如下所示: -

list.php的

class listPage
{
  public $category;

  function __construct()
  {
    $this->category = '';
  }
  function setCategory($value)
  {
     $this->category=$value;
     echo $this->category;
  }
}

Controller.php这样

$start = new listPage();
$start->setCategory(3);