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]   

> Без описания
wedoca
Отправлено: 19 Ноября, 2013 - 08:30:27
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2013  


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




Помогите пожжжалуйста новичку в ООП.
У меня есть несколько функций, результат которых - массив с полями товара.
С классами в теории знаком.. но как это все дело собрать в одну кучу - теряюсь...
В идеале, обращение к БД должно быть один раз, если на странице имеется несколько обращений к моему не существующему классу.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.         function dbRequest($table,$sort){
  4.                 mysql_connect("localhost", "bd_name", "password");
  5.                 mysql_select_db("user");
  6.                
  7.                 $result = mysql_query("SELECT * FROM ".$table." ORDER BY ".$sort." DESC"); //b_iblock_element_property         
  8.                 $news = array();
  9.                 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  10.                          $news[] = $row;
  11.                 }
  12.                 mysql_free_result($result);
  13.                 return $news;
  14.         }
  15.                
  16.         function propertyesKey($prop_id){
  17.                 $propertys=dbRequest("b_iblock_property","ID");
  18.                 foreach($propertys as $prop_list){
  19.                         if($prop_list["ID"]==$prop_id){
  20.                                 $name=$prop_list["NAME"];
  21.                         }
  22.                 }
  23.                 return $name;
  24.         }
  25.        
  26.         function propertyList($element_id){
  27.                 $property_list=array();
  28.                 $property_value=dbRequest("b_iblock_element_property","IBLOCK_PROPERTY_ID");
  29.                 foreach($property_value as $cell=>$value){
  30.                         if($element_id==$value["IBLOCK_ELEMENT_ID"]){
  31.                                 $property_list[$value["IBLOCK_PROPERTY_ID"]]=array(
  32.                                         "NAME"=>propertyesKey($value["IBLOCK_PROPERTY_ID"]),
  33.                                         "VALUE"=>$value["VALUE"]
  34.                                 );
  35.                         }
  36.                 }
  37.                 return $property_list;
  38.         }
  39.        
  40.         function elementID($id){
  41.                 $element=dbRequest("b_iblock_element","id");
  42.                 foreach($element as $key=>$list){
  43.                         if($id==$list["ID"]){
  44.                                 $element_array=$list;
  45.                                 $element_array["PROPERTY"]=propertyList($list["ID"]);
  46.                         }
  47.                 }
  48.                 return $element_array;
  49.         }
  50. ?>
  51.  
  52.  
  53. <!doctype html>
  54. <html>
  55. <head>
  56. <meta charset="UTF-8">
  57. <title>bElement</title>
  58. </head>
  59.  
  60. <body>
  61. <pre>
  62.         <? print_r(elementID(778));?>
  63. </pre>
  64. </body>
  65. </html>
  66.  



Выводимый результат
CODE (text):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [ID] => 778
  5.     [NAME] => Стол и 4 стула
  6.     [PREVIEW_TEXT] => Столешница покрыта меламином - устойчивая к воздействию влаги и повреждениям отделка, которую легко поддерживать в чистоте.
  7.    ...
  8.    ...
  9.     [PROPERTY] => Array
  10.         (
  11.             [99] => Array
  12.                 (
  13.                     [NAME] => Максимальная цена
  14.                     [VALUE] => 7000.00
  15.                 )
  16.                         ...
  17.                         ...
  18. )
  19.  
 
 Top
tato
Отправлено: 20 Ноября, 2013 - 02:42:06
Post Id



Посетитель


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


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




Делаете файл например Model.php в нем пишите класс:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Model
  3. {
  4.     public function dbRequest( $table, $sort )
  5.     {
  6.         // Ваш код
  7.     }
  8.  
  9.     public function propertyesKey( $prop_id )
  10.     {
  11.         // Ваш код
  12.     }
  13.  
  14.     // и т.д. для каждой фуекции
  15.  
  16. }
  17.  


Т.е. все ваши функции становятся методами класса Model.

