Самый быстрый способ создать простые веб -сайты с помощью PHP!
Установка
О Velox
Архитектура
Конфигурация
Классы
Функции
Команды
Темы
Расширение Velox
MVC
Шаблон
Аутентификация
Изменение
Документация
Если вам понравился этот проект и вы хотели бы поддержать его развитие, было бы оценено его!

Проверьте демонстрацию или играйте с Repl .
Вам хочется чтение? Проверьте полный API на веб -сайте документации на marwanalsoltany.github.io/velox .
composer create-project marwanalsoltany/velox my-velox-app ПРИМЕЧАНИЕ. Возможно, вам потребуется добавить --stability=dev в зависимости от версии/ветви. Вы также можете добавить флаг --no-dev чтобы не устанавливать зависимости разработки.
git clone https://github.com/MarwanAlsoltany/velox.git my-velox-appФакт: если вы не хотите использовать какие -либо другие сторонние пакеты. Установка Velox с использованием GIT достаточно.
Загрузите Velox как .zip или .tar.gz и извлеките его в свой серверный корневой каталог.
Совет: если вы хотите быстро проверить Velox, и у вас нет доступного веб-сервера, используйте любой метод установки и запустите php bin/app-serve из внутреннего каталога Velox. Эта команда развернет веб -сервер разработки на localhost:8000 (обратите внимание, что вам нужно, по крайней мере, PHP установлен в вашей системе).
Velox-это легкая микрофровая работа, которая делает создание простого веб-сайта с использованием PHP Joyful. Это помогает вам быстрее и эффективнее создавать будущие веб-сайты. Он предоставляет компоненты, которые облегчают процесс создания веб -сайта с использованием PHP. У Velox нет никаких зависимостей, пакет Velox и все, что ему нужно, включено в сам проект. Все, что предоставляет Velox, - это способ работать с конфигурацией , передавать данные , маршруты регистрации, взаимодействовать с базой данных , визуализации рендеринга, обработки исключений , кода автозагрузки и разрешения активов. Он обеспечивает представление и части контроллера шаблона проектирования MVC . Глядя от v1.3.0 , Velox также предоставляет модельную часть, что делает ее полностью изготовленной структурой MVC и начиная с v1.4.0 она также поставляется с простой системой аутентификации. Velox также можно использовать в качестве статического генератора сайтов, если все, что вам нужно, это HTML -файлы в конце.
Velox был создан для решения конкретной проблемы, это способ создать веб -сайт, который находится между динамическим и статичным, способ создать простой веб -сайт с небольшим количеством страниц, не будучи вынужденными использовать структуру или CMS, которые поставляются с тонкой вещей, которые никогда не будут использоваться, он легкий, минимальный и прямой.
Не рекомендуется использовать Velox, если у вас есть промежуточный проект, вам было бы лучше использовать устоявшуюся структуру. Velox не является инициативой для изобретения колеса, вы можете рассматривать Velox как стартер-KIT для небольших проектов.
У Velox есть очень специальные простые веб-сайты, и здесь предназначены действительно простые веб-сайты. Преимущество в том, что у вас нет вещей, которые вам не нужны. Сравнение Velox с Laravel или Symfony не имеет значения, так как эти рамки играют в совершенно другой области, также стоит упомянуть, что Velox намного проще, чем просвет или тонкий.
| Каталог | Описание |
|---|---|
bootstrap | Вот где Velox загружает приложение. Обычно вам не нужно ничего менять в этом каталоге, если только вы не хотите расширить функциональность Velox за пределами основных вещей. |
bin | Здесь расположены исполняемые файлы PHP. Вы можете свободно добавить свой или удалить весь каталог. |
app | Здесь будет размещена ваша собственная логика бэкэнд. Вы будете в основном работать здесь для бэкэнд -части вашего приложения. |
classes | Здесь живут исходные файлы Velox. Вы не должны касаться здесь, если вы не хотите сделать свою собственную версию Velox. |
functions | Вот где все функции, которые загружаются в приложении в прямом эфире. Вы можете свободно добавить свой или удалить весь каталог. |
includes | Здесь будут размещены все файлы, которые должны быть предварительно загружены. Вы можете свободно добавить свой или удалить весь каталог. |
themes | Здесь будут размещены все ваши фронтальные темы. Вы будете в основном работать здесь для фронтальной части вашего приложения. |
config | Здесь будут жить все файлы конфигурации. Все файлы здесь будут доступны с помощью класса Config во время выполнения. |
storage | Здесь Velox будет писать кэши и журналы. Вы также можете использовать этот каталог для хранения активов для установки. |
public | Именно здесь вы должны поместить свой index.php с символикой для статических активов (например assets/ каталог активных тем) для максимальной безопасности. Вы можете свободно удалить этот каталог, если хотите. |
vendor | Здесь будут размещены зависимости вашего композитора. Вы можете свободно удалить этот каталог, если не хотите использовать композитор. |
Консультации: большинство файлов, перечисленных в этих каталогах, задокументированы. Посмотрите на них, чтобы узнать больше о Velox.
Точка входа для приложения Velox - это index.php , здесь вам нужно потребовать bootstrap/autoload.php , зарегистрировать некоторые маршруты с помощью их обработчиков с помощью Router::class и запустить маршрутизатор. Это все, что вам нужно, чтобы иметь рабочее приложение Velox.
<?php
require ' bootstrap/autoload.php ' ;
Router:: handle ( ' / ' , function () {
return View:: render ( ' home ' , [ ' title ' => ' Home ' ]);
});
Router:: start (); Кроме того, вы можете добавить Middlewares с помощью Router::middleware() и/или настройки обработчиков для ответов 404 и 405 с использованием {global.errorPages.CODE} значения конфигурации.
В качестве альтернативы, вы можете извлечь «часть регистрации маршрутов» в свой собственный файл и сообщить об этом Velox с помощью bootstrap/additional.php . Начиная с v1.2.0 Velox делает это по умолчанию, файл includes/routes/web.php - это то, где вы должны зарегистрировать свои маршруты. Маршрутизатор также начнется автоматически, если не начнется явно.
ПРИМЕЧАНИЕ. Чтобы Velox работал правильно и безопасно, вам необходимо перенаправить все запросы на точку записи приложения ( index.php ) и блокировать все запросы на другие файлы PHP на сервере (посмотрите на .htaccess.dist , чтобы начать с Apache).
В следующей таблице перечислены все файлы конфигурации, которые поставляются с Velox.
| Файл конфигурации | Описание |
|---|---|
global.php | Этот файл конфигурации содержит некоторые глобальные переменные, которые используются практически всеми классами (конфигурация приложения). |
router.php | Этот файл конфигурации можно использовать для переопределения параметров Router::class Default. |
session.php | Этот файл конфигурации содержит конфигурацию сеанса, он используется Session::class . |
database.php | Этот файл конфигурации содержит учетные данные базы данных, он используется Database::class . |
auth.php | Этот файл конфигурации содержит конфигурацию аутентификации, он используется Auth::class . |
theme.php | Этот файл конфигурации можно использовать для редактирования/расширения конфигурации темы. |
view.php | Этот файл конфигурации можно использовать для настройки всего о представлениях. Это используется View::class . |
data.php | Этот файл конфигурации может использоваться для предоставления любых произвольных данных, которые затем будут введены в Data::class . |
cli.php | Этот файл конфигурации можно использовать для включения/отключения команд или изменения их аргументов. |
Факт: вы также можете свободно добавить свои собственные файлы конфигурации, все, что вам нужно сделать, это создать новый файл в /config и добавить в него свою конфигурацию. Velox узнает об этом файле и загрузит его в приложение. Вы можете получить доступ к вашей конфигурации через Config::get('filename.whateverKeyYouWrote') .
Классы Velox разделены на четырех имен:
MAKSVeloxMAKSVeloxBackendMAKSVeloxFrontendMAKSVeloxHelperВ следующей таблице перечислены все доступные классы с их описанием:
| Сорт | Описание |
|---|---|
VeloxApp | Класс, который служит основным сервисным контейнером для Velox. |
BackendEvent | Класс, который предлагает простую функциональность обработки событий (отправка и прослушивание). |
BackendConfig | Класс, который загружает все из каталога /config и делает его как массив, доступный через точечную ноцию. |
BackendRouter | Класс, который служит маршрутизатором и точкой входа для приложения. |
BackendGlobals | Класс, который служит абстракцией/оберткой для работы с суперглобалами. |
BackendSession | Класс, который предлагает простой интерфейс для работы с сеансами. |
BackendController | Абстрактный класс, который служит базовым контроллером, который может быть расширен для создания обработчиков маршрутизатора. |
BackendDatabase | Класс, который представляет базу данных и обрабатывает операции базы данных. |
BackendModel | Абстрактный класс, который служит базовой моделью, которая может быть расширена для создания пользовательских моделей. |
BackendAuth | Класс, который служит системой аутентификации для пользователей. |
FrontendData | Класс, который служит абстрактной сумкой/хранилищем данных, доступной через точечную ноцию. |
FrontendView | Класс, который визует файлы (макеты, страницы и частичные) с возможностью включать дополнительные файлы, разделить содержимое страницы на разделы и визуализированные представления. |
FrontendHTML | Класс, который служит свободным интерфейсом для написания HTML в PHP. Это также помогает в создании HTML -элементов на лету. |
FrontendPath | Класс, который служит резолювертом пути для разных путей/URL -адресов приложения. |
HelperDumper | Класс, который сбрасывает переменные и исключение в хорошем форматировании. |
HelperMisc | Класс, который служит владельцем для различных различных функций полезности. |
Примечание: все, что пакет Velox предоставляет из коробки.
Факт: App , Event , Config , Router , Globals , Session , Database , Auth , Data , View , HTML , классы Path подселяются в пространстве корневых имен для простоты использования.
Функции Velox делятся на эти файлы:
helpers.php : Здесь живут вспомогательные функции для классов Velox, это в основном функции, которые возвращают экземпляр класса или псевдоним некоторым методом.html.php : Здесь живут вспомогательные функции HTML, это не что иное, как псевдонимы для наиболее используемых функций PHP с HTML.В следующей таблице перечислены все доступные функции, и к какому классу/группе они принадлежат:
| Класс/группа | Функция (S) |
|---|---|
App::class | app() ,abort() ,terminate() |
Event::class | event() |
Config::class | config() |
Router::class | router() ,handle() ,redirect() ,forward() |
Database::class | database() |
Globals::class | globals() |
Session::class | session() ,flash() ,csrf() |
Auth::class | auth() |
View::class | view() ,render() ,render_layout() ,render_page() ,render_partial() ,section_push() ,section_reset() ,section_start() ,section_end() ,section_yield() ,include_file() |
Data::class | data() ,data_has() ,data_get() ,data_set() |
HTML::class | html() |
Path::class | path() ,app_path_current() ,app_url_current() ,app_path() ,app_url() ,theme_path() ,theme_url() ,assets_path() ,assets_url() |
Dumper::class | dd() ,dump() ,dump_exception() |
| HTML -помощники | he() , hd() , hse() , hsd() , st() , nb() |
Факт: вы также можете свободно добавить свои собственные функции, все, что вам нужно сделать, это создать новый файл в /functions и добавить в него свои функции. Velox узнает об этом файле и загрузит его в приложение.
Velox поставляется с некоторыми удобными командами, которые вы можете использовать для выполнения некоторых повторяющихся задач. Вы можете выполнить эти команды, используя php bin/{command-name} .
В следующей таблице перечислены все доступные команды с их описанием.
| Командование | Описание |
|---|---|
app-serve | Эта команда запускает сервер разработки. |
app-mirror | Эта команда отражает приложение в /public Directory. |
config-cache | Эта команда кэширует текущую конфигурацию. |
config-dump | Эта команда сбрасывает текущую конфигурацию с синтаксисом. |
cache-clear | Эта команда очищает кеши. |
Вы можете настроить эти команды, используя файл config/cli.php . Здесь вы можете включить/отключить их или предоставить для них разные аргументы.
Если вы хотите сделать все эти команды доступными через один интерфейс. Проверьте мою другую смесь пакета, которая сделает это для вас и даже больше.
Velox построен вокруг идеи тем , тема разделена на четыре каталоги:
assets/ каталог - это место, где будут размещены все ваши статические активы, связанные с этой темой.layouts/ каталог - это то, где вы определяете свои макеты. Макет в терминологии Velox - это внешнее создание веб -страницы.pages/ каталог - это то, где вы размещаете контент, специфичный для каждой страницы, страница будет завершена с некоторой макетом по вашему выбору и, наконец, будет отображаться. Страница в терминологии Velox - это фактическое содержание веб -страницы.partials/ каталог - это то, где вы помещаете все свои многоразовые части темы, которые затем будут использоваться в ваших макетах, страницах или других частичных. Хорошим примером для частичных может быть: компоненты , включать и элементы контента . Вы можете настроить поведение тем, используя файл config/theme.php . Здесь вы можете установить активную тему с active ключом. Темы могут наследовать друг от друга, установив родительский (ы) с parent ключом. Вы также можете изменить структуру каталога тем, если хотите использовать ключ paths . Другие конфигурации (например, кэширование), которые стоит взглянуть на то, что связано с темами, можно найти в файле config/view.php .
Совет: Вы можете взглянуть на предоставленную тему velox , чтобы увидеть, как все вещи работают вместе на практике.
themes/velox/layouts/main.phtmlthemes/velox/pages/home.phtmlthemes/velox/partials/text-image.phtml Чтобы добавить свои собственные классы, используйте app/ каталог, именно здесь вы должны поставить свою собственную бизнес -логику. Обратите внимание, что вы должны следовать PSR-4, чтобы Velox загрузил ваши занятия. См. app/Controller/DefaultController.php , чтобы получить идею.
Вот список некоторых важных файлов, которые вы должны рассмотреть при работе с Velox:
autoload/additional.php .config/data.php .includes/routes/web.php (начиная с v1.2.0 ).includes/events/system.php (начиная с v1.2.0 ). <?php
namespace App Model ;
use MAKS Velox Backend Model ;
class Person extends Model
{
protected static ? string $ table = ' persons ' ;
protected static ? array $ columns = [ ' id ' , ' first_name ' , ' last_name ' , ' age ' , ...];
protected static ? string $ primaryKey = ' id ' ;
public static function schema (): string
{
// return SQL to create the table
}
} <?php
use App Model Person ;
// creating/manipulating models
$ person = new Person (); // set attributes later via setters or public assignment.
$ person = new Person([ ' first_name ' => $ value , . . . ]); // set attributes in constructor
$ person -> get ( ' first_name ' ); // get an attribute
$ person -> set ( ' last_name ' , $ value ); // set an attribute
$ person -> getFirstName (); // case will be changed to 'snake_case' automatically.
$ person -> setLastName ( $ value ); // case will be changed to 'snake_case' automatically.
$ person -> firstName ; // case will be changed to 'snake_case' automatically.
$ person -> lastName = $ value ; // case will be changed to 'snake_case' automatically.
$ attributes = $ person -> getAttributes (); // returns all attributes.
$ person -> save (); // persists the model in the database.
$ person -> update ([ ' first_name ' => $ value ]); // updates the model and save changes in the database.
$ person -> delete (); // deletes the model from the database.
Person:: create ( $ attributes ); // creates a new model instance, call save() on the instance to save it in the database.
Person:: destroy ( $ id ); // destroys a model and deletes it from the database.
// fetching models
$ count = Person:: count (); // returns the number of models in the database.
$ person = Person:: first ();
$ person = Person:: last ();
$ person = Person:: one ([ ' first_name ' => ' John ' ]);
$ persons = Person:: all ([ ' last_name ' => ' Doe ' ], $ order , $ offset , $ limit );
$ person = Person:: find ( $ id ); // $id is the primary key of the model.
$ persons = Person::find( ' first_name ' , ' John ' , ' last_name ' , ' Doe ' . . .); // or
$ persons = Person:: find ([ ' first_name ' => ' John ' , ' last_name ' => ' Doe ' ]);
$ persons = Person:: findByFirstName ( ' John ' ); // fetches using an attribute, case will be changed to 'snake_case' automatically.
$ persons = Person:: where ( ' first_name ' , ' = ' , $ value ); // fetches using a where clause condition.
$ persons = Person:: where ( ' last_name ' , ' LIKE ' , ' %Doe ' , [[ ' AND ' , ' age ' , ' > ' , 27 ], ...], ' age DESC ' , $ limit , $ offset );
$ persons = Person:: fetch ( ' SELECT * FROM @table WHERE `first_name` = ? ' , [ $ value ]); // fetch using raw SQL query. <?php
namespace App Controller ;
use MAKS Velox Backend Controller ;
use App Model Person ;
class PersonsController extends Controller
{
public function indexAction ()
{
$ persons = Person:: all ();
return $ this -> view -> render ( ' persons/index ' , [
' title ' => ' Persons ' ,
' persons ' => $ persons
]);
}
// other CRUD actions ...
/**
* Persons search action.
*
* @route("/persons/search", {GET})
*/
public function searchAction ()
{
// ...
}
/**
* Persons middleware.
*
* @route("/persons/*", {GET, POST})
*/
public function personsMiddleware ()
{
// ...
}
} Факт: операции CRUD (а именно: index , create , store , show , edit , update , destroy ) зарегистрированы и настроены по умолчанию. Чтобы автоматически зарегистрировать свои собственные маршруты, используйте аннотацию @route("<path>", {<http-verb>, ...}) . См. Controller::registerRoutes() Docblock, чтобы узнать больше.
Факт: чтобы сделать модель доступной в качестве свойства для контроллера ( $this->model ), используйте Controller::associateModel() . См. Controller::associateModel() Docblock, чтобы узнать больше.
Консультации: если в режиме производства, в качестве ярлыка, выбросить исключение с соответствующим кодом {global.errorPages.CODE} Значение конфигурации будет отображать соответствующую страницу ошибки. Например, при броске new Exception('Not found', 404) образуют контроллер, будет отображена страница ошибки 404 и будет передана сообщение об исключении. Если страница не настроена, страница ошибки 500 будет отображаться как запасная часть.
Velox не имеет никакого способа проверки данных. Проверьте мой другой пакет Mighty, который сделает это для вас и даже больше.
{# theme/pages/persons/index.phtml #}
{! @extends 'theme/pages/persons/base' !}
{! @block content !}
{! @super !}
< h1 > {{ $title } } </ h1 >
{! @if ( isset ( $persons ) && count ( $persons ) ) !}
< ul >
{! @foreach ( $persons as $person ) !}
< li > {{ $person -> firsName } } {{ $person -> lastName } } </ li >
{! @endforeach !}
</ ul >
{! @endif !}
{! @endblock !} Совет: Проверьте модель Person и PersonsController чтобы увидеть реалистичный пример.
Velox поставляется со своим собственным шаблонным двигателем. Этот шаблонный двигатель очень интуитивно понятен и легко ладить, если у вас есть опыт работы с любым другим матричным двигателем, изучая, что это было бы на несколько минут. Обратите внимание, что использование этого шаблонного двигателя является необязательным. Вы можете просто использовать необработанную PHP в своих взглядах.
В следующей таблице перечислены все доступные теги и что они делают:
| Ярлык | Описание |
|---|---|
{! @extends 'path/to/template' !} | Распространение шаблона, блоки этого шаблона будут унаследованы. |
{! @include 'path/to/file' !} | Включите файл, он будет отображаться до включения (не может получить доступ к переменным контекста). |
{! @embed 'path/to/file' !} | Введите файл, это будет включено как есть (может получить доступ к переменным контекста). |
{! @block name !}{! @endblock !} | Создайте блок, чтобы обернуть код. |
{! @super !} | Используйте его внутри блока в расширенном шаблоне, чтобы наследовать содержимое родительского блока. |
{! @block(name) !} | Распечатать блок. Нужно вызвать как минимум один раз, чтобы отобразить блок. |
{! @foreach ($vars as $var) !}{! @endforeach !} | Управляющие структуры (петли, если операторы, ...). Все структуры управления PHP доступны ( if , else , elseif , do , while , for , foreach , continue , switch , break , return , require , include ) с тем же синтаксисом, но просто префикс с символом @ , если структура управления является первым словом в теге. |
{! $var = '' !} | Переменные назначения. Содержание может быть переменной или любым действительным выражением PHP. |
{{ $var }} | Распечатать переменную. Содержание может быть переменной или любым выражением PHP, которое может быть применено в строку. |
{{{ $var }}} | Распечатайте переменную без выхода. Содержание может быть переменной или любым выражением PHP, которое может быть применено в строку. |
{# This is a comment #} | Комментировать что -то. Это будет комментарий PHP (не будет доступен в финальном HTML). |
Совет: Взгляните на взгляды persons на PersonsController в теме Velox для реалистичного примера.
Начиная с v1.4.0 Velox поставляется с простой встроенной системой аутентификации. Эта система очень проста и проста в использовании.
<?php
use MAKS Velox Backend Auth ;
// instantiate the Auth class
$ auth = new Auth (); // or Auth::instance();
// register a new user
$ status = $ auth -> register ( ' username ' , ' password ' );
// unregister a user
$ status = $ auth -> unregister ( ' username ' );
// log in a user
$ status = $ auth -> login ( ' username ' , ' password ' );
// log out a user
$ auth -> logout ();
// authenticate a user model
Auth:: authenticate ( $ user );
// check if there is a logged in user
$ status = Auth:: check ();
// retrieve the current authenticated user
$ user = Auth:: user ();
// add HTTP basic auth
Auth:: basic ([ ' username ' => ' password ' ]); Консультации: Проверьте UsersController , чтобы увидеть реалистичный пример.
Velox-это проект с открытым исходным кодом, лицензированный по лицензии MIT .
Авторские права (C) 2021 Марван аль-Сольтани. Все права защищены.