Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Обсуждаем, как правильно строить приложения
Ответить
Dromok
Сообщения: 35
Зарегистрирован: 2015.06.22, 20:34

Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение Dromok »

Здравствуйте.
Много лет программирую на PHP с использованием различных фреймворков в том числе и йии, но вообще не понимаю современные подходы к программированию, когда всё реализовано на геттерах, сеттерах и различных DI. Я пришел из мира быдлокодеров (начинал программировать в 2005 году), где даже просто использование классов казалось вершиной совершенства. И не понимаю где вообще про всё это можно почитать? Какую книгу по PHP не открою, только базовый синтаксис и т.д., а я всё это и так знаю, а вот конкретно современных описаний архитектур нет либо совсем чуть-чуть. Сейчас мне надо с нуля написать довольно масштабный скрипт без использования фреймворком и код будут смотреть профессионалы, поэтому хочу хотя бы чтобы мой код в их глазах выглядел более менее грамотным и современным.
Мне даже в соседней теме посоветовали для подключения конфига использовать DI, а я не то чтобы совсем не понимаю что это такое, но просто не понимаю его плюсы и вообще смысла такого подхода. Посоветуйте, пожалуйста, литературу или статьи.
Dromok
Сообщения: 35
Зарегистрирован: 2015.06.22, 20:34

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение Dromok »

Либо может быть готовый код на гитхабе посоветуйте, на примере которого можно понять современные подходы в программировании.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение samdark »

хочу хотя бы чтобы мой код в их глазах выглядел более менее грамотным и современным.
Не очень верное желание. Лучше уж написать нормально, а не делать видимость... когда делают видимость выходит навёрнуто, но от этого не грамотно и работать с таким хуже, чем с тем, что писалось без ООП.

http://slides.rmcreative.ru/2016/yii2-architecture/ — полистайте. В слайдах много интересных аббревиатур, можно про них почитать. Про ООП и SOLID в особенности. Видео тоже есть: https://www.youtube.com/watch?v=YXvGM9E ... c8zaXabDO-

На тему "зачем" ответить не так просто. Весь смысл вводить ООП и абстракции в том, чтобы большие сложные системы можно было уместить в голове. Пример из жизни: автомобиль. Мы можем уместить в голове сам автомобиль, педали, двери, как с этим всем управляться. При этом вся внутренняя кухня скрыта под капотом. Если бы всё торчало наружу, осмыслить это было бы очень тяжело.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение samdark »

Классические труды по ООП рекомендовать не буду. Они не очень просты для восприятия и ответ на вопрос "зачем" там найти тяжело.

Попробуйте найти в каком-либо проекте у себя то, что не удаётся целиком запихнуть в голову и растащить по отдельным классам, следуя принципам SOLID.
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение Loveorigami »

По DI - Начните с документации по Yii2, чтоб понять, для чего нужен DI.
Простейший пример.

У вас много модулей. Каждый из них выводит в index action по 10 записей.
Заказчик попросил, чтобы везде выводилось по 25, а в самом пагинаторе - кнопки 3 слева и 3 справа от выбранной страницы, ну и ко всему прочему - чтоб пагинация была обратной. (не 1,2,3...150, а 150, 149, 148...1)

подробнее тут
http://yiiframework.domain-na.me/doc/gu ... -container

ну а в нашем случае в config/bootstrap.php

Код: Выделить всё

Yii::$container->set('yii\data\Pagination', [
    'pageSizeLimit' => [1, 50],
    'forcePageParam' => false,
    'defaultPageSize' => 25,
    'pageSize' => 25,
]);

Yii::$container->set('yii\widgets\LinkPager', [
    'class' => \loveorigami\pagination\ReverseLinkPager::class, // обратный пагинатор https://github.com/loveorigami/yii2-reversed-pagination
    'activePageAsLink' => false,
    'maxButtonCount' => 7,
    .....
]);
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение zelenin »

Loveorigami писал(а): 2017.01.31, 12:24 По DI - Начните с документации по Yii2, чтоб понять, для чего нужен DI.
Простейший пример.

У вас много модулей. Каждый из них выводит в index action по 10 записей.
Заказчик попросил, чтобы везде выводилось по 25, а в самом пагинаторе - кнопки 3 слева и 3 справа от выбранной страницы, ну и ко всему прочему - чтоб пагинация была обратной. (не 1,2,3...150, а 150, 149, 148...1)

подробнее тут
http://yiiframework.domain-na.me/doc/gu ... -container

ну а в нашем случае в config/bootstrap.php

Код: Выделить всё

Yii::$container->set('yii\data\Pagination', [
    'pageSizeLimit' => [1, 50],
    'forcePageParam' => false,
    'defaultPageSize' => 25,
    'pageSize' => 25,
]);

Yii::$container->set('yii\widgets\LinkPager', [
    'class' => \loveorigami\pagination\ReverseLinkPager::class, // обратный пагинатор https://github.com/loveorigami/yii2-reversed-pagination
    'activePageAsLink' => false,
    'maxButtonCount' => 7,
    .....
]);
это все не di, а ограниченный yii-кейс.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение zelenin »

Dromok писал(а): 2017.01.31, 11:38 Либо может быть готовый код на гитхабе посоветуйте, на примере которого можно понять современные подходы в программировании.
samdark дал верное направление. От себя добавлю, что понимание (не заучивание) принципов SOLID делает level up в профессионализме программиста, восприятие программирования в целом и понимании как работают и должны работать приложения.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение ElisDN »

Dromok писал(а): 2017.01.31, 11:37 Какую книгу по PHP не открою, только базовый синтаксис и т.д., а я всё это и так знаю, а вот конкретно современных описаний архитектур нет либо совсем чуть-чуть.
Архитектура описана именно в отдельных в книгах по архитектуре на C#, Java и подобных языках, а не в самоучителях PHP.
Dromok писал(а): 2017.01.31, 11:37 Мне даже в соседней теме посоветовали для подключения конфига использовать DI, а я не то чтобы совсем не понимаю что это такое, но просто не понимаю его плюсы и вообще смысла такого подхода.
Да, я и советовал. Как говорил где-то здесь, любая архитектура придумана для облегчения сложного кода, а не для усложнения простого. Поэтому и видна становится только на сложных примерах.
Dromok писал(а): 2017.01.31, 11:37 Посоветуйте, пожалуйста, литературу или статьи.
Как раз посоветую сразу начать с практического интенсива по ООП и архитектурным подходам, который я сочинял и улучшал целый год. А потом перейти к прилагаемому к нему внутри списку литературы. Это ускорит изучение на несколько лет.
Последний раз редактировалось ElisDN 2017.02.01, 04:17, всего редактировалось 1 раз.
Dromok
Сообщения: 35
Зарегистрирован: 2015.06.22, 20:34

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение Dromok »

Все ответили по делу и очень помогли мне. Сообщество Yii самое лучшее! :)
Большое всем спасибо!
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение anton_z »

Есть простая книга для входа в ООП. Она не большая, все просто и разжевано, некоторое понимание даст. Для новичка в ООП самое то.
Примеры на Java, но это не должно быть проблемой.

http://www.piter.com/product_by_id/15386046
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Посоветуйте литературу по современным способам программирования (гетеры,сетеры,DI и т.д.)

Сообщение Loveorigami »

zelenin писал(а): 2017.01.31, 13:12 это все не di, а ограниченный yii-кейс.
Согласен... не заметил, что вопрос общий, а не в контексте yii2.
Ответить