7

そのため、PHP クラスの設計で抱えている問題を解決しようとしています。基本クラスを作成し、プライベート変数を割り当てました。この基本クラスを拡張する子クラスがあり、基本クラスの関数を介してこれらのプライベート変数を参照および変更します。privateここに例を示します。メソッド/変数との違いについてまだ混乱していることを覚えておいてprotectedください(間違っている場合はお知らせください!):

base.class.php

<?php
class Base {
    private $test;
    public function __construct(){
        require('sub.class.php');
        $sub = new Sub;
        echo($this->getTest());
    }
    public function getTest(){
        return $this->test;
    }
    protected function setTest($value){
        $this->test = $value;
    }
}
?>

sub.class.php

<?php
class Sub extends Base {
    public function __construct(){
        parent::setTest('hello!');
    }
}
?>

hello!そのため、結果が画面に表示されることを期待していますが、代わりに何もありません。私の側にクラスの基本的な誤解があるか、何か間違ったことをしている可能性があります。どんなガイダンスでも大歓迎です!ありがとう。

編集:

回答に貢献してくれたすべての人に感謝します-優れたソリューションにもかかわらず、実際には子クラスは私が必要としているものではないと思います.Baseを実際に参照する必要がないため、この時点ではデリゲートクラスの方が便利なようです.他のクラス内から機能します。

4

1 に答える 1

8

このようにする必要があります:

base.class.php:

class Base {
    private $test;
    public function __construct() {
        echo $this->getTest();
    }
    public function getTest() {
        return $this->test;
    }
    protected function setTest($value) {
        $this->test = $value;
    }
}

sub.class.php:

class Sub extends Base {
    public function __construct() {
        parent::setTest('hello!');  // Or, $this->setTest('hello!');
        parent::__construct();
    }
}

メインコード:

require 'base.class.php';
require 'sub.class.php';

$sub = new Sub;  // Will print: hello!
于 2012-05-31T03:42:58.013 に答える