«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/01/05 22:53:06  №1321460 1
Прошу помощи в смене парадигмы "пишу все в одном файле, похуй на стиль и синтаксис, все равно никто кроме меня не увидит" на нормальную. Всегда писал только для себя, даже в ООП не умею.

А когда читаю - не понимаю, нахуй оно надо, если только ты не работаешь с проектами в 500кк строк.

Посоветуйте, с чего начать и что почитать по этому поводу.
Аноним 2019/01/06 00:21:46  №1321483 2
>>1321460
>пишу все в одном файле
Выноси функции в отдельный файл библиотеки хотя бы, если их немного, если много - тоже разбивай на задачи\типы. Настройки всякие тоже в отдельной папке храни.
Я у себя ещё папку делают - \dev, куда валится всякая колбаса для разработки, формочки всякие, наброски кода\псевдокода, вроде как описание проекта.
Хотя сомневаюсь, что тебе это надо - ты, наверняка, сразу садишься писать что в голову взбрело, без описания задачи и т.д.

>в ООП не умею
Охотно верю.

>не понимаю, нахуй оно надо, если только ты не работаешь с проектами в 500кк строк.
Ты не напишешь ни одного более-менее толкового приложения меньше 1к строк. С нуля в смысле - без васянских либ. Но для школоскриптиков в 100 строчек это и правда - нахуй не надо. Тут ты прав.

>Посоветуйте
Ты в треде по ПХП. Советую читать ОПа.
Ответы: >>1330537
Аноним 2019/01/06 07:39:28  №1321536 3
Аноним 2019/01/06 10:13:45  №1321580 4
>>1321460
ООП не нужно. Почитай лучше СИКП.
Ответы: >>1321587
Аноним 2019/01/06 10:22:47  №1321587 5
>>1321580
Какой сикп блять, ты че. Мы хардкорные макакоиды, заставляем вкладку браузера жрать 4 гига памяти и грузить проц на 60% на отрисовку веб-странички.
Подключаем зависимости композера на несколько гигов, чтобы использовать оттуда функцию калькулятора.
Сикп, лол...
Ответы: >>1321598
Аноним 2019/01/06 10:33:39  №1321598 6
>>1321587
Нормально делай - нормально будет.
Аноним 2019/01/06 13:15:45  №1321698 7
>>1321460

Для начала научись правильно разбивать код на независимые функции. Скопирую из старого ответа:

-----

Видимо ты не понял идею разбиения кода на функции. Суть в том, что длинный кусок кода, который делает несколько вещей, сложно понять. Его сложно править, в нем много переменных, и можно нечаянно что-то сломать. Ну и физически прочитать 1000 или 10 000 строк кода быстро невозможно. Поэтому код разбивают на отдельные действия и выносят эти действия в функции. Так, что мы можем вместо огромной портянки кода читать только небольшую функцию, которая нас интересует.

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

Вот пример более адекватной функции:

/** 
* Принимает на вход целое число от 0 до 999 и возвращает его
* текстовое представление.

* Например, для числа 312 вернет "триста двенадцать".
*/
function spellNumber(int $number): string

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

echo spellNumber(123) . "\n";

Комментарий /** ... */ - это комментарий в формате phpdoc ( https://ru.wikipedia.org/wiki/PHPDoc ). Слово int и string - это тайп-хинты, советую их изучить:

- http://php.net/manual/ru/functions.arguments.php#functions.arguments.type-declaration
- http://php.net/manual/ru/functions.returning-values.php

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

-----

Почитай про хороший код: https://github.com/codedokode/pasta/blob/master/good-code.md

Там недописанный урок, потому самостоятельно погугли про "хороший код" и выпиши еще 5-10 правил.

Потом почитай про шаблоны и про MVC:

- https://github.com/codedokode/pasta/blob/master/php/templates.md
- https://github.com/codedokode/pasta/blob/master/arch/mvc.md

Если нужны книги - поищи "Совершенный код" (Code Complete), хотя он, может быть, будет сложноват тебе.

Наконец, ООП. В ОП-посте есть учебник и в нем есть глава по ООП. Для практики попробуй решить ООП-задачи и вкинуть на проверку:

- ООП-Гостиница: https://phpclub.tech/pr/res/1082507.html#1097078
- ООП-Математика: https://phpclub.tech/pr/res/1305368.html#1309814

Предыдущие решения этих задач можно найти на phpclub.tech.

Можешь также вкинуть примеры своего кода, может кто-то прокомментирует и укажет на ошибки. А может ты сам их увидишь после изучения ссылок.

Насчет "нужно" - конечно, нужно, как другой человек будет разбирать твой код?
Ответы: >>1321703 >>1330538
Аноним 2019/01/06 13:23:19  №1321703 8
>>1321698
Функции более широкое понятие нежели просто блок кода. Функция прежде всего выступает абстракцией, черным ящиком. Например функция возведения в квадрат, это механизм, черный ящик содержащий в себе механизм. Из таких маленьких механизмов можно строить более сложные. Вся программа это тоже черный ящик как и функция. В него опускают данные, и получают результат. Функция может принимать другую функцию, также как и программа можно принимать на вход другую программу.
Аноним 2019/01/19 23:05:29  №1330536 9
>>1321460
задавал этот вопрос пьяный, потом пил еще 2 недели, в процессе написал себе кучу полезного софта (работающего) по старым принципам "никто не увидит, хуячь все в один файл и нахуй форматирование, ООП тоже нахуй".

Итоги: говнософт работает, в офис меня не возьмут (потому что я тупой и не смогу переучиться), самооценка упала еще ниже.
Сейчас почитаю скудные ответы, приятно что их 5 штук (думал, будет ноль). Спасибо, ребята, хотя и подозреваю что там ничего хорошего в ответах нету.
Аноним 2019/01/19 23:08:57  №1330537 10
>>1321483
>Ты не напишешь ни одного более-менее толкового приложения меньше 1к строк. С нуля в смысле - без васянских либ. Но для школоскриптиков в 100 строчек это и правда - нахуй не надо. Тут ты прав.
Толковое приложение - это инстаграм или вакаба? Какая мне нахуй разница, сколько в проекте строк и как оно запускается, если оно быстро работает, не падает и делает свою работу? Я же не хайлоад пишу в 100500 рпс (как остальные в этом треде).
Ответы: >>1330542 >>1330623
Аноним 2019/01/19 23:16:04  №1330538 11
>>1321698
Я так понимаю, ты ОП этих тредов.
Спасибо за твой титанический труд, ты охуенен.


>Видимо ты не понял идею разбиения кода на функции. Суть в том, что длинный кусок кода, который делает несколько вещей, сложно понять. Его сложно править, в нем много переменных, и можно нечаянно что-то сломать. Ну и физически прочитать 1000 или 10 000 строк кода быстро невозможно. Поэтому код разбивают на отдельные действия и выносят эти действия в функции. Так, что мы можем вместо огромной портянки кода читать только небольшую функцию, которая нас интересует.

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

Я ПОНИМАЮ, что ты работаешь в команде, очевидно, где все погромисты должны читать код друг друга и тд, но я ведь один! Зачем мне самому устраивать в своей инфраструктуре хаос?

>То есть ты должен в идеале каждую функцию так описать.
Зачем мне ее описывать, если никто ее не увидит? Хороший тон?

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

И без обид, но я осмелюсь предположить - вам там про алгоритмы думать не сильно надо, надо сидеть и хуячить код. Грубо звучит, но все мои знакомые программисты так и работают.
Ответы: >>1330623 >>1331374
Аноним 2019/01/19 23:53:44  №1330542 12
>>1330537
> Какая мне нахуй разница, сколько в проекте строк и как оно запускается, если оно быстро работает
Хочу объяснить этот момент.
Все люди, кто рассказывал мне про правильный код, синтаксис и хуё-моё - были максимум разработчиками сайтов визиток или кривых магазинов где даже 1 rps нет, зато у них композер, грунт, докер и красивое форматирование.

Когда пытаешься с ними обсудить свои текущие задачи ("ты ж девелопер, подскажи ебана"), впадают в ступор.

Я на 100% уверен, что все что я писал выше - бред нуба, но это настолько заебало, что пришел сюда выговориться. Извините за крик души, и удалите если посчитаете нужным.

ОПу респект, материалы хорошо написаны и читать интересно.
Ответы: >>1331375
Аноним 2019/01/20 07:04:07  №1330623 13
>>1330537
>Какая мне нахуй разница, сколько в проекте строк и как оно запускается, если оно быстро работает, не падает и делает свою работу?
Это заказчику похуй, а не разработчику - это твоё дело. Тебе похуй пока ничего более-менее большого не писал, да и разрабатывать удобно - работаешь с отдельным модулем, а не всю простыню правишь в пяти разных местах а потом всё падает потому, что ещё в трёх пропустил и надо искать полдня дырку в логике, в файле на 1.5к строк. П - продуктивность..

>>1330538
>хуй потом разберешь что и где
>устраивать в своей инфраструктуре хаос
У тебя уровень проганья низковат для правильной оценки рекомендация PSR. Как начнёшь писать, как все нормальные кодеры пишут, так оценишь. Я тоже не сразу въехал во всё это, а теперь только так и делают. + ты начинаешь понимать что пишут другие, и другие тебя понимают. Но это уже промышленные стандарты.
Аноним 2019/01/21 02:45:08  №1331374 14
>>1330530

Поизучай код Симфони, например Symfony Forms, там есть и примеры ООП, и паттерны.

>>1330538

Не хочешь развиваться - не развивайся, дело твое. Я, наоборот, не понимаю, зачем писать плохой код и самому от этого огорчаться. Да еще и ограничивать свою карьеру. Вам нравится меньше денег получать?

> и выносить простой код в 100500 файлов, где хуй потом разберешь что и где.

Если непонятно - значит, это как раз плохо сделано. Вот попробуй ООП-гостиницу или ООП-будильник без ООП решить - получится код хуже.

> вам там про алгоритмы думать не сильно надо

Если ты думаешь про алгоритмы 2 часа и 6 часов пишешь код, то как оформление кода тебе мешает думать?

> В последние дни я заметил что больше времени уделяю форматированию кода

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

>>1330539

> Сначала мы создаем проблему, а затем героически ее решаем

И как можно "не создавать" проблему зависимостей? Изобретать велосипед и тратить на это лишнее время?

> Что оно делает с ним, грузит все в память одним куском, все скачанные пакеты?

Ну вот выяснил бы.
Ответы: >>1331377 >>1331377
Аноним 2019/01/21 02:46:00  №1331375 15
>>1330542

> Все люди, кто рассказывал мне про правильный код, синтаксис и хуё-моё - были максимум разработчиками сайтов визиток или кривых магазинов где даже 1 rps нет, зато у них композер, грунт, докер и красивое форматирование.

Одно к другому отношения не имеет. Как grunt (уже webpack) влияет на производительность PHP кода?

> сайтов визиток или кривых магазинов где даже 1 rps нет

Ты же не маленький и понимаешь, что важно не сколько rps, а сколько проект приносит прибыли (или хотя бы общественной пользы).

>>1330663

> Анончики, милые помогите, не запускается apache24 с php72, как можно понять почему он не хочет работать с LoadModule

А там версии совместимые? Ты не пытаешься расширение к старой версии PHP загрузить? Вообще, Signal 11 = SIGSEGV - говорит о баге где-то в коде (не твоем), и может тебе стоит написать баг-репорт разработчикам дистрибутива. Только перед этим проверить, что у тебя актуальные и совместимые версии библиотек.

>>1330877

Можно убрать, скобки нужны, если там вплотную идет текст.

>>1331333

float придумывался для вставки иллюстраций в текст с обтеканием их текстом. Но оказался удобен и для других применений (рскладки частей страницы), хотя сейчас его будет постепенно вытеснять flexbox.

> Я хотел бы уточнить правильно ли я понял как работает clearfix.

clearfix заставляет контейнер растягиваться, чтобы вместить все флоаты. Свойство clear добавляет элементу margin сверху так, чтобы он оказался ниже всех флоатов в потоке. Спецификация: https://www.w3.org/TR/CSS2/visuren.html#floats
Аноним 2019/01/21 02:53:28  №1331377 16
>>1331374
>>1331374
>Поизучай код Симфони, например Symfony Forms, там есть и примеры ООП, и паттерны.
ООП и паттерны - это антипаттерны, костыли чистой воды. Если разработчик о них говорит, изучает, то это показывает его низкую квалификацию.