Программирование классами

  • Автор темы Автор темы Netman
  • Дата начала Дата начала
И это тоже. Делать надо правильно. Всегда можно делать криво и зачастую нужно но либо ВЫНУЖДЕННО либо от лени но тогда не надо об этом кричать на углу
да я в общем-то согласен с тобой, просто правильно - посередине между "лень" и "паранойя" (http://tinyurl.com/bcy23), имхо

А я вот напишу через какое-то время очень хорошую заметку насчет этого почитаешь
интересно... а где ее можно будет найти?
 
Автор оригинала: cDLEON
Во, херня какая, заменить название своей переменной.
Это, что ли через Find->Replace заменять $_GLOBALS['config'] на $_GLOBALS['my_config'] во всех местах, где эта переменная используется?
А если я ещё одну библиотеку скачаю, а там юзается my_config ? :D Опять заменять ? Бугага))
ага, уже давно придумали константы, мона
$_GLOBALS[MYCMS_CONFIG] или лучше $_GLOBALS[Mycms::CONFIG_INDEX]
Хотя - в своих проектах я вообще отказался от синглтонов.
Передаю параметры в конструктор. И чувствую себя молодым 8)
одно шило на другое, можно ещё и _только_ registry?

как же я рад, что не одолел ни фаулера, ни четвёрку в своё время и привык делать как мне удобно в первую очередь.
 
одно шило на другое, можно ещё и _только_ registry?

как же я рад, что не одолел ни фаулера, ни четвёрку в своё время и привык делать как мне удобно в первую очередь.
Регистр мало чем отличается от глобалов - его я тоже не использую.
как мне удобно в первую очередь.
Я тоже фаулера не читал. Но основы понял. Раньше точно так же скептично смотрел на ООП, кстати 8)
Но...Когда я понял весь смысл, я больше не могу мыслить процедурами :( Во-первых скучно, во-вторых не удобно, в-тритьих не расширяемо обсалютно+запутано....
 
как же я рад, что не одолел ни фаулера, ни четвёрку в своё время и привык делать как мне удобно в первую очередь.
После того как ты их не прочитаешь, а поймешь тебе станет удобно делать правильно и ты поймешь что раньше занималься фигней.
 
Очень забавный топик, продолжайте

ЗЫ. Вот эти споры извечные про сингелтоны... Кто нибудь может сказать - пользователю сингелтона есть какая нибудь разница сколько экземпляров сингелтона существует? По моему абсолютно никакой. 99% местных вопросов просто отпадут, если принять за правило, что инстанцированием занимаются только фабрики.
 
Автор оригинала: HraKK
После того как ты их не прочитаешь, а поймешь тебе станет удобно делать правильно и ты поймешь что раньше занималься фигней.
я вымучал как-то половину, но озарение не снизошло, даже наоборот. начал ставить извращённые эксперименты.
 
Это первая стадия, у меня так же была =) Не понимал нафиг, материл, делал как мне удобно но потом... =)
 
я понял, просто я это уже знал и дошёл до этого по большей части практическим путём, а читать начал только думая. что можно как-то лучше и удобнее делать.
мне в своё время повезло с работой и тем, что я её выбирал не по зарплате, а по уровню тех. директора.
 
А я до всего дошел в голове не писал ничего год( так сложилось), не читал ничего кроме пхпклаба, а просто как-то разбышлял и осенило как Ньютона) Возможно осмыслил за это время все что читал раньше.
 
Всем огромное спасибо за помощь, сижу читаю мануалы (особенно понравилась ссылка про «Управление зависимостями в PHP-коде»). Для начала конечно сложновато, но а кому сегодня легко.

Как я понял, одной из основных целей, к которой нужно стремиться, это независимость классов друг от друга. Соответственно возникает следующий вопрос, до какой степени стоит делать класс независимым? Взять к примеру два варианта кода
PHP:
class system{

   var $core_config;
   var $tpl;

   function __construct($core_config,$tpl){
      $this->core_config = $core_config;
      $this->tpl = $tpl;
   }

   function check_work(){

      if($this->core_config->system_work == 0){

         $this->tpl->loadTpl('/offline.tpl');
         echo $this->tpl -> compile();
         die();}
   }

}

$system = new system($config,$tpl);
$system -> check_work();

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

PHP:
class system{

   var $core_config;

   function __construct($core_config,$tpl){
      $this->core_config = $core_config;
   }

   function check_work(){

      if($this->core_config->system_work == 1){
         return 1;
      }
   }

}

$system = new system($config);

if(!$system -> check_work()){
   $tpl -> loadTpl('/offline.tpl');
   echo $tpl -> compile();
   die();
}
Во данном варианте класс менее функционален, но и менее зависим. В больших проектах, к сожалению не учувствовал, поэтому и интересно как лучше делать на практике.
 
до какой степени стоит делать класс независимым?
до степени, называемой "без излишнего фанатизма". Лично у меня системные классы так или иначе завязаны на архитектуре системы и это нормально, ИМХО. А вот частные классы типа пользователь, база данных, какашка, лучше делать максимально "независимыми".
 
Здесь весь функционал находится внутри класса, с одной стороны удобно, что можно просто вызвать функцию проверки и как говориться дело в шляпе. Но тогда класс начинает завесить от класса шаблонов.
Нет. В этом случае System не зависит от класса шаблонов, т.к. он использует интерфейс, а о том с объектом какого именно класса работает он не знает.
 
Как я понял, одной из основных целей, к которой нужно стремиться, это независимость классов друг от друга. Соответственно возникает следующий вопрос, до какой степени стоит делать класс независимым?
надо просто определиться чего ты хочешь, потом подумать какие есть варианты и, учитывая их плюсы и минусы, выбрать наиболее подходящий в данной ситуации
Вот тебе класс system зачем? Какие он обязанности должен выполнять

-~{}~ 11.03.09 23:01:

Нет. В этом случае System не зависит от класса шаблонов, т.к. он использует интерфейс, а о том с объектом какого именно класса работает он не знает
скажем так, это динамическая зависимость. Статическая:
PHP:
   function __construct(){ 
      $this->tpl = Templates::get(); 
   }
Для модульного тестирования динамические зависимости, лучше статических
 
А ведь чел просто спросил как передавать данные между классами :))))

Любители глобалсов и спагетти, смотрите зенд фреймворк, как пример хорошей архитектуры. Надо писать не так как нравится, а так как надо. Как проверено, правильно и надежно. А спор на эту тему возникает, потому что лежат фрилансеры на диване, которые в жизни в команде не работали и плодят свои мега-труды. (Фрилансеры, которые работали в команде, думаю, так не делают).

------
И почему в пыхе нет оператора goto? Вот было бы раздолье... :))
 
Димон
а в zf разве нет "спагетти"? ;) могу рассказать как пишут в команде на zf, но не при людях, там сплошной мат. кроме знания одних божественных правил, нужно их ещё уметь применять и применять там где это надо.

p.s. goto будет
 
ZF конечно далеко не идеал, но я прекрасно представляю реакцию похапе-говнокодеров на "а вот теперь мы пишем на ZF". Конечно ниасиливают и изрыгают проклятия, хотя уместнее было бы просто самим убиться об стену.
 
fixxxer
хуже, они пытаются его "довести до ума", и продолжают параметры передавать гетом, а письмо отсылать функцией mail, формируя заголовки ручками и т.д.
 
скажем так, это динамическая зависимость. Статическая:
PHP:
   function __construct(){ 
      $this->tpl = Templates::get(); 
   }
Или так:
PHP:
   function __construct(){ 
      $this->tpl = new Template('tpl1.php'); 
   }

-~{}~ 12.03.09 23:59:

Надо писать не так как нравится, а так как надо.
Достаточно пару раз "наступить на грабли", чтобы понравилось писать так как надо )
 
А кто что думает по поводу Limb Toolkit? на данный момент, данное решение мне понравилось больше всего.
 
Сверху