Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужно ли мне ООП? [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
like_you
Отправлено: 27 Ноября, 2010 - 14:14:50
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Июнь 2010  
Откуда: Харківська обл. с. Криштопівка


Помог: 0 раз(а)




Кому не лень, выложите, плиз, наглядный пример приимущества ООП кода (на php) перед процедурным кодом.
Тоесть желательно было бы увидеть типа: "вот процедурный кусок кода на PHP, а вот тоже самое, только значительно изящнее решение с помощью ООП кода".
Или хотя бы - "вот ООП код на php и попробуй напиши это же процедурным кодом" (типа процедурным кодом будет значительно запутанее или больше строк...
Спасибо.


-----
Створюю український хабр
 
 Top
Uchkuma
Отправлено: 27 Ноября, 2010 - 14:24:59
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




like_you пишет:
выложите, плиз, наглядный пример приимущества ООП кода (на php) перед процедурным кодом
Это невозможно. Выше вы могли прочитать, что применение ООП оправдано в больших и сложных проектах.
 
 Top
like_you
Отправлено: 27 Ноября, 2010 - 14:34:46
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Июнь 2010  
Откуда: Харківська обл. с. Криштопівка


Помог: 0 раз(а)




Да я прочитал, но я предположил, что может быть и на "маленьких примерах" можно увидеть чем это "аукнится" в больших проэктах. Выходит я ошибался?

(Отредактировано автором: 27 Ноября, 2010 - 14:35:49)



-----
Створюю український хабр
 
 Top
Uchkuma
Отправлено: 27 Ноября, 2010 - 14:49:05
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




На маленьком примере вы увидите, что кода получилось больше.
 
 Top
ALEN
Отправлено: 27 Ноября, 2010 - 17:29:53
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Скажу так изучи и все будет понятно, во многих вещах будешь использовать его, он реально упрощает жизнь и заставляет писать аккуратно. Если совсем не понимаешь как его использовать, то будет казаться, что он реально напрягает и заставляет тебя писать гораздо больше.

Вот писал под свои задачи класс для копирования страниц с интернета
http://forum.php.su/topic.php?fo...1&topic=5465

Хотя код далеко не идеален, попробуй это же описать в одной функции и чтоб получилось меньше "БУКАВ" - а теперь представь, что ты можешь унаследовать в свой класс весь этот класс и в своем дочернем переписать только те функции которые тебе не нравятся, а не тупо копировать все.

Думаю уже должно подходить все к тому, что это реально удобней во многих случаях.

По поводу быстродействия уже затронуто много вопросов, но в реально больших проектах, проще купить более новое и лучшее оборудование (хотя по сути этого и не потребуется), чем быстро улучшать проект.

При использовании кода без классов вы вряд ли убиваете ненужные переменные, массивы и т.д. (о что уже не нужно и является мусором), а при уничтожении объекта все происходит за вас, т.е. лишний раз вы не грузите машину.

Ну про безопасность и выше написано.

А еще чего стоит функция:
function __autoload($class_name) { include_once("./class/".$class_name.".php"); }

И не нужно думать и вспоминать подключили нужный файл или нет + все классы находятся в одной папке (не обязательно, просто пытаюсь показать плюсы)

В общем пока не поймешь, что можно делать с помощью классов не поймешь и их значимости, поэтому мой совет просто изучить азы по ООП, а углубляться будешь по ходу дела.
 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 20:27:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




like_you Использование принципов ООП-проектирования приложений на PHP позволяет обеспечить не только архитектурное улучшения разрабатываемой программы - но и предоставляет дополнительные технические возможности по огранизации компонентов контроля кода исполняемого потока - в частности действительная реализации ООП-механихмов обеспечивается путем использование именованных пространств имен с оператором расширения области видимости а также ссылочных элементов - таким образом ООП-организация позволяет проводить переопределение собственных компонентов обратного вызова для целевых действий


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
like_you
Отправлено: 27 Ноября, 2010 - 20:31:56
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Июнь 2010  
Откуда: Харківська обл. с. Криштопівка


Помог: 0 раз(а)




Вот я хотел бы побольше об этом узнать. Здесь http://php.su/learnphp/phpoo/ уже читал. Но пока чётко не увидел того, о чём Вы, JustUserR, сайчас написали. Не дадите ссылочки?


-----
Створюю український хабр
 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 20:41:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




like_you пишет:
Но пока чётко не увидел того, о чём Вы, JustUserR, сайчас написали
Основная часть предполагаемых в предыдущем сообщении функциональных элементов может быть реализована посредством дополнительных наборов функций и расширений PHP-интерпретатора - которые обеспечивают возможность спецификации собственных пользовательских обработчиков и схем выполнения для встроенных PHP-механизмов - конкретная реализация требуемых действий может быть обеспечена посредством функций категории http://php.su/functions/?cat=runkit и http://php.su/functions/?page=cat_oop


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ALEN
Отправлено: 27 Ноября, 2010 - 20:43:09
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




like_you
Про ООП читать мало, нужно пробовать, я вам дал реальный пример рабочего скрипта, разберите его, попробуйте написать аналогичный скрипт без ООП.

Скрипт:
1) С помощью CURL читает страницу
2) Страница из любой кодировки уходит в кодировку UTF-8
3) При включении сохраняет кэш и данные о странице во второй файл
4) обходит followlocation - т.е. автоматически перенаправляется на страницу, если того требует ответ сервера

