Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Есть класс Human со свойствами и методами. Затем создаем сколько угодно экземпляров этого класса. В памяти лежат сколько угодно экземпляров (объекты $human1, $human2,.. со своими копиями свойств) и один набор методов. Смысл тогда методы делать static, если обращение будет проходить к одному и тому же участку памяти, т.е. их адрес как бы известен и не меняется (в отличие от свойств объектов, поэтому к ним обращаемся через $this)? Делать свойства static - понятно еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2016, 19:51 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2016, 23:56 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
знаешь в хейди скл когда делаешь хранимку, можно указать - хранимка не содержит скл инструкций, только читает, и вариант модифицирует данные. вот сдесь ситуация похожая. обычные методы, это значит что внутри себя они используют this, ибо им нужны конкретные значения полей(оперируют с состоянием обьекта ), в отличии от статических, которые оперируют состоянием класса - нобором статических полей, либо просто прилеплены как вспомогательная функция для работы со структурами данных используемых в функционале данного класса. ЗЫ ты прав, статический метод и не статический, это по сути просто функция, по адресу в памяти, и хранится одна для класса, а не для каждого обьекта. НО!!! у каждой подпрограммы своя область видимости, и туда, внутрь надо передать указатель на память, где хранится глобальное состояние! но для статичных методов, это состояние класса (набор значений статичных полей класса), а для не статичных - состояние обьекта. Разница в их вызове. а синтаксически, сразу понятно для чего этот метод - для работы с данными экземпляра, или класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 09:50 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, четко. понял, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 11:21 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Где-то я похожу тему недавно видел, http://www.sql.ru/forum/1225094/kakoy-smysl-delat-metody-static ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 12:20 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Hett, ага. Раньше я и с с# так же делал, благо разработчики тут сильные есть, кто может разъяснить и на уровне дизайна, и на техническом уровне. Когда одни и те же (либо очень похожие) идеи смотришь в разных языках, в итоге получается полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 14:26 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
летатель космосаHett, ага. Раньше я и с с# так же делал Вообще-то за подобные выходки банят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 14:29 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
FishHook, не знал. А за что? Если мне интересно, как одна и та же идея реализована в разных языках. Сейчас по необходимости пришлось пхп изучать. Стал читать про static и $this, и вдруг в голову пришел вопрос, о котором раньше и не задумывался. Т.к. пхп, то спросил в этой ветке. Потом пошел в ветку по яве, потому что этот язык тоже интересен. В с# наверняка будет все тоже самое: и почему static ввели на уровне дизайна, и его главное отличие на техническом уровне (отсутствует неявный параметр). С трейтами пока только в пхп столкнулся - в ява и c# запрет на множественное наследование обходят с помощью интерфейсов. И это обход только из-за ограничений дизайна языков. Разве такие нюансы не интересно узнать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 14:47 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Реализация какого-нибудь фабричного паттерна, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 14:57 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Hett, до паттернов я пока не дорос:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 15:29 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
летатель космосаHett, до паттернов я пока не дорос:) мольеровский Журден не знал, что всю жизнь говорил прозой..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 15:33 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
летатель космоса, ну множественное наследование, это уже не наследование ооп. 1)например простой логический эксперемент. допустим мы как джедаи SOLID создали два класса, - каждый отвечает за одну задачу. вопрос, за сколько задач будет отвечать потом обоих? 2) идея наследования ооп, это доопределение и переопределения поведения обьекта, а не получение поведения на основании синтеза поведения нескольких обьектов. идея ооп(П = подход) пошла в два направления - прототипное и класический вариант - через классы. для прототипного аналогом мультинаследования будет мультиклонирование. во втором легче понять что подобное, это уже просто синтез кода. это как если бы мы имели 2 модуля с набором функций(аля две библиотеки) и получали третью путём синтеза нобора функций из обоих. === как по мне, идея с трейтами, это хорошая идея. тоесть когда трейт это не класс, это лишь часто используемый код в классах напримр сделал себе трейт - патерн синглтон, и вперёд. можно сделать класс синглтон, и потом мультинаследоваться, но SOLID полети к чёртям, а следом и идея ООП(П = проэктирования) хотя в С++ именно развита идея мультинаследования, хотя с другой стороны от сишников реже слышишь про патерны, солид, и прочее. для соблюдения солид, класы предки должны быть взаимоабстрактны. интерфейсы взаимообстрактны по определению(не имеют реализации одинаковых методов) а вот для классов это уже не так. тут как карта ляжет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 03:12 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453идея наследования ооп, это доопределение и переопределения поведения обьекта, а не получение поведения на основании синтеза поведения нескольких обьектов. Хм. Тогда смысл наследования я изначально понял не верно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 10:05 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
летатель космосаХм. Тогда смысл наследования я изначально понял не верно... почему же сразу "неверно"? есть разные взгляды и подходы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 10:18 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Изопропил, вы правы - я поторопился. Точка зрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 13:28 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Изопропиллетатель космосаХм. Тогда смысл наследования я изначально понял не верно... почему же сразу "неверно"? есть разные взгляды и подходы неа.. есть истроия развития ООП, и наследование единичное. а есть ...не знаю как назвать, пускай подход - мультинаследования, тоесть упрощаем архитектуру защёт мультинаследования... этот подход очень критикуется, является источником ошибок, и содержит кучу проблем - под проблеммой имеется ввиду не определённости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 11:41 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Например. 1) Клас А родитель Б 2)А и Б родители С - вопрос, у с должен быть метод А оригинальный, или перекрытый из Б? 3) А Б С родители Е - а когда конструктор вызываеться у Е, сколько раз конструктор А должен вызватся??? один - не спешите... классы Б С в своем конструкторе могут содержать код который меняет поведение конструктора предка А, много раз - тоже не спешите...конструктор может добавлять в множество елементы. 4) Есть А и Б, мы от них создали потомки(каждый потомок обоих) Е и ЕЕ, ЕЕЕ , ЕЕЕЕ вроде они потомки, тоесть должны быть полиморфны, но ведь если они полиморфны, тогда не понятно почему не сделать было класс АБ - зачем разбиение? а раз всётаки разбиение есть на два отдельных, а математически можно доказать, что либо нет смысла разбиения класса - это разрыв одного целого на двое а потом склеили, либо не все потомки пары А Б будут полиморфны.... и вот тут приходм к интересному результату. наличие обьектов делает язык обьектным, но не обьектно ориентированным наличие наследования, делает обьект обьектно ориентированным, но полноценным язык оопешным делает именно полиморфизм, без него это обьектно ориентированное програмирование абстрактными типами. инными словами, в класическом понимании ооп, и ооп подхода - нет полиморфизма для потомков стопроцентного - нет ооп 100% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 11:48 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453а есть ...не знаю как назвать множественное. интерфейсы - тоже зло? (а ведь это всего навсего чистые абстрактные базовые классы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 12:38 |
|
||
|
[PHP] Какой смысл методы делать static, если они не инстанцирутся, как объекты от класса?
|
|||
|---|---|---|---|
|
#18+
Изопропил, я незнал как назвать вплане - подход, или идея, или методика, или направление, или концепция... :) не силён в лингвистике :) интерфейсы - тоже зло? (а ведь это всего навсего чистые абстрактные базовые классы) вообщем то нет. интерфейсы - это не совсем часть архитектуры...я имею ввиду, с позиции - ооп это парадигма, улудшающая повторное использование кода. так вот интерфейсы ни на грам не улудшают саму возможность использовать повторно код. Абстрактный класс улудшает, сегдоня сделали папу без единого поля метода, завтра втулили ему в конструктор логирование времени создания и имя вызывающего класса - вот и улудшенное повторное использование - не надо строку логирования прописывать в куче мест. а вот интерфейсы, они улудшают сам процесс повторного использования кода - являясь инструментом контроля целостности!!! это как внешний ключ является инструментом контроля целостности - тоесть заставляет субд убедится что существует запись на которую ссылаемся, интерфейс заставляет убеждаться что ссылающийся класс(тот что имплементирует интерфейс) обладает достаточными методами. можешь программировать без интерфейсов, не потеряешь ничего вплане кода, потеряешь время - вплане большего числа ошибок, когда из 10 классов которые должны уметь делать действие1, действие2, действие3, окажется что парочка из них этого делать не умеет, или область видимости нета. ЗЫ кстате вопрос на пхп собеседованиях про чем отличаются абстрактный класс и интерфейс, это глупость. палец и пиписька тоже чем-то похожи, чем то отличаются, но никто ведь не будет спрашивать - что общего и в чом отличие... в подобных случаях, задают вопрос - провести паралель между А и Б, если а и б впринципи разные вещи, но хочеться спросить сразу про обе, и чтоб с нюансами под какимто углом зрения. это как что общего и в чём различие TCP и UDP пакета - вопрос уместен, ибо ито ито строиться поверх ТСP/IP пакета - это как два потомка одного родителя, и сопрос уместен, что у них общее, а где различаються. и провести паралель между redis и rabbitmq вплане реализаци очереди. бесмысленно спросить что общего и разного у них. у них все разное - но в контексте определённого использования можно провести паралель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 08:21 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=39289384&tid=1460969]: |
0ms |
get settings: |
10ms |
get forum list: |
24ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 436ms |

| 0 / 0 |
