Document

Блог на php для самых маленьких

Привет, я php backend разработчик и по совместительству преподаю php в основном для детей и не только. Последний проект над которым я работал, был сайт votpusk.ru. Я не считаю себя гуру, тем не менее знаний у меня достаточно что бы направить на путь истинный начинающих php программистов.

Для кого эта публикация?

Эта публикация для кодеров которые освоили азы программирования, но испытывают трудности при написании своего первого сайта. Публикация будет полезна тем кто уже имеет базовые знания php и html, но на практике применить свои знания им трудно. Планируется целый цикл публикаций от простого к сложному.

Цель публикации

Основная цель данной публикации, начать написание блога на процедурном php и html. При этом используя минимальное количество функций с приближенной к реальному проекту архитектурой. Вместо базы данных будем использовать обычный txt файл с данными.

Начнем-с

Для начала нужно будет создать несколько папок и файлов как показано на скрине: (blog.com это корневая папка проекта у вас может быть другое название, остальное как на скрине).

Файловая структура

Теперь когда файлы и папки созданы, давайте откроем файл index.php в браузере. Пропишем название нашего сайта и через слэш имя нужного файла у меня это будет выглядеть так: http://blog.com/index.php Запустив файл мы увидим белый экран так как в файле пока нет кода. Файл index.php запускается по умолчанию если мы не указываем название другого файла. Поэтому мы можем исправить нашу ссылку на http://blog.com и увидим точно такой же результат.

Читайте также:  Css learn step by step

Файл index.php это единственная точка входа в наш проект. Мы всегда будем попадать на этот файл и в зависимости от условий подключим другие файлы с кодом нужных страниц.

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

Теперь откроем файл index.php в редакторе. Зная что мы попадаем на этот файл всегда как нам узнать когда нужно подключать файл с кодом главной страницы, а когда например страницы с контактами?

В php есть механизм позволяющий передавать значения из адресной строки в переменную $_GET которая является массивом (array). Теперь добавляя к http://blog.com/ строку типа ?c=contact&a=index мы получим в массиве $_GET два значения, которые запишем в переменные. Обратите внимание, что значения разделены знаком &. Почитать о $_GET

Теперь то что мы получили в переменной $controller будем считать именем подключаемого файла нужной страницы, но с условием что будем добавлять к имени строку ‘Controller’. Подключаемые файлы будем хранить в папке /controllers.

Создадим файл contactController.php для страницы «Контакты» в папке /controllers. Так же можем создать файлы и для главной (mainController.php), и для страницы со статьями (articlesController.php). Переменную $action пока не трогаем, она нам понадобиться позже.

Теперь хочу пояснить для чего нам значение в переменной $action. У нас есть пока что только одна страница для вывода всех статей. Но если вдруг нам понадобиться еще страница для вывода каждой статьи по отдельности, по нашей логике мы создадим два файла, что само собой не хорошо. Т.е. 100 файлов для 100 страниц и непонятно какой файл за что отвечает и для поиска нужного файла мы крутим колесико вечность. Как вариант мы можем все файлы которые относятся к статьям поместить в папку articles/ это бы помогло нам быстрее находить файлы с нужным кодом, но количество файлов это никак не уменьшит.

Решением данной ситуации я вижу поместив в наш файл articlesController.php две или более функции и вызывать их в зависимости от значения переменной $action. При этом предлагаю немного модифицировать имя функции добавив к нему параметр $_GET[‘c’]. По итогу файл articlesController.php будет выглядеть вот так:

Теперь давайте напишем код, который анализирует значения переменной $controller и подключает нужный нам файл(контроллер). А так же анализируя переменную $action вызывает нужную функцию. Договоримся что если $_GET[‘c’] содержит пустое значение в $controller по умолчанию у нас будет main, ну а $action — index. По итогу файл index.php будет выглядеть вот так: ( empty file_exists include_once function_exists )

 /*Если в $_GET['c'] не пустое значение запишем в переменную $action */ if (! empty($_GET['a'])) < $action = $_GET['a']; >//Сформируем путь к нашему контролеру $controllerPath = "controllers/Controller.php"; //Сформируем название вызываемой функции $functionName = $controller . '_' . $action; //Если такой контролер существует подключим его инклудом if (file_exists($controllerPath)) < include_once $controllerPath; //Если такая функция существует вызовем её if (function_exists($functionName)) < $data = $functionName(); >>

