如何从已创建的对象访问扩展类函数?
(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)一样单独调用每个函数来解决这个问题?
答案 0 :(得分:3)
::
用于访问静态类方法或属性。关键字为 class ,而不是对象
->
用于访问对象方法或属性。它不适用于类。
这两者不可互换。
答案 1 :(得分:1)
您仍然可以使用->
访问器在PHP 5中链接方法。 E.g。
$vote = $object->getVote($UserType)->getVoteQuery();
在类上下文中访问Paamayim Nekudotayim
方法和属性时,您应该只使用::
或static
,而不是对象上下文。