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

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

  • ООП

    Голосов: 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... и т.п.
и хотелось бы что бы они например все дружили друг с другом..... помогите советом))
Простите если совсем глупый вопрос)
 
А что лучше использовать ?)
И не могли бы поделиться примером... буду очень признателен!
 
Кстати пришла идея, но боюсь что это будет медленно и прож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
?)
 
snaiperr
Тебе написали слово Registry, почему не воспользоваться гуглом?

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

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

А быстрее ООП значительно, т.к. на сэкономленное на разработке и отладке время можно пооптимизировать узкие места ;)
 
А по-моему топикстартеру нужно покурить MVC
 
да вот курю.... только что то не понимаю до сих пор... может посоветуете определённое место/статью для курения ?
 
Иван Redjik Матвеев
Наследовать необязательно, но как вариант.
 
Для начала достаточно сделать db синглтоном. В подавляющем большинстве проектов все равно больше одного соединения с базой не требуется.

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