Php 让类知道一个变量

Php 让类知道一个变量,php,namespaces,global,Php,Namespaces,Global,我面临一个问题,我希望类页面知道变量“$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

我面临一个问题,我希望类页面知道变量“$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; 但是我不喜欢,打字太难了。还有别的办法吗


Philip

正确的目标解决方案是将变量传递给构造函数、setter或作为参数传递给getText方法。选择一个你认为最适合你的情况

建造师

塞特

论据


这是如何让Page知道$format的?不管怎样,我得到的类不仅仅是格式化,还有没有其他不使用构造函数的方法?我的意思是,我已经在class1.php中获得了varibale,有没有办法也进入课堂页面?谢谢!你觉得这个解决方案怎么样,我声明一个构造函数,遍历$GLOBALS并声明一个带有$GLOBALS包含的所有内容的变量?那么如果你想要硬编码所有内容,那么使用目标代码有什么意义呢?无论您做什么,您将拥有一个始终以相同方式工作的类,因为它总是读取全局变量。这显然不是你想要的,因为我认为将来会有新的格式,你会想用另一种格式替换一种格式。不,格式是我在文件夹/类中得到的许多类中的一个类。我希望通过使它们可见来实现我需要的每个类
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);