{"action":"created","issue":{"url":"https://api.github.com/repos/kohana/kohana/issues/72","labels_url":"https://api.github.com/repos/kohana/kohana/issues/72/labels{/name}","comments_url":"https://api.github.com/repos/kohana/kohana/issues/72/comments","events_url":"https://api.github.com/repos/kohana/kohana/issues/72/events","html_url":"https://github.com/kohana/kohana/issues/72","id":63399440,"number":72,"title":"new releases?","user":{"login":"raku","id":158101,"avatar_url":"https://avatars.githubusercontent.com/u/158101?v=3","gravatar_id":"","url":"https://api.github.com/users/raku","html_url":"https://github.com/raku","followers_url":"https://api.github.com/users/raku/followers","following_url":"https://api.github.com/users/raku/following{/other_user}","gists_url":"https://api.github.com/users/raku/gists{/gist_id}","starred_url":"https://api.github.com/users/raku/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raku/subscriptions","organizations_url":"https://api.github.com/users/raku/orgs","repos_url":"https://api.github.com/users/raku/repos","events_url":"https://api.github.com/users/raku/events{/privacy}","received_events_url":"https://api.github.com/users/raku/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":18,"created_at":"2015-03-21T12:29:18Z","updated_at":"2015-08-16T14:00:09Z","closed_at":null,"body":"is this project still developed or is dead?"},"comment":{"url":"https://api.github.com/repos/kohana/kohana/issues/comments/131554032","html_url":"https://github.com/kohana/kohana/issues/72#issuecomment-131554032","issue_url":"https://api.github.com/repos/kohana/kohana/issues/72","id":131554032,"user":{"login":"galves","id":1358191,"avatar_url":"https://avatars.githubusercontent.com/u/1358191?v=3","gravatar_id":"","url":"https://api.github.com/users/galves","html_url":"https://github.com/galves","followers_url":"https://api.github.com/users/galves/followers","following_url":"https://api.github.com/users/galves/following{/other_user}","gists_url":"https://api.github.com/users/galves/gists{/gist_id}","starred_url":"https://api.github.com/users/galves/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/galves/subscriptions","organizations_url":"https://api.github.com/users/galves/orgs","repos_url":"https://api.github.com/users/galves/repos","events_url":"https://api.github.com/users/galves/events{/privacy}","received_events_url":"https://api.github.com/users/galves/received_events","type":"User","site_admin":false},"created_at":"2015-08-16T14:00:09Z","updated_at":"2015-08-16T14:00:09Z","body":"What I'm saying is not that you should try to make one huge controller which does everything.  Quite the opposite.  Instead of HMVC, you would have a Controller interface like this:\r\n\r\n```\r\ninterface ControllerWithTwoWidgets {\r\n  public function __construct(Widget1 $widget1, Widget2 $widget2);\r\n}\r\n```\r\nand Widget\r\n```\r\ninterface Widget {\r\n  public function __construct(Request $request);\r\n}\r\n\r\n```\r\n\r\nNow you have decoupled your controllers and written code which is understandable, testable and re-usable.  It is also more performant than processing the entire request life cycle 3 times.\r\n\r\nTo make this sort of approach practical, you really need to consider adopting dependency injection."}}