Далее в подключаете файл нде надо:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <!doctype html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>bElement</title>
  7. </head>
  8. <body>
  9. <pre>
  10.     <?php require_once 'Model.php'; ?>
  11.  
  12.     <?php
  13.        $model = new Model;
  14.        print_r( $model->elementID( 778 ) );
  15.    ?>
  16. </pre>
  17. </body>
  18. </html>
  19.  

В коде выше мы сначала подключили файл с классом Model, далее создали его экземпляр ($model = new Model;) и в конце вызвали метод elementID()

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

Еще кстати заморочиться автолоадом

(Отредактировано автором: 20 Ноября, 2013 - 02:43:10)



-----
просто ?: сложно
 
 Top
AmsTaFF
Отправлено: 20 Ноября, 2013 - 09:32:08
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013  
Откуда: Россия, Москва


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




tato пишет:
По хорошему что бы было ООП, надо разделить все это дело на объекты подумать над инкапсуляцией, сделать абстракцию для моделей, вынисти подключение к бд в отдельный класс(ы) и т.д.

Еще кстати заморочиться автолоадом


По-моему новичку, который только знаком с теорией рановато задумываться обо всех этих вещах Улыбка
 
 Top
tato
Отправлено: 21 Ноября, 2013 - 00:00:01
Post Id



Посетитель


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


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




AmsTaFF пишет:

По-моему новичку, который только знаком с теорией рановато задумываться обо всех этих вещах


По-моему садясь за руль авто многие давят на пидаль и едут, однако почему-то надо знать ПДД.

Судя по вопросу ТС с теорией Он знаком не очень, так почему бы не подсказать человеку, что лучше сейчас подтянуть?


-----
просто ?: сложно
 
 Top
dzirt68
Отправлено: 21 Ноября, 2013 - 18:35:18
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Дек. 2011  


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




это же битрикс? если надо что по битре, пиши подскажу)
 
 Top
AmsTaFF
Отправлено: 25 Ноября, 2013 - 14:41:25
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013  
Откуда: Россия, Москва


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




tato пишет:
AmsTaFF пишет:

По-моему новичку, который только знаком с теорией рановато задумываться обо всех этих вещах


По-моему садясь за руль авто многие давят на пидаль и едут, однако почему-то надо знать ПДД.

Судя по вопросу ТС с теорией Он знаком не очень, так почему бы не подсказать человеку, что лучше сейчас подтянуть?


Не совсем "хороший" пример с ПДД, ведь их выучил и свободен, а с программированием увы не так Недовольство, огорчение

Хотел написать много текста, но я согласен, изучение или даже простое ознакомление перечисленного вами списка поможет автору "ощутить" значение класса/объекта
 
 Top
tato
Отправлено: 28 Ноября, 2013 - 03:07:08
Post Id



Посетитель


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


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




AmsTaFF пишет:

Не совсем "хороший" пример с ПДД, ведь их выучил и свободен, а с программированием увы не так


А что не так-то? В программировании тоже выучил и свободен. И в ПДД и в программировании только опыт поможет понять, что и как, но если Вы не понимаете основ, то все тлен.

Первая строка ТС:
wedoca пишет:
Помогите пожжжалуйста новичку в ООП.

Рассказать как собрать в кучу - это одно, помочь с ООП это другое. По-этому Я и написал:
tato пишет:
По хорошему что бы было ООП, надо разделить все это дело на объекты подумать над инкапсуляцией, сделать абстракцию для моделей, вынисти подключение к бд в отдельный класс(ы) и т.д.


Именно новичку и нужно задумываться о таких вещах, т.к. опытные на автомате прорабатывают это все

(Отредактировано автором: 28 Ноября, 2013 - 03:08:43)



-----
просто ?: сложно
 
 Top
AmsTaFF
Отправлено: 28 Ноября, 2013 - 09:02:05
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013  
Откуда: Россия, Москва


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




согласен
 
 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