Теперь перейдя по адресу http://blog.com/?c=contact&a=index мы подключим файл contactController.php и выполним функцию сontact_index().

Отлично хотел бы сказать я, но это еще не все. Обычно html разметку и php код следует размещать в разных файлах. Код отдельно, а разметку отдельно. А это значит что для каждой такой функции нам нужен будет отдельный файл вида. Который мы поместим в папку views/ далее в папку по имени контролера, например views/contact/, а файл назовем по имени $action. Создадим файлы вида и папки для контролеров contactController и mainController.

Теперь заполним кодом сами контролеры и файлы видов:

/controllers/contactController.php и views/contact/index.php

Добро пожаловать!

Добро пожаловать!

Теперь обратите внимание на файл layout.php что в папке views/. Он нужен для того что бы вынести в него общий для сайта код. Например, шапку сайта, меню, логотип и т.д. и внутри общего шаблона подключить конкретные файлы видов. Скопируйте код файла layout.php

         

Супер Блог

Шапка

СтрелкаГлавная

СтрелкаПопулярные

СтрелкаЖивотные

СтрелкаРастения

СтрелкаКонтакты

/$action.php"; ?>

Теперь напишем функцию, которая будет подключать общий файл вида, а в нем и конкретный. Для этого в папке /lib создайте файл viewLib.php и поместите в него следующий код:

 //Подключаем наш общий вид include_once 'views/layout.php'; >

и добавим в файл index.php подключение этого файла и вызов функции

 if (! empty($_GET['a'])) < $action = $_GET['a']; >$controllerPath = "controllers/Controller.php"; $functionName = $controller . '_' . $action; if (file_exists($controllerPath)) < include_once $controllerPath; if (function_exists($functionName)) < $data = $functionName(); //Вызываем функцию render($controller, $action, $data); >> 

Теперь если скопировать все картинки из моей папки img в вашу и перейти по адресу http://blog.com/?c=contact&a=index мы подключим файл contactController, вызовем функцию contact_index(), дальше произойдет вызов функции render() в которой подключиться общий шаблон с разметкой, а в общем шаблоне конкретный файл вида. То же самое произойдет если поменять ссылку на http://blog.com/?c=main&a=index только файлы теперь будут другие и соответственно мы увидим другую страницу.

Десерт

Приступим к созданию страниц для вывода статей. Для на чала создадим файл db.txt в корне проекта. Формат файла должен быть следующим

id-1|категория|текст статьи -*- id-2|категория|текст статьи

1|животные| 

Собакай

Текст статьи про собаку

-*- 2|животные|

Суслик

Текст статьи про суслика

-*- 3|животные|

Олень

Текст статьи про оленя

-*- 4|растения|

Кульбаба

Текст статьи про кульбабу

-*- 5|растения|

Айстра

Текст статьи про айстру

-*- 6|растения|

Бавовник

Текст статьи про бавовник

Контроллер articlesController заполним следующим кодом

 $result = []; foreach ($items as $item) < //Разделяем данные одной статьи id категорию и текст $article = explode('|', $item); //Отбор по категориям if ($category === 'популярные' || $article['1'] === $category) < //Формируем конечный масив со статьями $result[] = [ 'id' =>$article['0'], 'category' => $article['1'], 'text' => $article['2'] ]; > > //Передаем данные в шаблон return ['articles' => $result, 'category' => $category]; > function articles_view() < $id = $_GET['id']; $text = file_get_contents('db.txt'); $items = explode('-*-', $text); $result = NULL; foreach ($items as $item) < $article = explode('|', $item); if ($id == $article['0']) < $result = [ 'id' =>$article['0'], 'category' => $article['1'], 'text' => $article['2'] ]; > > return ['article' => $result]; > 

