1

問題を絞り込みましたが、修正できません。

最初のクラスが 2 番目のクラスの変数を参照できるようにします。

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: 2 番目のクラスのコンストラクター内で関数を使用する必要がないことに注意してください。次のようなものがあります。

<?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 に答える