Фреймворки используются для того чтобы не писать не изобретать заново

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Фреймворки используются для того, чтобы не писать и не изобретать заново банальные вещи, вроде работы с БД, обработки HTTP-параметров, организации контроллеров и моделек.
Для выполнения задания нужно: иметь представление о HTML/CSS (так как мы делаем сайт на фреймворке, а страницы сайтов пишутся на HTML), иметь представление о SQL-запросах или желание в них разобраться (так как мы будем работать с базой данных), иметь представление об ООП (так как все популярные фреймворки используют ООП).
Нужно иметь установленные и настроенные Апач/PHP/MySQL (или денвер/XAMPP но лучше бы установить компоненты по отдельности, дает полезные навыки).
Задание поможет: разобраться в MVC, научиться использовать один из фреймворков, использовать современные подходы к разработке, писать более правильный код.
Задание: сделать сайт uppu.ru, аналог rghost.ru, который позволяет загружать картинки и файлы и делиться ссылочкой. Насчет дизайна, я может нарисую что-нибудь завтра или послезавтра, сегодня некогда, но там должно быть 3 страницы:
1. Главная страница, она же страница загрузки файла, содержит поле выбора файла для загрузки
2. Страница просмотра файла. Если это картинка, выводится информация о файле (имя, размер, время зазрузки, комментарий автора), уменьшенная копия и ссылка «скачать». Если это не-картинка, то только информация и ссылка скачать.
3. Страница со списком последних 100 загруженных файлов, дата, ссылка скачать, название и размер.
Информацию о загруженных файлах удобно хранить в базе данных. Если ты не работал с Бд и SQL, я могу дать краткие ссылочки, для этого задания каких-то крутых знаний не нужно, достаточно знать запросы SELECT, INSERT, CREATE TABLE и все.
Можно использовать Yii, F3 (Fat-free framwework) или Slim. Лучше всего Slim, так как это современный микрофреймворк, но по нему трудно найти информацию на русском (на английском доккументация подробная), так что если ты не дружишь с английским, то придется взять F3 или Yii.
F3 и Slim — микрофреймворки, они меньше и проще, Yii помощнее.
Ознакомительная статья:
- про Yii: http://yiiframework.ru/doc/blog/ru/start.testdrive (рус.)
- про F3: http://habrahabr.ru/post/135619/ (рус.)
- про Slim: docs.slimframework.com (англ.) net.tutsplus.com/tutorials/php/rapid-application-prototyping-in-php-using-a-micro-framework/ (англ.)
Естественно, тебя никто не бросает один на один с фреймворком. Ты всегда можешь задать вопрос, а также периодически постишь свой код, а я его буду смотреть и давать советы и замечания и предупреждать о подвохах. Код удобнее всего постить на гитхаб (умение пользоваться гитом тебе все равно пригодится, если ты хочешь работать программистом, так как сейчас везде его используют), но для начала можно постить сюда: https://gist.github.com/ или на какой-нибудь pastebin или zip-архивом.
Если ты быстро справишься с заданием, то я могу придумать дополнительные задачи: поиск по файлам, организация альбомов, загрузка перетаскиванием с рабочего стола, модерирование, комментарии.
----
Алсо, если ты не умрешь в процессе изготовления uppu.ru, вот что планируется сделать:
- загрузка файлов на сервер
- страница скачивания
- для картинок, выводить информацию и превьюшку
- для медиафайлов (аудио/видео), выводить информацию (ее можно получить с помощью библиотеки вроде gitId3, не руками же файлы расковыривать)
- добавить плеер для аудио/видео
- прикрутить поиск по файлам с помощью sphinx (чтобы это работало, нужно хранить данные в базе данных — ну я надеюсь, к этому моменту ты это осилишь)
- прикрутить загрузку файлов простым перетаскиванием на страницу с помощью jQuery плагина (конечно по хоршему надо бы заставить написать тебя загрузчик с нуля, чтобы разобраться в яваскрипте и DOM, но это наверно сложовато)
- комментарии к файлам
- древовидные комментарии к файлам
Делать в принципе можно в любом порядке.
----
Там изучать-то нечего, это микрофреймворк, весь его исходный код наверно можно за пару часов прочесть.
Небольшая подстава в том, что на русском ничего почти нету, так что либо через гуглотранслейт придется разбираться, либо можешь тут непонятные вопросы задавать, я подскажу.
Документация тут: http://docs.slimframework.com/ — не знаешь английского, посмотри хотя бы примеры кода или в гуглотранслейт попробуй засунуть.
Слим из коробки дает тут роутер (штуку, которая разбирает URL на части и вызывает нужную функцию). Вот пример кода:
$app = new \Slim\Slim();
// Define a HTTP GET route:
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
// Run the Slim application:
$app->run();
При обращении по удресу http://mysite/hello/lalala выведет нужный текст.
С чего начать
Для работы с ним нужно установить Апач + Php, у меня есть ободряющая (инфы-то там не очень много) паста на тему установки Апача: http://gist.github.com/anonymous/946f4f1830be3955fe17
Затем скачай slim и добейся, чтобы пример с hello world работал.
Затем можешь попробовать сделать страничку загрузки файла например.