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 :: ооп программирование

 PHP.SU

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


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

> Описание: Классы и обьекты
vanicon
Отправлено: 14 Июня, 2011 - 12:04:15
Post Id



Частый посетитель


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


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




Прочитал статью на сайте по поводу ооп программирования, и решил написать какой нибудь класс который может пригодиться мне в дальнейшим, вот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. header("Content-Type: text/html;charset=utf-8");
  3. //Создаем новый класс post
  4. class posts {
  5. //функция для подключения к БД
  6. function bd_connect($db_name,$db_server,$db_user,$db_pass){
  7. mysql_connect($db_server,$db_user,$db_pass);
  8. mysql_select_db($db_name);
  9. mysql_query("SET NAMES 'utf8'");//указание кодировки для mysql
  10. }
  11. //функция для выборки записей из БД
  12. function echo_posts(){
  13. //цикл для выборки записей
  14. $sql = mysql_query("SELECT title,date FROM posts");
  15. while ($post = mysql_fetch_array($sql, MYSQL_BOTH)) {
  16. echo $post['date'].' '.$post['title'].'<br>';
  17. }
  18. }
  19. //функция для изменения записей в БД
  20. function edit_posts($id,$title,$date){
  21. mysql_query("UPDATE posts SET title = '".$title."',date = '".$date."' WHERE id = '".$id."'");
  22. }
  23. //функция для добавления записей в БД
  24. function new_posts($title,$date){
  25. mysql_query ("INSERT INTO posts (title,date) VALUES('".$title."','".$date."')");
  26. }
  27. //функция для удаления записей в БД
  28. function delete_posts($id){
  29. mysql_query ("DELETE FROM posts WHERE id = '".$id."'");
  30. }
  31. }
  32.  
  33. //создаем объект, posts
  34. $object = new posts;
  35. $object->bd_connect('test_php','localhost','root','');//подсоеденяемся к БД
  36. $object->edit_posts('1','Класс post','2001-06-15 12:31:59');//изменяем запись с id 1
  37. $object->new_posts('Класс post2','2011-06-15 12:32:59');//добавляем новую запись в БД
  38. $object->delete_posts('1');//удаляем запись у которой id 1
  39. $object->echo_posts();//выводим все записи из БД
  40.  

Этот класс должен создавать, удалять записи от туда, изменять их (ну не класс сам конечно а функции внутри него)
И у меня возник вопрос, чем этот код написанный на классах и объектах будет более удобен чем простые функции, ведь тот же самый код можно перезаписать и будем почти одно и тоже, или же я все таки привел не удачный пример реализации ооп?


-----
Так было, так есть и так будет
 
 Top
STRELOK
Отправлено: 14 Июня, 2011 - 12:36:18
Post Id



Гость


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


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




ООП это не только набор функций в классах, в основном это наследование, абстракция, переопределение методов и многое другое)
 
 Top
vanicon
Отправлено: 14 Июня, 2011 - 13:10:12
Post Id



Частый посетитель


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


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




В статье про ооп написано что этот механизм просто в понимании, но мне почему то не удается понять смысл применения этого механизма на практике, может кто нибудь сможет все же объяснить как работает этот механизм и где его стоит применять, а где нет.
Ну или хоть какой-нибудь примерчик выгодного для программиста использования ооп чтобы явно видно было простоту этого механизма


-----
Так было, так есть и так будет
 
 Top
White
Отправлено: 14 Июня, 2011 - 13:14:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




Будет иметь хоть какой то смысл, если реализовать в качестве синглтона (ограничив возможное число обьектов класса до одного) и запихнув вашу функцию bd_connect(а лучше db_connect) в конструктор. Можно также добавить в функциях что-то вроде
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $this->log = 'Имя Функции '.$_SERVER["REQUEST_URI"].' '.time().'\r\n';
  3.  

Будете знать сколько раз и какие функции вы вызывали.


-----
if(time()>1356048000) die();
 
 Top
Stierus Супермодератор
Отправлено: 14 Июня, 2011 - 17:07:40
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB