Нужен совет бывалых PHP

Solution

Прославленный
VIP
Стальной Визионер
Разработчик
Сообщения
495
Розыгрыши
0
Репутация
251
Реакции
392
Баллы
1 483
Решил освоить на хороший уровень php, с java и net в вебе не очень удобно для мелких задач требущих примитивной логики, слишком много лишних теложвижений.
Прошу совета в обучении с чего начать и что почитат.
Первым делом интересуют общие принципы програмирование на данном языке, какие то может общие правила написания кода.
Вторым, проектирование проекта(не интересны фреимворки).
Третим, это работа с бд, сокетами, апи.

Очень прошу если решили помочь, то давайте литературу которую сам прочли, а не слышали от кого то.
Спасибо за внимание.
 

 
Кик скинул отличные ссылки.
На счёт фреймворков - на вкус и цвет.
В любом случае сначала ресерч, а потом уже пиши новое.
Есть кучи хороших пакетов.
Так же и мини фреймов.

Могу добавить ещё о некоторых фишках -
По возможности композер. Не вижу проектов где не будут использоваться какие-либо контрибные либы.

Для дебага: xdebug must have (привет kick который по странному дебажит).
Так же для дебага: blackfire - проанализировать приложение и поиска чего отредактирить.

GrumPhp - для контроля качества кода.
Или до минимума phpcs phppmd.
( В идеале настроить так, чтобы при комитете проверялись изменённые файлы).

Так же для проверки качества кода - Sonarqube.
При этом это не только для пхп) Но это уже для крупных проектов с большой тимой)
 
По возможности композер. Не вижу проектов где не будут использоваться какие-либо контрибные либы.
Ну это уже не относится к php, хоть и является его пакетным менеджером.
Для дебага: xdebug must have (привет @@kick который по странному дебажит).
Я отлично дебажу :D, но мне лень xdebug настраивать).
Так же для дебага: blackfire - проанализировать приложение и поиска чего отредактирить.
Ну раз такая пляска, то еще для дебага:
GrumPhp - для контроля качества кода.
Не нужная вещь
Или до минимума phpcs phppmd.
( В идеале настроить так, чтобы при комитете проверялись изменённые файлы).
phpcs не для контроля качества кода. Но он из коробки априори должен идти. В современных фреймворках разработчики сами его предоставляют или в кастомных библиотеках. А во многих кастомных библиотеках, требование для пулл реквеста обязательно перед коммитом и пулл реквестом использовать cs fixer.
Раз такая пляска пошла, дальше дефолта с чем начинать новичку, то туда же php unit.
Travis CI и полная автоматизация билдов и запуска в вм. Кстате Travis CI полностью позволит даже выполнять юнит тесты определенные. Использование конечно же под капотом Symfony компонентов, так как на них строятся все крупные приложения. И нет не 1 проекта, который бы не использовал какой то из компонентов Symfony.
Помимо этого, рекомендуемая среда для разработки PhPStorm. Которая позволяет выставить брекпойнты и что находится в определенной функции и имеет кучу плагинов и настроек для работы.
Так же я очень сильно забыл упомянуть 1 полезную вещь, которую наверное надо самой первой читать это PSR:
Конечно если хочется дальше и сложнее приложения, с полностью ORM базы данных то стоит присмотреться к паттерну DataMapper, который предоставляет Doctrine, Spot ORM.
Из сложных и довольно гибкого и легкого в изучение то одназначно фреймворк Laravel, но стоит учесть тот факт, что его хорошо использовать в серьезных и крупных приложениях, так как в более простых и 90% функционала и возможностей не будет использоваться и учитывая сколько он тянет библиотек и зависимостей за собой, то их просто не реально все использовать на полную катушку. Если интересует из микрофреймворков, то Slim будет идеален, роутинг и DI. Остальное ты пиши и дописывай сам и крути как угодно и как ты хочешь, весьма идеален не для огромных приложений.
И для API, обязательно ставить Postman
 
Последнее редактирование:
Ну это уже не относится к php, хоть и является его пакетным менеджером
Не раз видел, когда тупо скачивали библиотеку и просто закидывали в нужную папку.

Ну раз такая пляска, то еще для дебага:
Тоже самое что использовать var_dump
Дебаг на нативном окружении настраивается 1 раз.
Если ты там используешь докер, вариант, или т.п.
То тоже настраивается 1 раз, и потом не нужно использовать что-то ещё.

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

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

Но опять же, если крупный проект и команда. Или ты сам хочешь делать ах.. хороший код)


На счёт текстов - опять же, писать их надо, но кто их делает? Проблема не в неумении, а в нежелении трать свое время или деньги.
На деле, даже в крупных компаниях и 25 процентов проектов без тестов. ( Есть же куа мануальщики)
Я только для контриб модулей писал :(

Про СI зависит от требований.
Если только локальное окружение, то какое там ...

Да и всегда есть куча аналогов ( я например ярый фанат гитлаб сиай)
 
Да и всегда есть куча аналогов ( я например ярый фанат гитлаб сиай)
Одна из главных проблем гитлаба, это то что он дико течет и нужно не мало ресурсов. Я ярый фанат gogs, форк от него gitea который вообще не требует ресурсов, частые обновления и разрабатывается большим комьюнити, в отличие от gogs где 1 китайцем. При этом можно запустить даже на Raspberry PI.
 
Вот сегодня после копипаста забыл поправить... и решил комит сделать.
Форматирование (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'
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Решил освоить на хороший уровень php, с java и net в вебе не очень удобно для мелких задач требущих примитивной логики, слишком много лишних теложвижений.
Прошу совета в обучении с чего начать и что почитат.
Первым делом интересуют общие принципы програмирование на данном языке, какие то может общие правила написания кода.
Вторым, проектирование проекта(не интересны фреимворки).
Третим, это работа с бд, сокетами, апи.

Очень прошу если решили помочь, то давайте литературу которую сам прочли, а не слышали от кого то.
Спасибо за внимание.
Для начала выбрать php, java etc...
Разобраться с ООП.

Не хотите лишних телодвижений то посоветую Вам Go, NodeJS.

работа с бд, сокетами, апи. Вот тут не понятно. С какой именно БД с каким api или вы имеете ввиду создание своего api?
 
Для начала выбрать php, java etc...
Разобраться с ООП.

Не хотите лишних телодвижений то посоветую Вам Go, NodeJS.

работа с бд, сокетами, апи. Вот тут не понятно. С какой именно БД с каким api или вы имеете ввиду создание своего api?
Сб скорее всего реляционные и нереляционные)
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
  • Мне нравится
Реакции: kick
Опять нужна годная статья... на этот раз на тему роутинга.
Бывалые выручайте.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Ну если ты не полностью с 0 пишешь, то я бы заюзал какой-то пакет.
Например с симфони.
Хотя я хз что там по зависимостям.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Ну если ты не полностью с 0 пишешь, то я бы заюзал какой-то пакет.
Например с симфони.
Хотя я хз что там по зависимостям.
человек снова не уточняет, что он конкретно хочет. готовый класс роутинга узнать что это или сделать сам
 
человек снова не уточняет, что он конкретно хочет. готовый класс роутинга узнать что это или сделать сам
в планах накидать каркас своего mvp фрейма который в дальнейшем пользовать для работы, смысла не вижу брать ии или лару, куча ненужного мусора для реализации небольших задач, я только из за этого начал учить пхп что б не юзать яву или нет для веба(когда дела касается банальщины)
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
в планах накидать каркас своего mvp фрейма который в дальнейшем пользовать для работы, смысла не вижу брать ии или лару, куча ненужного мусора для реализации небольших задач, я только из за этого начал учить пхп что б не юзать яву или нет для веба(когда дела касается банальщины)
фреймворков пруд пруди притом и минимальных. начать учить php и делать mvp это вообще как без ног учиться ездить на велосипеде. Посмотри в сторону Slim или phalcon притом последний вообще библиотека к php и отличается высокой производительностью. Вот тебе и без кучи мусора. Хотя имея руки мусор (хотя что для тебя мусор хз) вытащить как с ларавэла так и с любого фреймворка не такая уж и проблема.
 
фреймворков пруд пруди притом и минимальных. начать учить php и делать mvp это вообще как без ног учиться ездить на велосипеде. Посмотри в сторону Slim или phalcon притом последний вообще библиотека к php и отличается высокой производительностью. Вот тебе и без кучи мусора. Хотя имея руки мусор (хотя что для тебя мусор хз) вытащить как с ларавэла так и с любого фреймворка не такая уж и проблема.
имея руки, не проще сделать свой фрейм?
Как раз таки что б что то выучить, нужно брать и писать код, нужно понять как все работает с самого начала и до конца.
То что ты пишешь за фреймы, относится к пользовательскому программированию что вообще программированием назвать тяжело, берешь все готовое и как зомби дописываешь свои пару функций, вроде все работает, а как работает хрен знает.
Я в первом посте дал понять что мне не интересный фреимворки от слова совсем.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
имея руки, не проще сделать свой фрейм?
Как раз таки что б что то выучить, нужно брать и писать код, нужно понять как все работает с самого начала и до конца.
То что ты пишешь за фреймы, относится к пользовательскому программированию что вообще программированием назвать тяжело, берешь все готовое и как зомби дописываешь свои пару функций, вроде все работает, а как работает хрен знает.
Я в первом посте дал понять что мне не интересный фреимворки от слова совсем.
относится к пользовательскому программированию что вообще программированием назвать тяжело, берешь все готовое и как зомби дописываешь свои пару функций, вроде все работает, а как работает хрен знает

Не бери изобретай свой велосипед вместо проверенного и не тобой одним а многими. Если я не знаю КАК работает то и нафига мне оно нужно?
Чтобы понять как все работает нужно знать ООП.
У опытного программиста есть просто наборы готовых решений и нет необходимости своего фреймворка.
Что такое пользрвательское программирование? 1С чтоли?
 
Назад
Сверху Снизу