0

当我知道myobject将要声明 of 的属性时,为什么我不能执行以下操作:

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( );

编辑:啊,我似乎误解了。我的版本是用于调用名称在常量中定义的方法,而您正在寻找一种调用属性的方法。好吧,无论如何我都会把它留在这里以备将来参考。

于 2012-04-11T07:05:43.947 回答