-1

親クラスで見つかった変数を拡張クラスに渡す必要がありますが、変数が未定義であるという通知が表示されます。

何が悪いのかわかりません。腸はこれは簡単な修正だと言っていますが、何らかの理由で私はそれを見ることができません。

<?php
class trackem {

public $hostnm;
public $ip;
public $info;

public function __construct() {
}

public function getNm($hostnm){
    $hostnm = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    //echo $hostnm;
}
public function getIp($ip){
    $ip =  $_SERVER['SERVER_ADDR'];
    //echo $ip;
}
public function getBrws($info){
    $info = get_browser(null, true);
    //print_r($info);
}

}

class trackem2file extends trackem{

function wrtInfo(){
    //parent::getBrws($info);
    //parent::getIp($ip);
    //parent::getNm($hostnm);
    parent::__construct();

    $this->hostnm = parent::getNm($hostnm);
    $this->ip = parent::getIp($ip);
    $this->info = parent::getBrws($info);
    $this->filename = 'txt/trackfile.txt';

    $this->fh = fopen($this->filename, 'w');
    fwrite($this->fh, $this->hostnm . '\r\n');
    fwrite($this->fh, $this->ip . '\r\n');
    fwrite($this->fh, $this->info . '\r\n');
    fwrite($this->fh, '--------------------' . '\r\n');
    fclose($this->fh);

}
}

$track2 = new trackem2file();
$track2->wrtInfo();
?>

私はこれに対する解決策を約2日間見つけようとしましたが、オブジェクトの継承と変数が拡張クラスにロードされていないことに関する他の投稿をいくつか読みましたが、この問題を解決するのに十分役立ちませんでした。だから私は今あなたの助けを求めます。

前もって感謝します。

4

2 に答える 2

3

$this->あなたはこのようにそれらを使用する必要があります、あなたは:を逃しました

$this->info;
$this->ip;
$this->hostnm;

これを試して:

<?php
class trackem
{
    public $hostnm;
    public $ip;
    public $info;

    public function __construct()
    {
    }

    public function getNm()
    {
        $this->hostnm = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    }
    public function getIp()
    {
        $this->ip = $_SERVER['SERVER_ADDR'];
    }
    public function getBrws()
    {
        $this->info = get_browser(null, true);
    }

}

class trackem2file extends trackem
{
    function wrtInfo()
    {
        parent::__construct();

        $this->getNm();
        $this->getIp();
        $this->getBrws();
        $filename = 'txt/trackfile.txt';

        $fh = fopen($filename, 'w');
        fwrite($fh, $this->hostnm . '\r\n');
        fwrite($fh, $this->ip . '\r\n');
        fwrite($fh, $this->info . '\r\n');
        fwrite($fh, '--------------------' . '\r\n');
        fclose($fh);

    }
}

$track2 = new trackem2file();
$track2->wrtInfo();
?>
于 2012-11-16T14:55:00.267 に答える
0
class trackem
{
    public $hostnm
    public $ip;
    public $info;

    public function __construct()
    {
        $this->hostnm = gethostbyaddr($_SERVER['REMOTE_ADDR']);
        $this->ip = $_SERVER['SERVER_ADDR'];
        $this->info = get_browser(null, true);
    }
}

class trackem2file extends trackem
{
    public function wrtInfo()
    {
        $data = join(PHP_EOL, [$this->hostnm, $this->ip, $this->info]);
        file_put_contents('txt/trackfile.txt', $data);
    }
}

$track2 = new trackem2file();
$track2->wrtInfo();
于 2012-11-16T15:14:24.980 に答える