2012-04-11 21 views
0

私はmyobjectのプロパティが既に宣言されようとしていることがわかっている場合は、次のように、なぜ私は何かを行うことはできません。オブジェクトの未定義のプロパティを定義使用して()

define('title','boats');

myobject->title

が、これは動作します:

myobject->boats

このでも良い習慣ですか?これはあなたのオブジェクトのtitleプロパティにアクセスしようとしているよう

答えて

3

あなたは

$myobject->title 

を使用することはできません。このプロパティが存在しない場合、エラーが発生します。

あなたがアクセスすると、使用どのプロパティを知っているだろう、あなたは

$myobject->{title} 

使用することができますが、私はむしろ理想的に、あなたは定数の代わりに変数を使用するなど

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

を参照してくださいねその名の適切

$myobject->boats 
1

なぜ私ができます私のオブジェクトのプロパティがすでに宣言されていることを知っているときは、次のようなことをしないでください:

おそらく、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:ああ、私は誤解があるようです。私のバージョンは、名前を定数で定義したメソッドを呼び出すためのものですが、プロパティを呼び出す方法を探していました。とにかく、将来の参照のためにここに残しておきます。

関連する問題