PackageBaseClass :: AnotherClass-> Method () - возможно в PHP5?

1

Я пытаюсь вызвать такие методы:

PackageName::BankAccounts->create('arg1', 'arg2');

Но я получаю ошибку синтаксического анализа:

Ошибка анализа: синтаксическая ошибка, неожиданный '->' (T_OBJECT_OPERATOR) в...

в PHP 5.6.14., но я действительно чувствую, что я уже видел, что стиль используется где-то.

Я ошибаюсь, или есть трюк, чтобы таким способом вызывать методы в PHP5?

  • 0
    -> идет после объекта, а не имени класса.
  • 0
    Если вы вызываете статический метод, это PackageName::BankAccounts::create() .
Показать ещё 8 комментариев
Теги:
oop

2 ответа

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
)

*/

?>

Тем не менее, я ценю ваше время Бармара.

0

Я думаю, что правильный синтаксис:

(new PromisePay::BankAccountRepository())->getBankAccountById('asdasdasd');

Чтобы получить объект из имени класса, вы должны использовать new для создания объекта.

Но делать это немедленно на новом объекте не имеет большого смысла. Вы должны добавить банковский счет в репозиторий, прежде чем сможете его получить.

  • 0
    Хорошо, я благодарен за ответ и приму его в ближайшие несколько часов, если он останется лучшим ответом. Итак, по поводу шаблона PackageName :: Class: Method (), вы бы сказали, что ваш ответ является лучшей альтернативой этому?
  • 0
    PackageName::Class::Method() для статических методов. getBankAccountById - это метод, который работает с объектом.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню