Просмотр полной версии : Нужен совет бывалых PHP
Solution
10.08.2019, 17:45
Решил освоить на хороший уровень php, с java и net в вебе не очень удобно для мелких задач требущих примитивной логики, слишком много лишних теложвижений.
Прошу совета в обучении с чего начать и что почитат.
Первым делом интересуют общие принципы програмирование на данном языке, какие то может общие правила написания кода.
Вторым, проектирование проекта(не интересны фреимворки).
Третим, это работа с бд, сокетами, апи.
Очень прошу если решили помочь, то давайте литературу которую сам прочли, а не слышали от кого то.
Спасибо за внимание.
GitHub - piotrplenik/clean-code-php: :bathtub: Clean Code concepts adapted for PHP (https://github.com/jupeter/clean-code-php)
:bathtub: Clean Code concepts adapted for PHP. Contribute to piotrplenik/clean-code-php development by creating an account on GitHub.
github.com
GitHub - alexeymezenin/laravel-best-practices: Laravel best practices (https://github.com/alexeymezenin/laravel-best-practices)
Laravel best practices. Contribute to alexeymezenin/laravel-best-practices development by creating an account on GitHub.
github.com
https://www.sonarsource.com/docs/CognitiveComplexity.pdf
PHP: Hypertext Preprocessor (https://www.php.net)
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
www.php.net
Desquire
11.08.2019, 18:58
Кик скинул отличные ссылки.
На счёт фреймворков - на вкус и цвет.
В любом случае сначала ресерч, а потом уже пиши новое.
Есть кучи хороших пакетов.
Так же и мини фреймов.
Могу добавить ещё о некоторых фишках -
По возможности композер. Не вижу проектов где не будут использоваться какие-либо контрибные либы.
Для дебага: xdebug must have (привет @kick (https://forum.antichat.xyz/members/890001/) который по странному дебажит).
Так же для дебага: blackfire - проанализировать приложение и поиска чего отредактирить.
GrumPhp - для контроля качества кода.
Или до минимума phpcs phppmd.
( В идеале настроить так, чтобы при комитете проверялись изменённые файлы).
Так же для проверки качества кода - Sonarqube.
При этом это не только для пхп) Но это уже для крупных проектов с большой тимой)
По возможности композер. Не вижу проектов где не будут использоваться какие-либо контрибные либы.
Ну это уже не относится к php, хоть и является его пакетным менеджером.
Для дебага: xdebug must have (привет @@kick который по странному дебажит).
Я отлично дебажу , но мне лень xdebug настраивать).
Так же для дебага: blackfire - проанализировать приложение и поиска чего отредактирить.
Ну раз такая пляска, то еще для дебага:
The VarDumper Component (Symfony Docs) (https://symfony.com/doc/current/components/var_dumper.html)
The VarDumper component provides mechanisms for extracting the state out of any PHP variables. Built on top, it provides a better dump() function that you can use instead of var_dump. Installation …
symfony.com
GrumPhp - для контроля качества кода.
Не нужная вещь
Или до минимума phpcs phppmd.
( В идеале настроить так, чтобы при комитете проверялись изменённые файлы).
phpcs не для контроля качества кода. Но он из коробки априори должен идти. В современных фреймворках разработчики сами его предоставляют или в кастомных библиотеках. А во многих кастомных библиотеках, требование для пулл реквеста обязательно перед коммитом и пулл реквестом использовать cs fixer.
Раз такая пляска пошла, дальше дефолта с чем начинать новичку, то туда же php unit.
Travis CI и полная автоматизация билдов и запуска в вм. Кстате Travis CI полностью позволит даже выполнять юнит тесты определенные. Использование конечно же под капотом Symfony компонентов, так как на них строятся все крупные приложения. И нет не 1 проекта, который бы не использовал какой то из компонентов Symfony.
Помимо этого, рекомендуемая среда для разработки PhPStorm. Которая позволяет выставить брекпойнты и что находится в определенной функции и имеет кучу плагинов и настроек для работы.
Так же я очень сильно забыл упомянуть 1 полезную вещь, которую наверное надо самой первой читать это PSR:
PHP Standards Recommendations - PHP-FIG (https://www.php-fig.org/psr/)
We're a group of established PHP projects whose goal is to talk about commonalities between our projects and find ways we can work better together.
www.php-fig.org
Конечно если хочется дальше и сложнее приложения, с полностью ORM базы данных то стоит присмотреться к паттерну DataMapper, который предоставляет Doctrine, Spot ORM.
Из сложных и довольно гибкого и легкого в изучение то одназначно фреймворк Laravel, но стоит учесть тот факт, что его хорошо использовать в серьезных и крупных приложениях, так как в более простых и 90% функционала и возможностей не будет использоваться и учитывая сколько он тянет библиотек и зависимостей за собой, то их просто не реально все использовать на полную катушку. Если интересует из микрофреймворков, то Slim будет идеален, роутинг и DI. Остальное ты пиши и дописывай сам и крути как угодно и как ты хочешь, весьма идеален не для огромных приложений.
И для API, обязательно ставить Postman
Desquire
11.08.2019, 20:33
Ну это уже не относится к php, хоть и является его пакетным менеджером
Не раз видел, когда тупо скачивали библиотеку и просто закидывали в нужную папку.
Ну раз такая пляска, то еще для дебага:
Тоже самое что использовать var_dump
Дебаг на нативном окружении настраивается 1 раз.
Если ты там используешь докер, вариант, или т.п.
То тоже настраивается 1 раз, и потом не нужно использовать что-то ещё.
Не нужная вещь
Если ты не использовал, это не значит что это не нужная вещь.
Если ты пишешь сам приложении, без команды и комиты летят раз в день то да. Толку нет.
Он позволяет настроить проверку до комита - обновлен ли Лок файл композер, валидирует ямл файлы, дёргает пхпкс и т.п.
phpcs не для контроля качества кода
Не согласен.
При правильной настройке его как раз используешь как контроль самого себя.
За пол года- год ты уже все запомнить можно. Но, при правильной настройке ты тупо не можешь закомитеть без флага -n
Если кто-то сделает это, то при следующем изменении файла опять будет ошибка.
Но опять же, если крупный проект и команда. Или ты сам хочешь делать ах.. хороший код)
На счёт текстов - опять же, писать их надо, но кто их делает? Проблема не в неумении, а в нежелении трать свое время или деньги.
На деле, даже в крупных компаниях и 25 процентов проектов без тестов. ( Есть же куа мануальщики)
Я только для контриб модулей писал
Про СI зависит от требований.
Если только локальное окружение, то какое там ...
Да и всегда есть куча аналогов ( я например ярый фанат гитлаб сиай)
Да и всегда есть куча аналогов ( я например ярый фанат гитлаб сиай)
Одна из главных проблем гитлаба, это то что он дико течет и нужно не мало ресурсов. Я ярый фанат gogs, форк от него gitea который вообще не требует ресурсов, частые обновления и разрабатывается большим комьюнити, в отличие от gogs где 1 китайцем. При этом можно запустить даже на Raspberry PI.
Desquire
12.08.2019, 19:54
Не нужная вещь
Вот сегодня после копипаста забыл поправить... и решил комит сделать.
Форматирование (BB-код):
GrumPHP detected a pre-commit command.
GrumPHP is sniffing your code!
Running task 1/6: Composer... ✔
Running task 2/6: JsonLint... ✔
Running task 3/6: Phpcs... ✘
Running task 4/6: PhpLint... ✔
Running task 5/6: PhpStan... ✔
Running task 6/6: YamlLint... ✔
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄
▄▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▌
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▌
▄███▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▌
█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▌
▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▌
▀█▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▌
▀▀▓▓▓▓▓▓▓▓▓▓▓▓█▀ ▀▀▀▀▀▀▀▀▀▀▀▀████ ███████▄
▄███████ ██████████
███████▀ ▀▀▀▀▀▄ ▄▀▀▀▀▀ █████ ▀
▐████ ▐██ ▐██ ████▌
████▌ ███
▌██▌ ▄▄ ▄▄ ▐███
███ ▄▄▄▄▄▄▄▄▄▄▄▄ ▐███
██▄ ▐███████████████ ███████████
█▀███████████▀ ▀▀███████████
██████████▄█████ █▄███████████
▐███████████████ █████████████
████████████████ ████████████
██ ████████████████ ████▐██▀
▀ ▐███████████████ ███▌ ▐▀
████▀████████▀▐█ █
▀█▌ ▐█████ ██▌
██▀ ▐▀
████████████████ ████████████████
█░░░░░░▀█▀░░░░░░ █░░░░░░▀█▀░░░░░▀
█░░▐█▌░░█░░░██░░ █░░██░░░█░░░██░░
█░░▐█▌░░█░░░██░░ █░░██░░░█░░░██░░
█░░▐█▌░░█░░░██░░ █░░░░░░▄█░░▄▄▄▄▄
█░░▐█▌░░█░░░██░░ █░░░░████░░░░░░░
█░░░█░░░█▄░░░░░░ █░░░░████▄░░░░░▄
████████████████ ████████████████
FILE: .../docroot/modules/custom/prname_common/src/Form/UrlMediaForm.php
----------------------------------------------------------------------
FOUND 5 ERRORS AFFECTING 5 LINES
----------------------------------------------------------------------
65 | ERROR | [x] Concat operator must be surrounded by a single
| | space
77 | ERROR | [x] Array indentation error, expected 12 spaces but
| | found 14
78 | ERROR | [x] Array closing indentation error, expected 10 spaces
| | but found 12
95 | ERROR | [x] Expected 1 blank line after function; 0 found
96 | ERROR | [x] The closing brace for the class must have an empty
| | line before it
----------------------------------------------------------------------
PHPCBF CAN FIX THE 5 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------
Time: 125ms; Memory: 8Mb
You can fix some errors by running following command:
'/usr/bin/phpcbf' '--standard=vendor/drupal/coder/coder_sniffer/Drupal,vendor/drupal/coder/coder_sniffer/DrupalPractice' '--report=full' '/home/anton/projects/prname/docroot/modules/custom/prname_common/src/Form/UrlMediaForm.php'
Nolanson
20.08.2019, 14:28
Решил освоить на хороший уровень php, с java и net в вебе не очень удобно для мелких задач требущих примитивной логики, слишком много лишних теложвижений.
Прошу совета в обучении с чего начать и что почитат.
Первым делом интересуют общие принципы програмирование на данном языке, какие то может общие правила написания кода.
Вторым, проектирование проекта(не интересны фреимворки).
Третим, это работа с бд, сокетами, апи.
Очень прошу если решили помочь, то давайте литературу которую сам прочли, а не слышали от кого то.
Спасибо за внимание.
Для начала выбрать php, java etc...
Разобраться с ООП.
Не хотите лишних телодвиженийто посоветую Вам Go, NodeJS.
работа с бд, сокетами, апи. Вот тут не понятно. С какой именно БД с каким api или вы имеете ввиду создание своего api?
Desquire
20.08.2019, 14:37
Для начала выбрать php, java etc...
Разобраться с ООП.
Не хотите лишних телодвиженийто посоветую Вам Go, NodeJS.
работа с бд, сокетами, апи. Вот тут не понятно. С какой именно БД с каким api или вы имеете ввиду создание своего api?
Сб скорее всего реляционные и нереляционные)
Nolanson
20.08.2019, 14:41
Сб скорее всего реляционные и нереляционные)
Ну это всё ясно. Имелось ввиду mysql, nosql mongo etc...
Desquire
20.08.2019, 14:55
Ну это всё ясно. Имелось ввиду mysql, nosql mongo etc...
Выбор бд зависит от задачи...
Что нужно то и будет использовать
Все они не плохо дружат в пыхой)
Solution
12.09.2019, 14:22
Опять нужна годная статья... на этот раз на тему роутинга.
Бывалые выручайте.
Nolanson
12.09.2019, 14:28
Опять нужна годная статья... на этот раз на тему роутинга.
Бывалые выручайте.
https://medium.com/the-andela-way/how-to-build-a-basic-server-side-routing-system-in-php-e52e613cf241
Desquire
12.09.2019, 18:02
Ну если ты не полностью с 0 пишешь, то я бы заюзал какой-то пакет.
Например с симфони.
Хотя я хз что там по зависимостям.
Nolanson
12.09.2019, 22:33
Ну если ты не полностью с 0 пишешь, то я бы заюзал какой-то пакет.
Например с симфони.
Хотя я хз что там по зависимостям.
человек снова не уточняет, что он конкретно хочет. готовый класс роутинга узнать что это или сделать сам
Solution
13.09.2019, 02:44
человек снова не уточняет, что он конкретно хочет. готовый класс роутинга узнать что это или сделать сам
в планах накидать каркас своего mvp фрейма который в дальнейшем пользовать для работы, смысла не вижу брать ии или лару, куча ненужного мусора для реализации небольших задач, я только из за этого начал учить пхп что б не юзать яву или нет для веба(когда дела касается банальщины)
Nolanson
13.09.2019, 03:25
в планах накидать каркас своего mvp фрейма который в дальнейшем пользовать для работы, смысла не вижу брать ии или лару, куча ненужного мусора для реализации небольших задач, я только из за этого начал учить пхп что б не юзать яву или нет для веба(когда дела касается банальщины)
фреймворков пруд пруди притом и минимальных. начать учить php и делать mvp это вообще как без ног учиться ездить на велосипеде. Посмотри в сторону Slim или phalcon притом последний вообще библиотека к php и отличается высокой производительностью. Вот тебе и без кучи мусора. Хотя имея руки мусор (хотя что для тебя мусор хз) вытащить как с ларавэла так и с любого фреймворка не такая уж и проблема.
Solution
13.09.2019, 03:47
фреймворков пруд пруди притом и минимальных. начать учить php и делать mvp это вообще как без ног учиться ездить на велосипеде. Посмотри в сторону Slim или phalcon притом последний вообще библиотека к php и отличается высокой производительностью. Вот тебе и без кучи мусора. Хотя имея руки мусор (хотя что для тебя мусор хз) вытащить как с ларавэла так и с любого фреймворка не такая уж и проблема.
имея руки, не проще сделать свой фрейм?
Как раз таки что б что то выучить, нужно брать и писать код, нужно понять как все работает с самого начала и до конца.
То что ты пишешь за фреймы, относится к пользовательскому программированию что вообще программированием назвать тяжело, берешь все готовое и как зомби дописываешь свои пару функций, вроде все работает, а как работает хрен знает.
Я в первом посте дал понять что мне не интересный фреимворки от слова совсем.
Nolanson
13.09.2019, 03:58
имея руки, не проще сделать свой фрейм?
Как раз таки что б что то выучить, нужно брать и писать код, нужно понять как все работает с самого начала и до конца.
То что ты пишешь за фреймы, относится к пользовательскому программированию что вообще программированием назвать тяжело, берешь все готовое и как зомби дописываешь свои пару функций, вроде все работает, а как работает хрен знает.
Я в первом посте дал понять что мне не интересный фреимворки от слова совсем.
относится к пользовательскому программированию что вообще программированием назвать тяжело, берешь все готовое и как зомби дописываешь свои пару функций, вроде все работает, а как работает хрен знает
Не бери изобретай свой велосипед вместо проверенного и не тобой одним а многими. Если я не знаю КАК работает то и нафига мне оно нужно?
Чтобы понять как все работает нужно знать ООП.
У опытного программиста есть просто наборы готовых решений и нет необходимости своего фреймворка.
Что такое пользрвательское программирование? 1С чтоли?
Slim микро фрейм в котором кроме роутинга и di ничего и иди меняй как душе угодно. А городить своё это уже издевательство.
По поводу ларки, она не под вас, а для более серьезных и крупных проектов с огромными возможностями. А так даже и 90% возможностей и библиотек не будет использоваться
Desquire
13.09.2019, 10:51
Отцепитесь от парня, каждый уважающий себя пхппешник в начале свой карьеры должен написать свой фрейм.
Потом когда станет джуном, поймёт что это хлам, и нужно все переписать.
Когда станет ещё более опытным, поймёт что вообще его нужно удалить и не нужно было начинать писать)
Nolanson
14.09.2019, 01:13
Гдето у меня балванка с моими поделками на cgi (perl) и php3 найти нужно понастольгируем)
Свой, что-ли говно код сюда кинуть ... Уверен, что переплюну тут всех.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot