-1

を呼び出すtryTest()と、出力は次のようになります。

これをテストするJo

「Test this」が最初に印刷され、次に Jo が印刷されるのはなぜですか。メソッドが呼び出された後にコンストラクターが呼び出されているようです。また、コンストラクターで値を割り当てているため、テキストには Mary が出力されるはずです。しかし、それはジョーに反響します。

<?php
class cityme {
    public $nm = "Jo";
    public $state = null;
    public $country = null;

    function _construct($name, $state, $country) {
        // set the name
        $this->nm = $name;
        echo $this->nm; // this echoes after the printout function is called.. and the value is Jo... 
        // set the state
        $this->state = $state;
        // set the country
        $this->country = $country;
    }


    /**
     * Print the info
     */
    public function printout()  {

        if($this->nm == null)  {
            echo "it worked";//does not echo
        }
        echo "Test this";//echoes first... 
        echo $this->nm;
        echo $this->state;
        echo $this->country;
    }
}

function tryTest() {
    $myCity = new cityme("Mary", "Charlotte", "US");
    $myCity->printout();
}
?>
4

1 に答える 1

2

コンストラクターにアンダースコアがありません。そのはず:

function __construct($name, $state, $country) {
于 2012-06-07T03:56:59.587 に答える