PHPでオブジェクトをパラメータとして渡すときにオブジェクトメソッドにアクセスするには?

PHPでパラメータとして渡されたオブジェクトのメソッドを呼び出すにはどうすればよいですか?

これはthefirstclass.phpで定義された最初のクラスです

class TheFirstClass {

    private $_city='Madrid';

    public function city() {
        return $_city
    }   
}

これはsecondクラスの2番目のクラスです.php

class TheSecondClass {

    public function myMethod($firstClassObject) {

        echo "City: " . $firstClassObject->city();//<- Why This method doesn´t work?      

    }
}

最後に、これは     include_once "class/the firstclass.php";     include_once "class/the secondclass.php";

$firstClassObject = new TheFirstClass();
$secondClassObject = new TheSecondClass();

$secondClassObject->myMethod($firstClassObject);
0
@bazmegakapa私はそこにそれを見たことを誓う..私の悪い!
追加された 著者 jlb,
@ジミー、あなたはini_set( 'display_errors'、1)を持っていることを確認してください。およびerror_reporting(E_ALL);それが助けになるかもしれない。あなたの問題は他の場所にあるようです。
追加された 著者 jlb,
動作しませんということを説明できますか?たぶん私は酔っぱらいですが、すべきです。
追加された 著者 kapa,
@jlb私はここでメソッド連鎖が表示されません。
追加された 著者 kapa,
@Quasdunkはい、私はあまりにもstackoverflowに酔っています。退職:)。
追加された 著者 kapa,
return $ this - > _ city はどうでしょうか? :)
追加された 著者 Quasdunk,
@bazmegakapa n/m、私たちは皆、その気持ちを知っていると思う... :-D
追加された 著者 Quasdunk,
これは簡単な例で問題をはっきりと説明するためのコードの簡略化です。 $ _city varは本当に値を持っていますが、2番目のオブジェクトメソッドで$ firstClassObject-> city()を呼び出すと、cityというメソッドは何も返しません。
追加された 著者 Jimmy,

1 答え

The problem doesn't lie in the call to TheFirstClass::city within TheSecondClass::myMethod, but rather that TheFirstClass::city returns a local variable ($_city) rather than an instance variable ($this->_city). Unlike in languages such as C++, in PHP instance variables must always be accessed through an object, even in methods.

これは作業コードです:

class TheFirstClass {
    private $_city = "a";

    public function city() {
        return $this->_city;
    }   
}

class TheSecondClass {
    public function myMethod($firstClassObject) {
        echo "City: " . $firstClassObject->city();//<- Why This method doesn´t work?
    }
}

$test = new TheFirstClass();
$test2 = new TheSecondClass();
$test2->myMethod($test);
1
追加された
dev環境でエラー報告を有効にし、注意を払うのが正当な理由である理由の良い例あなたが持っていれば、これが拾われたと信じています...
追加された 著者 liquorvicar,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com