PHP: Правильный путь


    На днях я наткнулся на замечательную карманную книгу для PHP разработчиков «PHP: The Right Way». Скорее, она будет более полезна новичкам. Чем именно? По интернету разбросано огромное количество материла по PHP, но многое уже устарело или не приводит к написанию качественного кода. В этой книге присутствуют основные актуальные сведения с ссылками на проверенные ресурсы. На самом деле, сначала я хотел перевести ее, форкнуть репозиторий, благо лицензия это позволяет. Но оказалось, что перевод уже есть. Нет только русской книги в форматах для электронных книг, но так как используется Markdown в русском форке, то это не составит труда.

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

    Ссылки:
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 76

      +9
      проскакивала эта штука уже год полтора назад точно
        –1
        Эх, не силен я в поиске на Хабре. Но, думаю, ничего плохого тут нет. Share your knowledge!
          +6
          На Хабре не такой уж хитрый поиск. А фраза «не силен я в поиске» звучит по детски. Я думаю, что вы даже не попробовали, т.к. введя «PHP The Right Way» выпадает всего 7 результатов.
            +1
            Спасибо. Наверное, потому что я искал «PHP: правильный путь».
              +1
              да, точно странный. как-то, я даже пытался найти статью по точному совпадению начала заголовка статьи… не нашёл (зато выдал несколько не относящихся к теме поиска статей)… пришлось лезть в историю на другом устройстве и вводить затем адрес вручную…
            –1
            можно, например, вот так искать
            0
            Спасибо.
            Есть такая же тема для javasript: jstherightway.org/ (но только не книга, собрано на сайте)
              0
              Ну как бы для php это так же не книга а подборка best-practice.
                0
                на Leanpup это именно книга. и думаю многим такие мануалы удобнее читать в каком-то электронном формате (pdf for example).
              –10
              • UFO just landed and posted this here
                  +3
                  да, моя любимая картинка :)
                  • UFO just landed and posted this here
                    • UFO just landed and posted this here
                        +1
                        Да пишем мы на других языках помимо php, не волнуйтесь.
                          +1
                          Как минимум, скорее всего переход с PHP на что-то другое выльется в понижении зарплаты, а то и должности. Вплоть до с сеньоров свалиться в джуниоры со всеми вытекающими.

                          А на других языках пишем для себя, ради фана, а не за деньги ради еды :)
                          • UFO just landed and posted this here
                              +1
                              Одного обучения мало. И не в месте дело (место и так меняешь минимум раз в год-два). Никто не возьмёт, по-моему, на должность сеньора человека, который ни строчки реального кода не написал на основном языке.
                              • UFO just landed and posted this here
                                  0
                                  Что означает пойти джуниором в большинстве случаев :) Думаю, тут ещё многое зависит от психотипа — есть люди, которые активно (в плане коммуникаций с работодателем) пройдут все ступеньки до старой должности за год, а то и меньше, а есть которые будут пассивно ждать повышения от начальства и ориентироваться на рынок по вакансиям типа «требуется миддл — два года опыта работы на Python, сеньор — пять лет» и пока этот срок не отработают даже заикаться о повышении не будут.
                          +1
                          Python намного более пригоден для веб-разработки

                          Спорно.
                          Понятно, что PHP подкупает новичков возможностью писать «Hello <?= $name ?>», что выглядит очень просто и интуитивно, но все вменяемые PHP-разработчики давно уже поняли, что это ошибочный путь, и стараются так не делать.

                          Я, значит, невменяемый. И чем это лучше {{name}} (хотя и такие шаблонизаторы для пхп есть)?
                          Все толковые менеджеры уже давно переходят на инструменты, дающие четкую организацию и структуру проекта и уменьшающие издержки на вхождение в проект, что становится возможным благодаря таким вещам как PEP-8 и Django.

                          Или PSR и Symfony :)
                          Это правильный путь только для людей, которые, к сожалению, не в состоянии осилить ООП

                          Я осиливал ООП на С++, потом использовал его ещё на паре языков, и только потом столкнулся с PHP (когда ООП в нём ещё не было). Неправильный путь? Или я только думаю, что осилил ООП?
                          — их доля делать простые странички.

                          Вот сейчас занимаюсь разработкой финансовой системы на PHP, причём о языке меня никто не спрашивал. Собственно система была в продакшене до меня. Вся бизнес-логика на стороне PHP, угрызений совести от этого не чувствую. Могу переписать на Python (но вряд ли выберу Django), могу на Ruby (RoR можно), могу вообще на плюсах, но смысл, если система работает нормально, а мне на замену будет сотрудника найти легче и дешевле? Уж лучше я потрачу время на переписывание системы на PostgreSQL с MySQL — это куда больше плюсов обещает, чем смена одного языка на другой со схожими парадигмами.
                          • UFO just landed and posted this here
                              +3
                              О, а Ваш ник я уже запомнил!

                              Очень рад :)
                              Спорить можно о чем угодно. Был бы смысл.

                              В споре истина не рождается, она существует до спора. Смысл спора — понять точку зрения оппонента.
                              Тем что форсирует соглашение о разделении логики и представления.

                              Зачем его форсировать? Ну и положа руку на сердце, в ООП-мире так или иначе придётся контролировать разделение «ручками», поскольку написав что-то вроде {{object.property}} мы можем и не догадываться, что вызывается, например, запрос к БД, если используется lazy load
                              Я не призываю Вас переписывать свой проект на другом языке :)

                              Я к тому, что Python или Ruby не имеют сейчас значимых преимуществ перед PHP в веб-разработке. По возможностям языки плюс-минус одинаковы, что-то лучше в одном, что-то в другом, что-то в третьем. По скорости выполнения — тоже.
                              • UFO just landed and posted this here
                                  0
                                  Вы работали с Python больше года в проектах хотя бы среднего уровня сложности?

                                  Нет, не работал. Но того с чем работал хватило понять, что главное придумать алгоритм, перевести бизнес-правила в термины модели, а уж на чём их описывать в коде большинстве случаев всё равно (в рамках схожих наборов парадигм, типа «императивная динамическая типизация с уборкой мусора»).
                                  Зачем форсировать — большая тема, обсосаны все за и против

                                  Так никто не мешает использовать шаблонизаторы и на пхп, если «за» перевешивают в конкретном проекте, с одной стороны, а с другой — это вопрос дисциплины скорее, чем языка. Я на любом из трех языков могу написать хоть лапшу, хоть в строгих канонах.
                                  • UFO just landed and posted this here
                                      +1
                                      Ну вы тоже не работали на PHP 5.3+ на проектах хотя бы среднего уровня сложности.
                                      • UFO just landed and posted this here
                                          0
                                          А нововведения смотрели?
                                        +1
                                        Visual C++, Visual Basic, PHP 3+.
                              +1
                              Позвольте уточнить, если Python настолько идеален, зачем Google, в котором работает создатель Python, выпустил свой язык Go?
                              • UFO just landed and posted this here
                                  +2
                                  Создатель питона там уже не работает =)
                              0
                              у вас название анкора не соответствует содержимому, поправьте пжлст
                                +3
                                отнюдь!
                                  –3
                                  Ввело в заблуждение «PHP: Правильный путь».
                                  +3
                                  Да ладно, если уж выбирать в общем случае, так точно не Питон :)
                                    0
                                    Почему?
                                      +5
                                      Ну с одной стороны это был ответный троллинг. Я не являюсь глобальным противником тех или иных языков просто потому что мне нравятся больше те или иные их особенности.

                                      Но если уж серьезно, то в Питоне куча своих проблем и много субъективных нюансов. И не вижу я в нем перспективности особой. Это устоявщийся язык, занявший некоторые ниши. Программисты Python довольны своим языком, что влечет пониженный их интерес к его развитию. Инертность перехода на 3-ю версию это подтверждает.

                                      С PHP сейчас наоборот соскакивать особого смысла не вижу, т.к. он реально начал развиваться и «зализывать раны» — решать проблемные места. Это приятно и интересно. Мне это нравится. А Питон скушен (субъектив!).

                                      Мне кажется, что самый весомый плюс Питона в сравнении с PHP — попадание в определенные крупные *nix-ориентированные компании, как например Гугл. Или даже Wargaming.
                                      • UFO just landed and posted this here
                                          +1
                                          Лично я не борюсь с ограниченностью PHP, а успешно использую этот язык в работе. Если раньше действительно была масса реальных проблем, то с PHP 5.4 практически все они решены. И если говорить о языке для души, то опять же это будет не Питон, а Руби. Это общепризнанный факт.

                                          Вообще, я долго пытался проникнуться вашими мыслями, сумбурно выраженными в комментариях в этой ветке, и как-то не получается. Вы говорите об ограниченности, но ее нет. Бардак с именованиями, который с опытом перестает быть помехой в практике (не для души, а для результата). Что еще вас не устраивает из того, что не исправлено в 5.5 включительно?
                                          • UFO just landed and posted this here
                                              +2
                                              Множественное наследование не является преимуществом или недостатком. Это подход, который в одних языках принят, а в других нет. Необходимости во множественном наследовании в PHP после внедрения трейтов нет. А само по себе оно на мой взгляд приводит к путанице в иерархии, выполнении множества обязанностей одним классом, ошибкам проектирования. Трейты — золотая середина в этом вопросе.

                                              Классы генерировать на лету нельзя. Наверное, это действительно недостаток, т.к. задачи, где это нужно, есть. Изменение классов в динамеке — это тоже самое, что множественное наследование, лучше, когда такого нет (ИМХО).

                                              Именованные параметры — это синтаксический сахар. Это все равно, что заявить, что проблема Питона — отсутствие скобок для блоков. Раскрывать из массива — добавлено в 5.5 или будет в 5.6 (не помню точно, т.к. пока работаю с 5.4). Свободный набор именованных параметров — это массив. Свободный набор НЕименнованых параметров — есть давно.

                                              Короче, из всего, что вы перечислили, можно только генерацию классов отметить.

                                              Ну и последнее, не хотите развивать холивары — не развивайте их сами.
                                              • UFO just landed and posted this here
                                                  0
                                                  Я вам в конце могу сказать вот что: за свои 10+ лет опыта я делал реальные проекты помимо PHP и JS, на C#, Java и C++. Так же изучал Ruby. Так что хорошо знаю, что для чего придумано. И считаю PHP хорошим инструментом для своих задач в настоящее время. Заметьте разницу — не хорошим языком, а хорошим инструментом. А в работе инструменты важны.

                                                  И давайте эту дискуссию тики закроем. Во всяком случае, ваш следующий ответ я готов прочитать, но писать на него ответ уже не стану :)
                                                  • UFO just landed and posted this here
                                                +1
                                                — Множественное наследование — а оно нужно? В java/c# как то и без него хороши живут. Да и в python множественного наследования как такового нету, так вообще довольно забавно реализованы классы. Это удобно, с одной стороны, но это все же не совсем стандартный подход.
                                                — Генерировать классы в рантайме? Можете привести кейс когда это нужно, ибо сходу так и не смогу сказать. Сходу в голове только крутятся кейсы с моками интерфейсов/классов, но опять же эту проблему можно решить проксями, декораторами и т.д.
                                                — именованные параметры увы пока нет, только обсуждают, а вот распаковка уже доступна с версии 5.6.
                                                • UFO just landed and posted this here
                                              +2
                                              Простите, но создается впечатление что вы если и были знакомы с php, то это было лет 5-6 назад. Я лично не могу придумать такого кейса, при котором разработка на php будет медленнее разработки на том же ruby (благо количество готовых решений растет, и последние пару лет качеством они уже вменяемы). Для 90% задач для web этот язык подходит, для оставшихся 10% можно взять другой.
                                              • UFO just landed and posted this here
                                      0
                                      Ни фига себе для новичков!
                                      $start = \DateTime::createFromFormat('d. m. Y', $raw);
                                        +5
                                        А что здесь сложного? Что название метода в camelCase?
                                          +2
                                          Перевести имя не сложно, просто я подумал, что там подробно разъяснят про классы и ООП. Оказывается, нет.
                                            +2
                                            Объяснений про классы и ООП уже настолько выше крыши, а их всё пишут, и пишут…
                                            Ну и вообще — есть некоторый джентльменский набор «для новичков», который кочует из книги в книгу, но почему-то практически никто не заботится писать для новичков нечто более актуальное, отсутствующее в других источниках. Топик — удивительно редкое исключение.
                                        +4
                                        Вы про сайт вообще ничего не слышали?
                                        www.phptherightway.com
                                        Давным давно о нём рассказывают при любом удобном случае, а вы для себя только открыли)
                                          0
                                          Раз в конце статьи в блоке «Ссылки», есть этот сайт, то наверно слышали.
                                        0
                                        Пользуясь случаем, задам вопрос:

                                        Тут на хабре было упоминание библиотеки для PHP, которая унифицировала названия стандартных функций.
                                        Приводила все названия то ли к under_score то ли к camelCase — главное чтобы было единообразно.

                                        Не могу вспомнить название, гуглинг тоже как то не помо — может кто подскажет?
                                          0
                                          Сомневаюсь, что это то, о чем ты говоришь, но я недавно упоминал Антона Шевчука с оберткой для стандартных функций — anton.shevchuk.name/php/php-my-expirience/
                                            0
                                              0
                                              названия стандартных функций

                                              по описанию, всё же, больше похоже на anton.shevchuk.name/php/php-my-expirience/ жаль, что этот POC не заимел развития в чем-то имеющем поддержку и развитие, а так и остался забавным экспериментом.
                                            +34
                                            image
                                            [/irony]
                                              +1
                                              Если бы это было иронией…
                                              0
                                              Неплохая идея — форкнуть на penflip.com репу с гитхаба и там прямо средствами сервиса можно из markdown в pdf / doc / html / txt можно скачивать.
                                                0
                                                Тогда дайте уж всем линк на pdf
                                                  0
                                                  Сам нашёл leanpub.com/ruphptherightway
                                                  plutov, предлагаю добавить линк в пост, там epub и mobi есть.
                                                    0
                                                    Самая первая ссылка в списке вообще-то.
                                                +1
                                                Реквестую русский mobi.
                                                  +1
                                                    +1
                                                    Самая первая ссылка в списке.
                                                      0
                                                      Спасибо. Текст новости немного ввел в заблуждение. Думаю, автору стоило бы упомянуть, что русский вариант формата для электронных книг также доступен по ссылке.
                                                    0
                                                    Странно, не появился холливар «Tabs vs spaces» =)
                                                      +3
                                                      Так там спорить не о чем. Всем ясно, что табы лучше.
                                                        +2
                                                        Во всем вы правы, только в слове «табы» опечатались, правильно — «пробелы». :-)

                                                    Only users with full accounts can post comments. Log in, please.