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]   

> Без описания
Stierus Супермодератор
Отправлено: 17 Июня, 2011 - 15:47:01
Post Id



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


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


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




"для того чтобы полностью скрыть реализацию функции в классе" ... что ты имеешь ввиду? Если можно - пример. Я правда не понимаю, что ты имеешь ввиду и не представляю кейсов, где это можно использовать.

Когда речь идет о ООП, С++ не стоит вспоминать, лучше уж java.
(Добавление)
Абстрактные классы в php тоже называются абстрактными классами, интерфейс - это другое и несет другие цели
 
My status
 Top
Slavenin
Отправлено: 17 Июня, 2011 - 16:33:57
Post Id



Посетитель


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


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




никогда нельзя точно сказать какие именно свойства объекта возьмет функция для своего использования. хотя здесь все спорно Улыбка в общем мне кажется ИМХО что так удобнее, когда все содержиться в одном месте и объект знает какие свойства ему необходимы. Я согласен что возможны сложности при таком подходе, но "мы не ищем легких путей"... Подмигивание а относительно с++ не абстрактные функции, а просто функции, память меня все же подвела Улыбка

C++ rullez Поклон

CODE (htmlphp):
скопировать код в буфер обмена
  1. Вот C++ синтаксис определения простого класса:
  2.  class Date {
  3.  private:
  4.   int dd;
  5.   int mm;
  6.   int yy;
  7.  public:
  8.   void Init (int d, int m, int y);
  9.   int Day ();
  10.   int Month ();
  11.   int Year ();
  12.  };
  13.  
  14. А вот определение одного из методов:
  15.  void Date::Init (int d, int m, int y)
  16.  {
  17.   dd = d;
  18.   mm = m;
  19.   yy = y;
  20.  }


если убрать определение переменных получаем интерфейс php

(Отредактировано автором: 17 Июня, 2011 - 16:37:03)

 
 Top
Stierus Супермодератор
Отправлено: 17 Июня, 2011 - 17:01:44
Post Id



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


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


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




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


То, что вы описываете, очень похоже на объекты данных, но реализовано на столько странно, что я сомневаюсь.
 
My status
 Top
Slavenin
Отправлено: 17 Июня, 2011 - 17:07:24
Post Id



Посетитель


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


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




Stierus пишет:
"никогда нельзя точно сказать какие именно свойства объекта возьмет функция для своего использования"

я точно знаю какая функция что возьмет и какие свойства удалит после использования.
Stierus пишет:
То, что вы описываете, очень похоже на объекты данных,

можно поподробнее? Улыбка
 
 Top
Stierus Супермодератор
Отправлено: 17 Июня, 2011 - 17:23:55
Post Id



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


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


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




у функции может быть множество аргументов ... 5, 10, 20 - много ... это не удобно, ибо путаемс + порядок надо помнить

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

Поэтому используют data transfer object - это объект, единственной задачей которого является получать, хранить и отдавать информацию. это то же самое, что массив, только с заранее всем известным списком элементов, описанным интерфейсом.

Так же их используют для группировки разных данных при пересылках между сервисами в СОА что бы сократить количество межсервисных запросов.
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 17 Июня, 2011 - 17:51:04
Post Id



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


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


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




Slavenin нам по наследству досталась старенькая админка.
Так вот в ней какраз такой принцип передачи параметров...
Я постоянно путаюсь - какие там параметры какой объект (или ф-ция) получил(а), а какой объект (или ф-ция) какие отдал(а)..
Куча рекурсивных вызовов.
Пока всю цепочку передачи проследишь - свихнешься.
 
 Top
Slavenin
Отправлено: 17 Июня, 2011 - 17:57:51
Post Id



Посетитель


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


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




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

DeepVarvar, именно для этого я сделал стек вызовов, где четко отслеживается из какого файла, какая функция какую вызвала и с какими параметрами Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Июня, 2011 - 18:00:50
Post Id



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


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


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




Slavenin пишет:
четко отслеживается из какого файла, какая функция какую вызвала и с какими параметрами

И зачем тогда лишняя "слежка"?
Единственное применение этой штуке я вижу для простенького шаблонизатора:
Дали параметр? - перепиши,
не дали? - ну и хрен с ним,
нечем было переписывать? - сотри совсем.
 
 Top
Stierus Супермодератор
Отправлено: 17 Июня, 2011 - 18:06:10
Post Id



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


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


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




Мы явно друг друга не поняли Улыбка Ладно, закроем эту тему. если нравится и все круто - используйте, что тут еще скажешь Улыбка
 
My status
 Top
Slavenin
Отправлено: 17 Июня, 2011 - 19:12:39
Post Id



Посетитель


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


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




хорошо, можно и закрыть Улыбка

только сейчас столкнулся с тем, что все-таки не ошибся переписав пяток классов под такую реализацию. в одном из них есть функция формирующая запрос, у нее есть несколько обслуживающих функций, как оказалось очень удобно внутри любой обслуживающей функции знать какие именно параметры запроса определены, это к вопросу "зачем?" Подмигивание
 
 Top
Stierus Супермодератор
Отправлено: 17 Июня, 2011 - 23:23:55
Post Id



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


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


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB