获取类以了解变量

时间:2015-02-23 18:56:58

标签: php namespaces global

我遇到了问题,我希望类Page知道变量'$ format'。

// class1.php
<?php

  include('./class2.php');
  echo $format->getTest(); // returns :-) (declared in class2.php)

  class Page {

    PUBLIC function getText() {
      return $format->getTest(); // returns Call to a member function getTest() on null
    }

  }

  $page = new Page;

?>
 // class2.php
<?php

  class Format {

    PUBLIC function getTest() {
      return ":-)";
    }

 }

 $format = new Format;

?>

有任何建议/想法吗?

编辑:

我找到了一种方法:return $GLOBALS['format']->getTest(); 但我不喜欢它,打字太多了。还有其他方式吗?

菲利普

1 个答案:

答案 0 :(得分:0)

适当的客观解决方案是将变量传递给构造函数,setter或作为getText()方法的参数。选择一个最适合您案例的那个。

构造

class Page
{
    private $format;

    public function __construct(Format $format)
    {
        $this->format = $format;
    }

    public function getText()
    {
        return $this->format->getTest();
    }

}

$page = new Page($format);
echo $page->getText();

<强>设置器

class Page
{
    private $format;

    public function setFormat(Format $format)
    {
        $this->format = $format;
    }

    public function getText()
    {
        return $this->format->getTest();
    }

}

$page = new Page;
$page->setFormat($format);
echo $page->getText();

<强>参数

class Page
{

    public function getText(Format $format)
    {
        return $format->getTest();
    }

}

$page = new Page;
echo $page->getText($format);