帮助访问扩展类函数 - PHP OOP

时间:2010-10-05 07:42:44

标签: php oop

如何从已创建的对象访问扩展类函数?

(A) - 这可以通过不创建对象来实现:

$UserType = 'User_Vote';
$vote = User::getVote($UserType)->getVoteQuery();

(B) - 从已经创建的对象中尝试相同的想法(这是我想要做的)返回错误:意外的T_PAAMAYIM_NEKUDOTAYIM(意外的'::')

$UserType = 'User_Vote';
$object = new User();
$vote = $object::getVote($UserType)->getVoteQuery();

(C) - 但这有效:

$UserType = 'User_Vote';
$object = new User();
$objectUserType = $object->getVote($UserType);
$finalObject = $objectUserType->getVoteQuery();

为什么不用双重'::'阻止(B)工作?它似乎与块(A)相同,只是已经创建了对象。我是否必须像块(C)一样单独调用每个函数来解决这个问题?

2 个答案:

答案 0 :(得分:3)

::用于访问静态方法或属性。关键字为 class ,而不是对象 ->用于访问对象方法或属性。它不适用于类。

这两者不可互换。

答案 1 :(得分:1)

您仍然可以使用->访问器在PHP 5中链接方法。 E.g。

$vote = $object->getVote($UserType)->getVoteQuery();

在类上下文中访问Paamayim Nekudotayim方法和属性时,您应该只使用::static,而不是对象上下文。