TIP: Use Markdown or, <pre> for multi line code blocks / <code> for inline code.
These forums are read-only and for archival purposes only!
Please join our new forums at discourse.kohanaframework.org
Есть в Debug::vars() объекта, но нет в свойствах. Как так?
  • Ничего не понимаю:

    $user = ORM::factory('user');
    echo Debug::vars($user);
    

    Среди прочего выводит - protected _primary_key => string(3) "id"

    Но когда я обращяюсь к нему так:

    $user = ORM::factory('user');
    $user->_primary_key;
    

    То выбрасывается исключение The _primary_key property does not exist....

  • '_' в начале имени метода или параметра обычно указывает на то, что метод или параметр закрытый\приватный, следовательно вызов вне модели невозможен, юзай primary_key()\pk() методы для работы с ключем.

    по поводу "а как же тогда Debug::vars() его получает?" этот метод использует семейство классов Reflection которые по просту парсит текст

  • @WinterSilence, нет, как выше выдно - метод имеет модификатор доступа protected. Причем pk() возвращяют значение поля, а не его название, которое есть в _primary_key...

    UPD: а хотя метод primary_key() самое оно. Но все равно не понятно почему не выводится при прямом обращении.

  • @like_you учи мат часть, защищенные также как и приватные нельзя вне класса вызывать

  • @WinterSilence, точно, ты прав. Подзабыл малек эту деталь, но и ексепшн не подсказывал об этом...

  • Exception выбрасывается методом __get()

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion