OrmaJever, спасибо )
Для себя я выделил несколько плюсов ООП, это инкапсуляция и уменьшение повторяющегося кода.
Инкапсуляция - если я создал объект, знаю что получу нужный мне результат и даже не задумываюсь как это происходит. С функциями так красиво (для меня это красиво) не получится, нет модификаторов доступа, функция может возвращать только один ответ, а что то мудрить из нескольких функций, думаю будет не красиво.
Вторая фишка из-за которой мне кажется что ООП нужная вещь, это уменьшение повторяющегося кода. Подключил автозагрузку классов и в любом месте создавай объект который нужен.
Переделаю немного мой первый код. Допустим эта кнопка не один раз используется, а много. На всем сайте есть разные формы, кнопки с каким то функционалом. Предположим что на сайте 30 кнопок.
CODE ( htmlphp):
скопировать код в буфер обмена
// Класс генерирует страницу class GeneratesPage{ ... function __construct(){ $a = new GeneratesTable(); } } // Класс генерирует таблицу class GeneratesTable{ ... function __construct(){ $sql = mysql_query (" запрос в БД "); while($row = mysql_fetch_assoc($sql)){ $button = new GeneratesButton('name','data-id','.$row['id'].'); $output_tr = $output_td.'<tr><td>'.$button->getButton().'</td></tr>'; } $output_table = '<table>'.$output_tr.'</table>'; } } // Класс генерирует кнопку class GeneratesButton{ privat $button; public function __construct($name ,$data_name, $data_value){ $this->button = '<div class="button" '.$data_name.'="'.$data_value.'">'.$name.'</div>'; } public function getButton(){ return $this->button; } } $b = new GeneratesPage();
Класс GeneratesButton прописывается всего один раз, может быть это и не удачный пример сокращения повторяющегося кода, но все же он это делает. А если мне будет нужна другая кнопка с дополнительными параметрами, я наследую от этого класса новый и добавлю дополнительный функционал.
У меня была мысль что PHP с ООП не может быть быстрым по сравнению с С++, так как нет компиляции в PHP, а каждый раз при загрузки скрипта идет интерпретация, а интерпретировать объекты ресурсоемкая "функция" (Я это не проверял! это предположение ). Думал что php5 почти полностью адаптирована интерпретация к ООП.(Отредактировано автором: 08 Июня, 2014 - 08:08:10)
|