ООП, использование нескольких классов

с Вашей точки зрения, для быстродействия выполнения кода что эффективнее ?

  • ООП

    Голосов: 6 60,0%
  • процедурное программирование

    Голосов: 4 40,0%

  • Всего проголосовало
    10

snaiperr

Новичок
Люди( Совсем голова взрывается уже(( помогите пожалуйста разобраться и кодом))

имеется класс, в нём создаём 2 объекта БД и новости, не могу понять возможно ли использовать из класса новости класс БД ? не могу понять, реально ли и как это заставить работать если реально?) и на сколько это будет ресурсоёмким... хотелось бы узнать как внутри одного класса делать взаимодействие со всем созданными..
PHP:
class site {

  function __construct(){
    $this->db = new db();
    $this->news = new news();
  }

}

class db {
...
}

class news {
  function show_news(){
    $this->db->select(....);
  }

}
ну и так далее... т.е. может быть например ещё 5 модулей аля +comments, +rate... и т.п.
и хотелось бы что бы они например все дружили друг с другом..... помогите советом))
Простите если совсем глупый вопрос)
 

snaiperr

Новичок
А что лучше использовать ?)
И не могли бы поделиться примером... буду очень признателен!
 

snaiperr

Новичок
Кстати пришла идея, но боюсь что это будет медленно и прож0рливо....

PHP:
class site {

  function __construct(){
    $this->db = new db();
    $this->news = new news( $this );
  }

}

class db {
...
}

class news {
  function __construct($parent){
    $this->parent=& $parent;
  }


  function show_news(){
    $this->parent->db->select(....);
  }

}
Т,е. при создании класса передаём ему $this,
и соответственно конструктор определяет родительский класс,
и вниутри данного класса обращаемся к объектам через parent:
т.е. $this->parent->db->select(...)
единственное, каждый раз писать parent не очень хорошая идея...

может таким же образом есть смысл сделать в конструктере определения нужных модулей, аля
$this->db =& $this->parent->db;
и потом уже пользовать просто $this->db
?)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
snaiperr
Тебе написали слово Registry, почему не воспользоваться гуглом?

А твой вариант тянет на Дарвина. Есть понятие наследования и вызов конструктора родителя через parent::__construct(); Но в твоем случае это не выход.

Нормально было бы вынести те классы, что ты хочешь использовать в новостях и т.д. в отдельный класс-хранилище.
 

Absinthe

жожо
snaiperr такие вопросы от неумения пользоваться профайлером.

А быстрее ООП значительно, т.к. на сэкономленное на разработке и отладке время можно пооптимизировать узкие места ;)
 

Redjik

Джедай-мастер
snaiperr
Нормально было бы вынести те классы, что ты хочешь использовать в новостях и т.д. в отдельный класс-хранилище.
Добавлю - класс-хранилище, от которого будут наследоваться уже нужные тебе классы
 

Crys

Двинутый новичок
А по-моему топикстартеру нужно покурить MVC
 

snaiperr

Новичок
да вот курю.... только что то не понимаю до сих пор... может посоветуете определённое место/статью для курения ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Иван Redjik Матвеев
Наследовать необязательно, но как вариант.
 

fixxxer

К.О.
Партнер клуба
Для начала достаточно сделать db синглтоном. В подавляющем большинстве проектов все равно больше одного соединения с базой не требуется.

Заморачиваться с dependency injection и т.п. имеет смысл тогда, когда столкнешься с ограничениями подхода с синглтонами; на небольших проектах возможно это не произойдет никогда :)
 
Сверху