@ber_enot
Веб-разработчик, Vue.js / Node.js

Как правильно использовать $bd в ООП?

Здравствуйте!

Пишу API, по которому будет работать клиентское десктопное приложение. Но вопрос общий, по ООП.
Использую фреймворк Fat-Free.
В index.php он подключается так:
$f3 = require('lib/base.php');
А подключается к БД примерно так:
$db = new DB\Mongo($f3->get('dbhost'),$f3->get('dbname'));

Чтобы не писать весь API в одном файле, хочу сделать несколько модулей, для каждого модуля свой класс. Ведь в API вся работа завязана на БД.
Возникает вопрос: как осуществить передачу объекта $f3 и $db в каждый модуль, и использовать их в объектах классов?
Передавать постоянно таким образом:
class MyClass {
	public $f3;
	function __construct($f3) {
		$this->f3=$f3;
	}		
	function MyFunc() {			
		$this->f3->somebody();
	}
}

$obj= new MyClass ($f3);

На мой взгляд, не очень рационально. Хотелось бы создавать эти объекты один раз, и не передавать их в объекты других классов, но использовать внутри этих объектов. Возможно ли это?
Как такое реализовано в различных движках, CMS? Как пишете вы?
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
Acuna
@Acuna
Заполнил свой профиль
Все просто. Вы немного запутались в областях видимости)

class MyClass {
  
  private $f3, $db;
  
  function __construct () {
    global $f3, $db;
   
    $this->f3 = $f3;
    $this->db = $db;
    
  }
  
  function MyFunc () {
    $this->f3->somebody ();
  }
  
}

$obj = new MyClass ();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Wol_fi
php, js, mysql, highload
Registry, Dependency Injection, Singleton(сейчас начнут какахами кидаться) - выбирайте любой паттерн.
Ответ написан
MrBoriska
@MrBoriska
Пэхэпист самоучка, Питоност по Лутцу. C++
Есть такая штука, как singleton. Пример можно посмотреть тут.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы