[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: хочу научится ООП
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
PHPLIVE
Читал во многих книгах про ооп, на многих ресурсах в голове каша помогите разобраться с нуля, а то пишу в процедурном стиле.
А хочется уметь читать php библиотеки, подключить их. Вообщем без наставника тяжело.
bestxp
почитай сначала про SOLID принципы =)
chee
PHPLIVE, объясню как относительно быстро въехать в ООП, перешагнуть через этот довольно высокий порог вхождения.

1. Надо начать в текущем или новом приложении, строить уровень абстракции, который будет объектым, но внутри будет содержать функции. Просто берешь функции группируешь в классы, методы у класса вызываешь не статически, а динамически, то есть сначала инстанс класса создаешь, а потом у него вызываешь методы. Это научит тебя инкапсуляции
2. Заменить все сложные ассоциативные массивы на DTO объекты. Это такие объекты которые имеют сеттеры и гетторы, в которые пихаешь данные. Делать в пределах построенного уровня абстракции из 1 пункта. Также переписать методы где передается больше 3 параметров на DTO, что бы вместо 4 параметров передавался объект, в котором структура была описана. Этот пункт научит тебя давать типы данным в твоём приложении.
3. Постепенно начинать переписывать свой код с использованием паттернов, но это только после первого и второго пункта. Потому что если ты выполнишь первые два пункта, то паттерны ты просто вынужден будешь применять даже не осознавая это.

Поясню за "быстро въехать" это порядком 1-3 месяца, такой плотной работы с кодом. Книги и прочая шелуха не научит тебя думать объектно, только практика с живыми объектами.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Ах да, я тут переписываю систему https://bitbucket.org/cheevauva/setcms, которая написана была на функциях и использовала файлы, так вот там будет ООП. Можешь следить за комитами, код там довольно простой.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Офигеть, как объяснили. Кашу в голове в стройный ряд алгоритмов переиначили...

Круть.

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

Это потом уже напридумали всяких паттернов и прочей лабуды, которой пугают маленьких детей.

Абстракции, уровни, слои и всякая ересь. Усложнить, дабы никто ничего не понял.

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

Двай попробую в двух словах.

Хочется умножить два на два. Да берем и умножаем:

$result = 2 * 2;


Но нет, так не годится. А вдруг захочется не на 2 а на 5 умножить?

Вводим переменную.

$var = 2;
$result = 2 * $var;


А вдруг не 2 нужно... Давай еще одну

$var = 2;
$yet = 2;
$result = $yet * $var;


А если много где?

$var = 2;
$yet = 2;
function vau($var, $yet)
{
return $yet * $var;
}
$result = vau($var, $yet);


А если вдруг захочется в разных местах такую функцию? Класс!!!

$var = 2;
$yet = 2;
class Ogogo
{
public function vau($var, $yet)
{
return $yet * $var;
}
}

$ogogo = new Ogogo;
$result = $ogogo->vau($var, $yet);


Эволюция.

Вся хрень заключается в том, что простое действие инкапсулируется теперь в кучу сложных и никому не нужных оболочек и прочих бяк. Для того, чтобы было проще понять обывателю.

Нужно только назвать действия более понятно. Нужно умножить одно число на другое - да нет проблем.

$calculator = new Calculator;
$result = $calculator->multiply(2, 2);


Все просто, понятно и прозрачно. Снаружи. Но нет же, это не всё. Нужно наворотить еще всякой херни, оправдывая тем, что вдруг что-нибудь еще не так да не эдак, да вдруг что-нибудь потом понадобится еще когда-нибудь. Налепить на это кучу паттернов, SOLID сюда присовокупить и так далее, хотя по сути нужно было всего навсего умножить два на два.

Это и есть ООП. А всё остальное - от лукавого. Придумки оверинжениров. :)

Если хочешь научиться ООП ради ООП - ну что ж, еще одним программистом меньше. :(
Я советую не торопится. Иначе попадешь в рабство фастфуда. ООП нужно пробовать издалека, веточкой, а не жрать полной ложкой, потому что так разрекламировано.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.