Задание на php для новичка

Проблемы новичков в php.

Я уже писал о том что стоит читать новичку, теперь продолжим переходя от теории к практике. Очень часто начав изучать php новички приходят к моменту, когда хочется опробовать свои силы в реальной разработке или даже попробовать устроиться на работу. Перед ними встаёт вопрос «с чего начинать новичку«, «какой первый проект написать«. Самое удивительное, что зачастую они пытаются придумать нечто экзотическое, а нужно писать типичный проект. Один из распространённых советов — напиши гостевую книгу, это не плохой вариант, но и не лучший.

В реальной жизни веб программисты оперируются всего парочкой типичных задач — вывод списка записей, просмотр одиночной записи, редактирование-добавление, удаление-изменение единичного параметра, работа с деревьями (её в некой степени можно аппроксимировать до вывода списка). Ещё важным моментом является работа с фалами, особенно изображениями.

И так, на основании этих требований я составил задание, которое будет покрывать 80-90% знаний необходимых для новичка.

Mодуль новости.

1. админка.
1.1 добавление (с возможностью прикрепить картинку)
1.2 вывод списка (с разбивкой по страницам, сортировкой и фильтрацией)
1.3 удаление (не забываем про картинки)
2. пользовательская часть
2.1 просмотр списка новостей с разбивкой по страницам и сортировкой (по умолчанию последние добавленные первыми), не забываем выводить при наличии картинки её уменьшенную превьюшку.
2.2 просмотр одной новости, выводим превьюшку картинки и при клике на ней с помощью lightbox показываем большую.

Бонусом будет, если будут категории новостей и вывод категории рядом с новостью используя LEFT JOIN

Как оформлять код.

У профессиональных программистов есть одна тайна, которая никогда не скрывается, но постоянно не усваивается новичками — главное не как работает код, важнее как он читается. Для улучшения читабельности есть code style, который поясняет как именовать переменные-функции-классы, как ставить отступы и т.д. Не важно какой у вас будет стиль, главное чтобы он был единым в рамках проекта. У IDE есть возможность авто форматирования, но лучше новичку на первых порах оформлять код самостоятельно, а не через alt-shift-f, это помогает улучшить собранность, концентрацию и самоорганизацию.

Пару слов об MVC.

Это такая клёвая штука, которая позволяет делить код на говнокод и божественный. Если вы используете MVC, значит у вас классный код. Это конечно бред, не нужно придумывать себе священных коров. Нужно понимать MVC — разделяй код на автономные части, которые занимаются только своей работой. Пока стоит оперировать только тремя сущностями.
Контроллер принимает запрос и вызывает нужный метод для получения данных из модели, затем эти данные  каким-то образом становятся доступными вьюхе.

Теперь это в коде:

// код для обработки того что пришло в запросе
// ....
// получаем данные вызывая метод модели с параметрами из запроса
$data = model_news_get_list($count, $order, $filter);
// в $data сейчас находятся данные доступные для вьюхи,
//при использовании шаблонизаторов обычно их передают отдельным методом,
//но у нас пока всё просто

В модели работаем с базой данных, забудьте о mysql_*, эти функции морально устарели, да и уже официально объявлены deprecated и могут не оказаться в новой версии php. Есть PDO и mysqli_*, которые умеют работать с prepare statment — когда сразу посылается запрос, а затем данные, таким образом нельзя кривыми данными совершить SQL Injection.

Во вьхе делаем вывод этих данных

<ul>
<?php foreach($data AS $news) { ?>
    <li><?php echo $news['title'] ?></li>
<?php } ?>
</ul>

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

Задание на php для новичка: 19 комментариев

  1. karneds

    В шаблонах лучше использовать альтернативный синтаксис, проще читать и меньше шансов запутаться

    1. AmdY Автор записи

      скорее наоборот, альтернативный синтаксис не даёт возможности в IDE легко просмотреть где заканчивается блок. А так навёл на { и видишь где конец и можно зажав шоткат перейти туда, можно вообще свернуть блок и т.д.
      Альтернативный синтаксис не даёт преимущество, пускай я знаю что endforeach конец foreach, но если хотя бы два вложенных, то уже нужно гадать какого.

  2. Ludmaster

    чота очень сложный подход к новичку, имхо я всегда советую новичку создать свой «кодер» т.е. скрипт который бы имел свой алгоритм кодирования ну например пришедшего с формы пароля, с записью в базу данных и вытаскивания и сравнивания. МВС да, гуд, но ИМХО считаю голый МВС без файла со всеми при всеми (причем в одном файле) интерфейсами как бе не але :)

    1. AmdY Автор записи

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

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

      1. Ludmaster

        Кстати, дополни статью за какой срок именно «новичек» все это должен успеть наколякать с нуля не трогая всякие либы и прочее

      2. AmdY Автор записи

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

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

        это просто тест для самопроверки, а не для того, чтобы тебя оценили.

  3. Den

    Закинул на хост страничку для проверки правильности работы сервера(Apache 1.3.31), сервер говорит что такой там нету(ошибка 404). Вроде ошибку нужно искать в Httpd.conf. я там вроде всё перерыл, не знаю в чём проблема. Спасибо!

  4. Fatality

    А аффтар сам-то во всем этом шарил, когда устраивался на первую работу пыхером? :))

    1. AmdY Автор записи

      О, нет. Я на работу попал по блату, через знакомого, о php услышал лишь за месяц до трудоустройства. ООП для тестового задания учил прямо в те 3 отведённых дня, LEFT JOIN даже не смог применить.
      Но и соответственно работа была ужасная, за три месяца мне заплатили лишь 100$, а остальное время кормили сказками о молодой и перспективной, но с временными финансовыми трудностями. Плюсом же было то, что я понял что нужно учить и под рукой появился нормальный, не диал-ап интернет. Так что через три месяца знал что нужно нужно, но эти три месяца приходилось во всём себе отказывать, проводить время на работе и за книгами и обходиться даже без девушки :(.
      Поэтому сейчас и помогаю новичкам, чтобы они могли в спокойных условиях поучить и знали в каком направлении двигаться, а не проводили часть жизни в таком же угаре, как я в начале карьеры.

      1. Fatality

        Спасибо за ответ. Вы меня прям вдохновили. Я щас и сам нахожусь в поиске работы на должность Junior PHP Developer.

      2. fabervox

        Тысячу и один раз говорилось на блогах SEOшников,о том как следует переходить к работе в интернет.
        Если вы работаете, не стоит спешить бросать работу и лезть в ИТ сферу, здесь обязательно нужны знания и умения, которые в отличие от нужных в земных профессиях, как правило не даются от природы.
        И какой пример вы подаете новичкам которым практики не хватало,но теории уже не так мало?
        Ab hoc et ab hoc.

        1. AmdY Автор записи

          Во взрослом SEO знания ещё нужнее, я занимался автоматизацией процессов на webcom media, видел и знаю что это далеко не то, что пишут в популистских seo блогах и как стебаются специалисты на «профессиональных» форумах.

  5. fabervox

    Сам я в php новичок.
    Конечно я встречался с кодом php и редактировал отдельные параметры под себя,что то с помощью логики,что то с помощью поиска.
    Но вот когда я решил изучить язык, я задумал сразу практическую задачу, простейшую, но я не стеснялся спрашивать где это возможно, и вот когда оно хоть и с помощью других людей, заработало, я просто перешел к урокам php.su.
    И читал я их и сразу понимал, потому что я уже получил индивидуальное объяснение, того что мне нужно было, и как мне нужно было.
    Просто нужно сразу определится для чего вам нужен php для разработки или для работы в компании новичком, в одиночку или в команде вы будете работать не важно.
    Важно то чтобы вы определились,будут ваши навыки зависимы от карьерного роста или нет.
    Для того чтобы быть полезным команде которая работает над чем то функциональным, нужно чтобы вы не монотонную работу выполняли идеально, а чтобы могли и идею подать.
    Конечно если будет все одно и то же из дня в день делать, вам творчество особо то и не надо.
    А творчество начинается с самого начала, просто посмотрите на детей и взрослых, даже имитируя кого то у них это получается креативно.
    Своим заданием для новичков, вы определяете их в рабочую группу. И даже если они будут работать поначалу не за 100$ то за ~200-300,что одинаково мизерно для профессии,хоть и дает возможность хоть как то жить (если живешь не сам). В то же время развив в себе творческие навыки кодинга, они быстрее дойдут до отметки нормальной зарплаты программиста,и кроме того смогут при желании не зависеть ни от кого.
    PS: кстати админ, доделайте сайт, а то выглядит не то что простым — простейшим..(

    1. AmdY Автор записи

      У Вас неверные представления о работе программиста и об уровне компенсаций, зайдите хотя бы на сайты о работе и посмотрите сколько предлагают толковым новичкам, там примерно под 700-1000$. Собственно задание и рассчитано на этот уровень. Я уже не один год в программировании и мой пост не является предположением, а результат наблюдений.

      P.S. Сайт на wordpress с одной из бесплатных тем, из которой я выпилил лишние украшалки, чтобы он был простейшим. Точно так же с заданием, оставил только нужное, чтобы был необходимый функционал и ничего лишнего. Тему ещё надо подрезать, а то форма комментариев меня бесит своими лишними элементами и громоздкостью.

  6. Антон

    Ответьте на вопрос: и что, после успешного написания этого модуля можно претендовать на позицию junior php developer? То есть, отправлять резюме и ходить по собеседованиям?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *