Каков наилучший способ передачи или доступа к другим объектам в других классах PHP?

Мне нужна помощь в планировании того, как делать мои классы в PHP. У меня есть класс сеанса и класс базы данных, которые мне очень нужны для доступа к каждому другому классу, который я использую (форумы, почта, пользователи, много классов)

Поэтому я ищу, как я должен получить доступ к классу сеанса внутри своих других классов, 1 вариант – сделать его GLOBAL, другой – передать объекты $ session и $ database в каждый класс, который я использую вот так …

$mail = new Mail($session, $database); 

но это кажется довольно утомительным, если я должен сделать это для 15 + разных классов? Есть ли способ лучше?

Ниже приведен пример некоторых методов из моего класса сеансов, которые я бы вызывал внутри других классов.

 // set a value into session $session->set('auto_id', 'some value for auto_id'); // get a value from session $session->get('auto_id');