我试图调用这样的方法:
PackageName::BankAccounts->create('arg1', 'arg2');
但是我得到了解析错误:
解析错误:语法错误,意外' - >' (T_OBJECT_OPERATOR)...
在PHP 5.6.14中,但我真的觉得我已经看到过某种风格。
我错了,还是有一个技巧可以在PHP5中以这种方式完成调用方法?
答案 0 :(得分:0)
我认为正确的语法是:
(new PromisePay::BankAccountRepository())->getBankAccountById('asdasdasd');
要从类名中获取对象,必须使用new
来创建对象。
但是,立即在新对象上执行此操作并没有多大意义。您必须先将银行帐户添加到存储库,然后才能检索它。
答案 1 :(得分:0)
我们走了:
<?php
class BankAccount {
public static function getBankAccountById($id) {
return array('data', 'more data', '_self' => $id);
}
}
class BaseClass {
public static function __callStatic($className, $argsWeWontUse) {
return new $className;
}
}
$call = BaseClass::BankAccount()->getBankAccountById('abcdefghijkl123456');
print_r($call);
/*
Array
(
[0] => data
[1] => more data
[_self] => abcdefghijkl123456
)
*/
?>
尽管如此,我很感谢你的时间Barmar。