Файлы вида views/articles/index.php и views/articles/view.php

Итого

Вот и все 🙂 Я конечно не ожидал что это займет у меня почти пол ночи времени. Если вам понравилась публикация оставляйте комменты и будет продолжение или оставляйте критику дабы я смог отшлифовать материал, исправить ошибки и в дальнейшем готовить материал еще лучше. Заранее благодарен.

Источник

Как создать файл index php

Создание php файла «вручную».

Создать php файл с помощью «php»

Что означает создание php файла «вручную»

Любой способ, в котором вы непосредственно взаимодействуете с php файлом и называется — «создание файла php вручную.»

Что означает «создать php файл с помощью «php»«

Существует несколько функций, которые могут это делать!

Создать файл php на компьютере

Как создать файл php на компьютере — если у вас вообще нет никаких программ, которые могут создавать php файл, то это не повод расстраиваться! Ваш компьютер вам не враг, а друг!

Открываем любую папку, где вам требуется создать php файл нажимаем ПКМ внутри папки, в выпавшем окне ищем строку создать.

Далее выбираем любой файл, вообще не важно!

Создать файл php на компьютере

После создания любого файла, наводим мышку на него и нажимаем F2, название файла и разрешение становится доступным вбиваем требуемое название с разрешением файла php. (если нет разрешение — ищи показать разрешение для зарегистрированных файлов.)

Создать файл php на компьютере

Как создать файл php в блокноте

Для того, чтобы сделать файл php в блокноте нам потребуется:

Далее → вбираем название файла и добавляем разрешение php сохраняем!

Как создать файл php в блокноте

Php создать файл на сервере

Для того, чтобы создать php файл на сервере есть несколько функций! Я пользуюсь функцией file_put_contents

$file= «здесь путь/название файла»;

Если вы в переменную $file поместите просто название файла, то файл создастся в папке размещения скрипта. Если у вас единая точка входа, то файл создастся в корневой папке.

Php создать файл на сервере видео

Как создать файл на сервере — я совсем забыл, что у меня есть видео на тему создания файла на сервере! Единственное, что нужно — это вместо html поставить разрешение php!

Друзья!

Берем путь и присоединяем к нему $home

$file = $home . «здесь путь/название файла «;

Php создать файл если не существует

У нас есть условие! Если файл не существует, то создать его!

Для этого потребуется условие и функция file_exists

Если файла php не существует, то создадим его с помощью file_put_contents.

$rezult = ‘Файл ‘.$file.’ существует’;

$rezult = ‘Файл ‘.$file.’ НЕ существует’;

file_put_contents(«index.html», «привет мир!»>;

Пример создания файла php при нажатии на кнопку

То вы можете сделать файл php онлайн!

Если вы видите такую строчку:

То вам сперва нужно удалить файл, а потом уже вернуться на эту страницу и у вас будет возможность создать файл php онлайн на сервере!

Сделать файл php при нажатии на кнопку с содержимым

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

Из формы с помощью post отправляем два значения.

Загоняем каркас страницы с нашими переменным в другу переменную:

С помощью file_put_contents записываем данные в файл :

И последнее о чем не сказали — это переменная $name_page — которая будет названием файла. Для этого, русский текст заголовка превратим в латиницу с помощью транслитерации Какими программами пользуюсь(пользовался) я!?

Составим рейтинг программ чем больше число, тем свежее.

Я начинал с Namo 9 — вся кривая была, не знаю, сейчас существует или нет!

В свое время считал программу — Dreamweaver самой крутой и классной! Но время проходит и потом написал целую страницу Почему сегодня не Dreamweaver!?

Хорошая, простая, бесплатная программа — Notepad для работы с кодом, не только php, до сих пользуюсь и сейчас установлена в на компе!

Основная — Sublime, которой пользуюсь больше времени, чем всеми другими!

Источник

Оцените статью