- Удобство класса, каждый процесс был разделен на методы (функции для вас)
- Весь класс в одном файле
- свойства (переменные и массивы) внутри класса можно передавать между методами (функциями) - то чего лишены просто функции
- Я могу работать над этим классом, а вы можете сделать свой класс наследуя все свойства и методы моего класса, но в своем работать только над одним методом, который отвечает например за кэширование страницы (у меня на файлах а вы делаете свой класс который кэш будет хранить в бд, а все остальное останется неизменным и вы просто перепишете метод puts_content вот так):

PHP:
скопировать код в буфер обмена
  1. class cms_http_parse2 extends cms_http_parse {
  2. function puts_content($text){
  3. .....
  4. }
  5. }


Думаю видно как можно удобно работать в команде не мешая друг другу и не писать одно и тоже 100 раз.

Куда подробнее я уже не знаю, читайте просто мат часть и все
 
 Top
like_you
Отправлено: 27 Ноября, 2010 - 20:47:03
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Июнь 2010  
Откуда: Харківська обл. с. Криштопівка


Помог: 0 раз(а)




ALEN, большое Вам спасибо, что дали эти примеры. И не сомневайтесь, что попробую на практике. Я просто на ночь себе "запасаю" материал, который потом использую (ведь ночью не ожидается сколько посетителей, как вечером).


-----
Створюю український хабр
 
 Top
ALEN
Отправлено: 27 Ноября, 2010 - 20:54:15
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




like_you
На практике ООП - это самое простое, просто нужно понимать для чего он и как его использовать, а так теже функции со своими особенностями.

Я когда начал вникать я не понял, для чего мне писать:
class a {
function a(){
}}

когда сразу можно:
function a(){ }


Ответ такой, в таком примере как у меня невозможно обойтись одной функцией, т.к. есть моменты когда нужна хотя бы рекурсия ну и другие повторяющиеся действия, вот тогда и понимаешь как это удобно, а наследование вообще самое интересное, когда есть почти тот функционал который вы хотите, но немножко вы решили его поправить - вот тут и самый раз это все в дело, а самое главное что все что есть переписывать не нужно и если разработчики основного класса будут его усовершенствовать, не придется следить за обновлениями, если они не изменяют вид использования.
 
 Top
OrmaJever Модератор
Отправлено: 27 Ноября, 2010 - 21:50:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




like_you ненужно сразу во многое вникать. Сразу всёровно всего не понять. Начните с простых класов с несколькими свойствами и небольшими методами. А потом когда поймёте что чего то не хватает можно читать дальше про наследие, стачитексие методы и т.д. Подмигивание

(Отредактировано автором: 27 Ноября, 2010 - 21:52:51)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB