假设我有一个班级:
class Apple {
public function someMethod() {}
public function __toString()
{
return 'apple';
}
}
假设我将此类作为公共属性嵌套在另一个类中:
class Basket {
public $apple;
public function __construct() {
$this->apple = new Apple();
}
}
如果我从某个地方的篮子里访问$ apple,我会返回字符串'apple'而不是Apple类:
$basket = new Basket();
$basket->apple->someMethod();
// PHP Fatal error: Call to a member function someMethod() on a non-object
var_dump($basket->apple)
// string (5) "apple"
这种行为对我来说似乎很奇怪。除非我连接到一个字符串或处理一个对字符串有效的函数,否则我不想将Apple表示为字符串。
我错过了什么或者这是正确的吗?似乎应该有一种方法来访问对象本身,如果它被声明为public。
答案 0 :(得分:0)
您没有提及实例($this->method()
/ $this->var
)
class Apple {
public function someMethod() {}
public function __toString()
{
return 'apple';
}
}
class Basket {
public $apple;
public function __construct() {
$this->apple = new Apple();
}
}
$basket = new Basket();
$basket->apple->someMethod();
var_dump($basket);
var_dump($basket->apple);
输出
object(Basket)#1 (1) { ["apple"]=> object(Apple)#2 (0) { } }
object(Apple)#2 (0) { }