MINI — чрезвычайно простое и понятное скелетное PHP-приложение, максимально уменьшенное. MINI НЕ является профессиональным фреймворком и не имеет всех возможностей, которые есть в реальных фреймворках. Если вы просто хотите показать несколько страниц, выполнить несколько вызовов базы данных и немного поработать с AJAX тут и там, не читая огромную документацию по очень сложным профессиональным фреймворкам, тогда MINI может быть вам очень полезен. MINI прост в установке, работает практически везде и не усложняет задачу больше, чем необходимо.
Для более глубокого ознакомления с MINI загляните в эту публикацию в блоге: MINI, чрезвычайно простое PHP-приложение.
У MINI есть младший брат по имени TINY. Он похож на MINI, но работает без mod_rewrite практически в любой среде. Не подходит для живых сайтов, но хорош для быстрого прототипирования.
У MINI также есть старший брат MINI2. Он еще проще, создан с использованием Slim и имеет такие приятные функции, как SASS-компиляция, Twig и т. д.
MINI3 является преемником MINI, использующим исходную структуру приложений MINI1 (без Slim под капотом), но с правильной автозагрузкой PSR-4, несколькими классами моделей и реальными пространствами имен.
Если вы используете Vagrant для своей разработки, то вы можете установить MINI одним щелчком мыши (или одной командой в командной строке) [Vagrant doc]. MINI поставляется с демонстрационным файлом Vagrant (определяет ваш ящик Vagrant) и демо-файлом bootstrap.sh, который автоматически устанавливает Apache, PHP, MySQL, PHPMyAdmin, git и Composer, устанавливает выбранный пароль в MySQL и PHPMyadmin и даже внутри кода приложения. загружает зависимости Composer, активирует mod_rewrite и редактирует настройки Apache, загружает код с GitHub и запускает демонстрационные операторы SQL (для демонстрационных данных). Это происходит на 100% автоматически, через +/- 5 минут вы получите полностью работающую установку MINI2 внутри коробки Ubuntu 14.04 LTS Vagrant.
Для этого поместите Vagrantfile
и bootstrap.sh
из _vagrant
в папку (и ничего больше). Выполните vagrant box add ubuntu/focal64
, чтобы добавить 64-битную версию Ubuntu 20.04 LTS в Vagrant (если она у вас еще не установлена), затем выполните vagrant up
, чтобы запустить коробку. После завершения установки вы можете напрямую использовать полностью установленное демонстрационное приложение по адресу 192.168.33.44
(вы можете изменить это в Vagrantfile). Поскольку это всего лишь быстрая демонстрационная среда, пароль root MySQL и пароль root PHPMyAdmin установлены на 12345678
, проект устанавливается в /var/www/html/myproject
. Вы можете наверняка изменить это внутри bootstrap.sh
. Закройте коробку с vagrant halt
Вы можете установить MINI, включая Apache, MySQL, PHP и PHPMyAdmin, mod_rewrite, Composer, все необходимые настройки и даже пароли внутри файла конфигурации, просто загрузив один файл и запустив его, вся установка будет выполнена на 100% автоматически. Инструкцию можно найти в этой статье блога: Установите MINI за 30 секунд в Ubuntu 14.04 LTS.
application/config/config.php
_install/
(например, с помощью PHPMyAdmin).MINI работает без какой-либо дополнительной настройки. Вы также можете поместить его в подпапку, он будет работать без какой-либо дополнительной настройки. Возможно, будет полезно: простое руководство по установке LAMPP (Linux, Apache, MySQL, PHP, PHPMyAdmin) в Ubuntu 14.04 LTS и то же самое для Ubuntu 12.04 LTS.
server {
server_name default_server _; # Listen to any servername
listen [::]:80;
listen 80 ;
root /var/www/html/myproject/public;
location / {
index index.php;
try_files / $uri / $uri / /index.php?url= $uri ;
}
location ~ .(php)$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
include fastcgi_params;
}
}
Более подробное обсуждение настроек nginx можно найти здесь.
Скрипт использует mod_rewrite и блокирует любой доступ ко всему, что находится за пределами папки /public. Ваша папка/файлы .git, временные файлы операционной системы, папка приложения и все остальное недоступно (при правильной настройке). Для запросов к базе данных используется PDO, поэтому не нужно думать о SQL-инъекции (если только вы не используете крайне устаревшие версии MySQL).
MINI поставляется с небольшим специальным инструментом отладчика PDO (код находится в файле application/libs/helper.php), который пытается эмулировать ваши операторы PDO-SQL. Его чрезвычайно легко использовать:
$ sql = " SELECT id, artist, track, link FROM song WHERE id = :song_id LIMIT 1 " ;
$ query = $ this -> db -> prepare ( $ sql );
$ parameters = array ( ' :song_id ' => $ song_id );
echo Helper:: debugPDO ( $ sql , $ parameters );
$ query -> execute ( $ parameters );
Проект был написан на PHP5, но с выпуском PHP7 больше невозможно называть класс «Error», поскольку сам PHP теперь имеет внутренний класс Error. Переименование было самым простым решением по сравнению с другими вариантами, такими как «ErrorController» и т. д., которые добавляли новые проблемы, такие как имена файлов в верхнем регистре и т. д. (которые не будут работать должным образом в некоторых настройках).
Этот проект распространяется по лицензии MIT. Это означает, что вы можете бесплатно использовать и изменять его в частных или коммерческих проектах.
И, кстати, я также веду блог на Dev Metal.
URL-путь приложения преобразуется непосредственно в контроллеры (= файлы) и их методы внутри приложения/контроллеров.
example.com/home/exampleOne
будет делать то, что говорит метод exampleOne() в application/controllers/home.php.
example.com/home
будет делать то, что говорит метод index() в application/controllers/home.php.
example.com
будет делать то, что говорит метод index() в application/controllers/home.php (резервный вариант по умолчанию).
example.com/songs
будет делать то, что говорит метод index() в application/controllers/songs.php.
example.com/songs/editsong/17
будет делать то, что говорит метод editsong() в application/controllers/songs.php, и передаст ему 17
в качестве параметра.
Самоочевидно, правда?
Давайте посмотрим на метод exampleOne() в домашнем контроллере (application/controllers/home.php): он просто показывает заголовок, нижний колонтитул и страницу example_one.php (в представлениях/home/). По задумке максимально простой и нативный.
public function exampleOne ()
{
// load view
require APP . ' views/_templates/header.php ' ;
require APP . ' views/home/example_one.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Давайте рассмотрим метод index() в контроллере песен (application/controllers/songs.php): Аналогично exampleOne, но здесь мы также запрашиваем данные. Опять же, все предельно упрощено и просто: $this->model->getAllSongs() просто вызывает метод getAllSongs() в файле application/model/model.php.
public function index ()
{
// getting all songs and amount of songs
$ songs = $ this -> model -> getAllSongs ();
$ amount_of_songs = $ this -> model -> getAmountOfSongs ();
// load view. within the view files we can echo out $songs and $amount_of_songs easily
require APP . ' views/_templates/header.php ' ;
require APP . ' views/songs/index.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Для предельной простоты все методы обработки данных находятся в файле application/model/model.php. Это конечно не совсем профессиональная, но самая простая реализация. Посмотрите, как выглядит getAllSongs() в model.php: Чистый и очень простой PDO.
public function getAllSongs ()
{
$ sql = " SELECT id, artist, track, link FROM song " ;
$ query = $ this -> db -> prepare ( $ sql );
$ query -> execute ();
return $ query -> fetchAll ();
}
Результат, здесь $songs, затем можно легко использовать непосредственно внутри файлов представлений (в данном случае application/views/songs/index.php, в упрощенном примере):
<tbody>
<?php foreach ( $ songs as $ song ) { ?>
<tr>
<td> <?php if ( isset ( $ song -> artist )) echo htmlspecialchars ( $ song -> artist , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
<td> <?php if ( isset ( $ song -> track )) echo htmlspecialchars ( $ song -> track , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
</tr>
<?php } ?>
</tbody>
MINI является преемником php-mvc. Поскольку php-mvc не предоставил настоящую структуру MVC (и несколько человек жаловались на это - и это совершенно верно!), я переименовал и пересобрал проект.
... MINI — это всего лишь простой вспомогательный инструмент, который я создал для своей повседневной работы просто потому, что его гораздо проще настроить и использовать, чем настоящие фреймворки. Для повседневной агентской работы, быстрого прототипирования и проектов, управляемых внешним интерфейсом, это совершенно нормально, выполняет свою работу, и нет абсолютно никаких причин обсуждать, почему это «дерьмо по сравнению с Laravel», почему он не следует нескольким принципам MVC или почему нет личной неоплачиваемой поддержки. или нет русского перевода или тому подобные странные вещи. Троллинг в отношении Open-Source-проектов (и их авторов) действительно достиг безумных размеров.
Я написал это бесплатно, добровольно, в свободное время и загрузил на GitHub, чтобы поделиться. Это совершенно бесплатно для частного и коммерческого использования. Если вам это не нравится, не используйте его. Если вы видите проблемы, пожалуйста, напишите тикет (а если вы действительно круты: я очень благодарен за любые коммиты!). Но не бейте, не жалуйтесь, не ненавидьте. Только плохие люди так делают.
Пожалуйста, внесите изменения в ветку разработки (которая содержит версию, находящуюся в разработке), а не в ветку master (которая содержит протестированную и стабильную версию).
декабрь 2002 г.
август 2016 г.
февраль 2015 г.
декабрь 2014 г.
ноябрь 2014 г.
Октябрь 2014 г.
Сентябрь 2014 г.
август 2014 г.
июнь 2014 г.
апрель 2014 г.
Январь 2014 г.
Поддержите проект, арендовав сервер в DigitalOcean или просто оставив чаевые за кофе на BuyMeACoffee.com. Спасибо! :)