0

myobjectのプロパティが既に宣言されることがわかっているのに、なぜ次のようなことができないのですか。

define('title','boats');

myobject->title;

しかし、これは機能します:

myobject->boats

これも良い習慣ですか?

4

2 に答える 2

3

使えません

$myobject->title

titleこれは、オブジェクトのプロパティにアクセスしようとしているためです。このプロパティが存在しない場合、エラーが発生します。

使用できます

$myobject->{title}

ただし、定数の代わりに変数を使用することをお勧めします。

$title = 'boats';
echo $myobject->$title;

理想的には、アクセスするプロパティを把握し、その名前を適切に使用します。

$myobject->boats
于 2012-04-11T07:04:13.017 に答える
1

myobject のプロパティが既に宣言されていることがわかっているのに、なぜ次のようなことができないのでしょうか。

おそらく、PHP がメソッド名で呼び出すことを想定しているためです。ただし、オプションがあります。

<?php
define( 'METHOD', 'bar' );

class Foo {
    public function bar( ) {
        echo "Foo->bar( ) called.\n";
    }
}

$foo = new Foo;
call_user_func( array( $foo, METHOD ) );

// or
$method = METHOD;
$foo->$method( );

EDIT:ああ、私は誤解しているようです。私のバージョンは、名前が定数で定義されているメソッドを呼び出すためのものですが、プロパティを呼び出す方法を探していました。まあ、今後の参考のためにここに残しておきます。

于 2012-04-11T07:05:43.947 に答える