从另一个类调用变量,与范围问题

时间:2013-01-21 15:08:27

标签: php

好的,我已经缩小了我的问题,但无法解决问题。

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

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”,则分钟将不返回任何其他变量。

构造函数中的变量是正确计算的,但它们不会影响范围中较高的同名变量。为什么,以及构造代码的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

使用$this->前缀:

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

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

答案 1 :(得分: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();

?>