|
2 / 2 / 0
Регистрация: 20.12.2012
Сообщений: 52
|
||||||
MVC - правильное использование наследования29.08.2013, 20:11. Показов 5750. Ответов 59
Метки нет (Все метки)
Всім добрий день. Я намагаюсь розібратись з MVC і написати свій "велосипад"(фреймворк) - чисто для досвіду і щоб зрозуміти як це все працює. Знайшов в інтернеті статтю с файлами по цій темі(файли прикріпив).
Насколько я понял, из этой статьи, все контроллеры наследуются от базового контроллера. Здесь и вопрос - что именно они должны наследовать. В файлах которые я прикрепил находится такой код:
Документацию по ним читал, но не совсем понимаю что они делают именно в этом примере.
0
|
||||||
| 29.08.2013, 20:11 | |
|
Ответы с готовыми решениями:
59
Сеттеры в PHP. Правильное использование Правильное использование пространства имен |
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 02.09.2013, 21:56 | |
|
0
|
|
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
|||||||||||
| 02.09.2013, 22:10 | |||||||||||
|
Вы в коде обращаетесь к свойству. Что дальше происходит - дело десятое. Никому не видное. Я допустим открываю доку и вижу
1. Свойство закрытое? Да. 2. Метод публичный? Да. 3. Обращаемся к закрытому свойству? Да. Вот тут и косяк, нарушающий инкапсуляцию. 4. Публичный метод обращается к закрытому методу? Да. 5. Противоречит это принципам инкапсуляции? Да. Это для обратной совместимости сделано.
0
|
|||||||||||
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|||||||||
| 02.09.2013, 22:23 | |||||||||
![]()
0
|
|||||||||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
|||||
| 02.09.2013, 23:05 | |||||
|
А вы допускаете такую вольность, хотя в документации класса (а объявление доступов к свойствам в шапке, это априори документация класса и есть, я не говорю уже о PHPDOC) черным по русскому написано - НИЗЯ! И пытаетесь после этого рассуждать о незыблимости принципов инкапсуляции. Мой принцип прост. Всего навсего несколько слов. Это кстати главное правило техники безопасности. А вы можете дальше крутиться ужем, ставить эксперементы и плевать на правила. Давно уже понятно, что вам нечем крыть, но страшно потерять марку всезнайки. Успокойтесь, ни кто на вашу девственность не посягает.
0
|
|||||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
|
| 02.09.2013, 23:11 | |
|
Ах, да. Оставляю за вами право последнего слова.
Тема действительно себя исчерпала.
0
|
|
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|||||||||
| 02.09.2013, 23:24 | |||||||||
![]() Не по теме: как всегда, ожидаемо, что. Нечего ответить - вперед за оскорблениями. В таком случае, позволю себе поделиться ссылкой на правила форума. Я нигде не оскорблял вас, лишь пытался объяснить, что вы не правы с моей точки зрения.
0
|
|||||||||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
||
| 02.09.2013, 23:40 | ||
|
Не удержусь все таки. Теперь уже точно все.
Я тоже в сотый раз повторяю - если свойство объявлено недоступным из вне, даже пытаться нельзя. Как минимум получите ошибку, как максимум можете получить логическую ошибку, что гораздо страшнее. Ну и уж нарушение тут точно на лицо. Если сказано - нельзя, значит нельзя. Даже пытаться. А если логика строится на принципах "если нельзя, но слишком хочется", то это не логика, а кистень. Все, спокойной ночи. Простите, если задел за живое. Был трудный день, еще и до вас не доходит элементарщины. Ничего личного, это просто общие фразы, обычно применяемые на форумах. Постараюсь изучить правила. Не по принципу фреймворка, обещаю.
0
|
||
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||
| 02.09.2013, 23:50 | ||
|
Использование геттера позволяет исправить это - поставить часового, к примеру. Который увидит, что ты пытаешься срезать провод, и сделает что-то. Что именно - зависит от его задачи (реализации). Это может быть и кусок подобного провода. Может и дать по рукам. Может отключить счетчик. Что здесь сложного для понимания и где нарушается принцип инкапсуляции? Добавлено через 1 минуту
0
|
||
|
694 / 534 / 40
Регистрация: 22.06.2009
Сообщений: 1,293
|
||
| 02.09.2013, 23:54 | ||
|
Я нить разговора потерял уже.
1. Если свойство будет использоваться снаружи класса, то его всегда нужно делать публичным? 2. В каком случае нужно делать сеттеры и геттеры для свойства? Или вообще никогда их не делать? 3. __set() и __get() пользоваться вообще никогда нельзя или можно в каких то случаях? По этим трем вопросам я так и не понял вашу позицию. Позицию KOPOJI по этим же вопросам я понял, может и неправильно, но понял. Он говорит о том, что 1. Свойство делать публичным нужно в очень редких случаях. 2. Стараться пользоваться сеттерами и геттерами чаще, потому что они позволяют избавиться от ошибок с неверными данными в свойстве. 3. При необходимости, если так решил программист можно пользоваться __set() и __get() Озвучьте пожалуйста вашу позицию.
1
|
||
| 03.09.2013, 00:04 | |||||||||||
|
Не по теме: я его позицию тоже так и не понял. Сначала одно, затем другое..
0
|
|||||||||||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
||||||||||||||
| 03.09.2013, 08:01 | ||||||||||||||
|
1. Да. Однозначно. Только тут нужно понимать разницу между самим свойством и его значением. Если требуется именно обращение к свойству снаружи, оно должно быть публичным. Если требуется его текущее значение (получить или изменить), то само свойство может быть и с закрытым доступом, но если оно закрыто, обращаться (и даже пытаться) к нему напрямую нельзя. Только через публичный геттер, сеттер. Не магический, это важно. Иначе это нарушает принципы инкапсуляции:
Еще есть способ хранения перегруженных свойств в массиве, но это тоже костыль. Пользовательские сеттеры и геттеры указывают на действие перегрузки явно, это не противоречит принципам инкапсуляции. Так как мы не сами пытаемся обратиться к закрытому свойству, а пользуемся предоставленным классом публичным интерфейсом. В коде так:
3. Использовать __set() или __get() можно для других нужд. Допустим для того же предупреждения об отсутствии свойств в классе. Либо для передачи неопределенного свойства в какой-то специально для этого предназначенный метод или класс. Тут важно знать, что свойство, определяемое динамически, имеет публичный доступ. Можно еще придумать применения, все зависит от фантазии. Главное не нарушать законов. Уголовный кодекс нужно чтить (С) О.Бендер.
0
|
||||||||||||||
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||
| 03.09.2013, 09:15 | ||
|
0
|
||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
|||
| 03.09.2013, 09:48 | |||
|
Не выдергивйте фраз из контекста пожалуйста. Мы обсуждали магические сеттеры/геттеры для перегрузки защищенных или закрытых свойств. Тут я от своих слов не отказываюсь, от лукавого конечно. Для публичных - пожалуйста. Только в этом нет смысла.
В PHP много интересных вещей, которые вроде как работают и описаны в доке, но пользоваться ими моветон. Допустим GOTO, eval, модификатор "е", global, те же незабвенные магические(!) кавычки... Я не говорю, что использовать их табу, но любое их применение на грани (если не явно, как в вших примерах) костыльности. А это не гут, этого следует избегать.
0
|
|||
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|||||||||
| 03.09.2013, 10:15 | |||||||||
Вам еще раз повторить?Просто чтобы было? Я уже говорил, и мое мнение не изменилось: 1. Вы просто тролль (имхо, несостоявшийся) 2. Вы не понимаете много относительно надобности того или иного (использование магических методов, фреймворков), но считаете, что, если вы не понимаете этого, значит это говнокод и это никому не нужно. 3. Вы считаете, что вы всегда правы, независимо от того, что вам говорят все вокруг
0
|
|||||||||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
||||||
| 03.09.2013, 10:38 | ||||||
|
Я свою позицию обозначил четко и вполне доступно. Если у кого-то еще возникут вопросы, отвечу. Продолжать бессмыслицу не имею возможности. ![]() (Вопрос риторический)
0
|
||||||
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|||||||
| 03.09.2013, 10:59 | |||||||
|
Добавлено через 3 минуты - Дружок, хочешь расскажу тебе сказку про белого бычка? - Хочу! - Дружок, хочешь расскажу тебе сказку про белого бычка? - Хочу!! - Дружок, хочешь расскажу тебе сказку про белого бычка? - Хочу!!!" Бесполезно, как со стенкой, ей-Богу..
0
|
|||||||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
|
| 03.09.2013, 11:03 | |
|
Свою позицию я резюмировал здесь. Там есть и про инкапсуляцию, и про доступные свойства, и про должное применение магических сеттеров. Кому нужно, прочитают. Я не для вас писал, а по просьбе Firefox__. С вами давно все понятно. Не напрягайтесь больше.
0
|
|
|
Почетный модератор
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||||
| 03.09.2013, 11:07 | ||||
|
0
|
||||
|
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
|
||||
| 03.09.2013, 11:14 | ||||
Это вам привычно, что стартовый пост висит на всех страницх. А я привык, что отвечаю на предыдущий пост. Это кстати в вашем духе, сделать не как у всех, все запутать и решить, что так удобно. ![]() Alorian, конечно же. Прошу прощения. Хотя и ТС косвенно тоже касается, не так уж я и ошибся.
0
|
||||
| 03.09.2013, 11:18 | |
|
0
|
|
| 03.09.2013, 11:18 | |
|
Правильное использование include (PHP) Правильное использование своих библиотек в модели Правильное построение паттерна "MVC"
использование наследования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|