Я пытаюсь вызвать такие методы:
PackageName::BankAccounts->create('arg1', 'arg2');
Но я получаю ошибку синтаксического анализа:
Ошибка анализа: синтаксическая ошибка, неожиданный '->' (T_OBJECT_OPERATOR) в...
в PHP 5.6.14., но я действительно чувствую, что я уже видел, что стиль используется где-то.
Я ошибаюсь, или есть трюк, чтобы таким способом вызывать методы в PHP5?
Там мы идем:
<?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
)
*/
?>
Тем не менее, я ценю ваше время Бармара.
Я думаю, что правильный синтаксис:
(new PromisePay::BankAccountRepository())->getBankAccountById('asdasdasd');
Чтобы получить объект из имени класса, вы должны использовать new
для создания объекта.
Но делать это немедленно на новом объекте не имеет большого смысла. Вы должны добавить банковский счет в репозиторий, прежде чем сможете его получить.
PackageName::Class::Method()
для статических методов. getBankAccountById
- это метод, который работает с объектом.
->
идет после объекта, а не имени класса.PackageName::BankAccounts::create()
.