Атрибут помощника Кохана - PullRequest
       4

Атрибут помощника Кохана

0 голосов
/ 30 декабря 2011

У меня есть вопрос, который продолжает беспокоить меня.В настоящее время я начал использовать Kohana 3.2 Framework.Я написал помощник для обработки некоторых функций - у меня есть несколько методов, которые (как и должно быть) объявлены STATIC.Но все эти методы так или иначе работают с базой данных, поэтому мне нужно загрузить модель.В настоящее время каждый метод имеет нестатическую переменную, подобную этой:

$ comment = new Model_Comments;
$ comment-> addComment ("abc");

ОК, похоже, что это работает, но затем я хотел избавиться от этой избыточности, используя атрибут класса для хранения экземпляра модели (также с помощью класса is).

Примерно так:

приватный статический комментарий $;// Объявление атрибута
self :: $ comment = new Model_Comment;// Это делается внутри вспомогательного метода __constuct
self :: $ comment-> addComment ("abc");// И вызвать его в методе.

Но я потерпел неудачу с: Вызов функции-члена addComment () для необъекта

Вопрос: возможно ли это сделать?Может быть, есть какие-то другие подходы?

Извините за длинную историю и спасибо за совет!: P

1 Ответ

1 голос
/ 30 декабря 2011

Статический метод не может вызывать нестатический метод, не работая с экземпляром класса.То, что вы предлагаете, не сработает.Может быть способ сделать что-то подобное, но как насчет попытки сделать следующее:

Вы можете реализовать шаблон синглтона или фабрики для своего класса "помощника".Затем вы можете создать модель (как атрибут) при создании / возвращении экземпляра.С реальным экземпляром вашего «вспомогательного» класса вам не придется беспокоиться о проблемах со статической областью действия.

Другими словами, вы можете создать вспомогательный класс как «нормальный» класс в вашемприложение, которое при создании всегда имеет необходимую модель.Я был бы рад помочь в дальнейшем, если такой подход имеет смысл.

Дэвид

...