Вы создаете экземпляр коннектора Facebook в контроллере и не хотите делать это дважды, поэтому имеет смысл, что вы хотите, чтобы модель имела к нему доступ. Все идет нормально. Есть два способа сделать это.
1) Создайте библиотеку, в которой есть экземпляр-одиночка, обертывающий экземпляр Facebook. Это будет выглядеть так:
// libraries/FacebookApi.php
class FacebookApi {
// this stores the singleton FacebookApi
protected static $instance = null;
// this is the singleton's Facebook instance
protected $facebook = null;
// Return the single FacebookApi wrapper
public static function instance() {
if (!isset(FacebookApi::$instance)) {
self::$instance = new FacebookApi();
}
return $instance;
}
// Construct a single FacebookApi containing a single Facebook
protected function __construct() {
$this->facebook = new Facebook(
Kohana::config('mysubs.facebook_apikey'),
Kohana::config('mysubs.facebook_secret')
);
}
}
и ваш контроллер, и ваша модель получат к нему доступ так:
$facebook = FacebookApi::instance()->facebook;
$facebook->require_login(); // etc
Пример кода из Kohana 2.x:
http://dev.kohanaframework.org/projects/kohana2/repository/entry/trunk/system/libraries/Database.php
2) Поскольку вы, вероятно, не собираетесь ничего делать с реальной библиотекой, кроме как просто получить доступ к классу Facebook, просто создайте простой помощник, который обертывает одиночный код:
// helpers/facebook_api.php
class facebook_api {
static $facebook = null;
static function instance() {
if (!self::$facebook) {
self::$facebook = new Facebook(
Kohana::config('mysubs.facebook_apikey'),
Kohana::config('mysubs.facebook_secret')
);
}
return self::$facebook;
}
}
и ваш контроллер, и ваша модель получат к нему доступ следующим образом:
$facebook = facebook_api::instance();
$facebook->require_login(); // etc