我遇到了问题,我希望类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();
但我不喜欢它,打字太多了。还有其他方式吗?
菲利普
答案 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);