1

好的,我已经缩小了我的问题范围,但无法提出解决方案。

我希望第一类能够引用第二类的变量。

class TheFirstClass{
    public function __construct(){
        include 'SecondClass.php';
        $SecondClass = new SecondClass;
        echo($SecondClass->hour);
    }
}

//in it's own file
class TheSecondClass{
    public $second;
    public $minute = 60;
    public $hour;
    public $day;

    function __construct(){ 
        $second = 1;
        $minute = ($second * 60);
        $hour = ($minute * 60);
        $day = ($hour * 24);
    } 
}

但是在这种情况下,只有“分钟”可以从其他类访问。如果我要删除“= 60”,那么分钟将与其余变量一起返回任何内容。

构造函数内的变量计算正确,但不影响作用域较高的同名变量。为什么,以及构建代码的正确方法是什么?

4

2 回答 2

5

引用带有$this->前缀的属性:

    $this->second = 1;
    $this->minute = ($this->second * 60);
    $this->hour = ($this->minute * 60);
    $this->day = ($this->hour * 24);

通过不使用$this->您正在创建仅存在于本地范围内的新局部变量,您不会影响属性。

于 2013-01-21T15:10:59.480 回答
2

您正在使用的变量仅在 __construct 函数内部使用。您必须使用对象变量才能在其他类中看到它们

function __construct(){ 
    $this->second = 1;
    $this->minute = ($this->second * 60);
    $this->hour = ($this->minute * 60);
    $this->day = ($this->hour * 24);
} 

稍后编辑:请注意,您不必include在第二个类的构造函数中使用函数。你可以有这样的东西:

<?php
  include('path/to/my_first_class.class.php');
  include('path/to/my_second_class.class.php');

  $myFirstObject = new my_first_class();
  $mySecondObject = new my_second_class();

?>
于 2013-01-21T15:11:25.933 回答