Janggelan - неожиданная PHP -структура, которая дает вам легкую. Это просто, но мощный и приятный в использовании. Как и другие рамки, вы не получите трудности при попытке понять Джанггелан.
Janggelan разработан и фокусируется на основе концепции MVC. Таким образом, мы пытаемся избежать объединения системы MVC с другими инструментами, которые могут помочь вам в разработке, потому что она может снизить производительность. Конечно, мы продолжаем приложить это, чтобы помочь вашему развитию, но оно будет поставляться с разными обложками.
Пожалуйста, прочитайте документацию для получения дополнительной информации.
Мы знаем, что не можем отлично закончить эту структуру, и, возможно, не соответствовали тому, что вы хотите. Но мы всегда пытаемся закончить это лучше и сделать это неожиданным для вас. Вы можете внести свой вклад с нами.
Добавили несколько новых инструментов.
Переписать все сценарии Джангелана для новых лучших производительности.
Уменьшить некоторые нагрузки на сервер.
Добавлены некоторые новые методы Model : where() , exec() , execute() .
Добавлена документация.
Используется кэширование и сжатие gZip на .htaccess .
PHP 7
PDO PHP расширение
Загрузите файл Janggelan, извлеките его в каталог вашего приложения.
Если вы хотите опубликовать или установить Janggelan для общего хостинга, самый безопасный способ сделать - это размещение файлов и каталогов Janggelan в server root и перемещают все содержимое public папки в public_html или www .
Вы запустите свое заявление из public / public_html / www Directory.
Если вы нашли проблемы после установки, пожалуйста, проверьте разрешения на файл.
__ backend/
|__ .secrets/
|__ config/
|__ framework/
|__ global/
|__ register/
|__ vendor/
|__ autoload.php
|__ composer.json
|__ force.uri
__ public/
|__ assets/
|__ .htaccess
|__ index.php
__ worksheet/
|__ controllers/
|__ model/
|__ providers/
|__ tools/
|__ views/
|__ requests.php
В первый раз давайте запустим Janggelan на вашем сервере. Убедитесь, что ваша система сделана с помощью System Requirements и installation выше.
Перейдите в свой каталог приложений, где размещены файлы Janggelan. Введите в public папку. В качестве примера, в Linux вы можете сделать с этим:
cd /var/www/html/your_application/publicОткройте сервер Localhost:
php -S localhost:8000Или вы можете сделать выше напрямую с этой командой:
php -S localhost:8000 -t /var/www/html/your_application/publicТеперь откройте свой браузер и посетите Localhost: 8000.
В Джангелане вы назовите это в качестве requests . В других рамках PHP, таких как Ларавель, это называется как routes . Каждые запросы в Janggelan обрабатываются на worksheet/requests.php . Чтобы создать новый запрос, перейдите в этот файл. Там вы увидите пример request , например,:
$ this -> request ( ' GET / @Hello::world ' ); Приведенный выше пример содержит: «Запрос URI / с методом запроса GET . Если посещение пользователя / и URI действителен, он будет перенаправлен и перейти на контроллер Hello с Method / Function world ». На основании примера, теперь вы можете создать свои пользовательские запросы с помощью этих параметров: (аргумент или параметр 1 разделен space ):
// Redirected to Controller.
// Request method can be 'GET' or 'POST'
$ this -> request ( ' GET /home @Hello::world ' );
// Redirected to View.
$ this -> request ( ' GET /home (viewName) ' );
// Redirected to Controller with Protected Rule 'login'.
$ this -> request ( ' GET /home @Hello::world !!login ' );
// Redirected to View with Protected Rule 'login'.
$ this -> request ( ' GET /home (viewName) !!login ' );
// Will proceed the Closure or Callback directly.
$ this -> request ( ' GET /home ' , function ()
{
// Do some stuff...
});
// Will proceed the Closure or Callback directly with Protected Rule 'login'.
$ this -> request ( ' GET /home !!login ' , function ()
{
// Do some stuff...
}); Вы узнаете больше о Protected Rule позже. Обратите внимание, используйте Closure или Callback только при тестировании. Мы всегда рекомендовали использовать View или Controller в качестве перенаправления.
Controller S размещены в worksheet/controllers . Попробуйте создать новый Controller с созданием нового файла, предположим, что имя файла MyController.php . Затем, в MyController.php , напишите этот базовый стиль Controller :
<?php namespace controller ;
class MyController extends framework parents Controller
{
public function welcome ()
{
echo ' Welcome to my Controller. ' ;
}
} На worksheet/requests.php добавьте новый запрос, который будет продолжать Controller .
$ this -> request ( ' GET /test @MyController::welcome ' ); Теперь посетите /test в своем браузере. Если все в порядке, вы увидите вывод: Welcome to my Controller. Полем Имя файла Controller должно быть таким же и сопоставлено с именем класса Controller . Кроме того, вы должны позаботиться о Namespace . Если вы создаете контроллер внутри нового каталога, как это:
__ controllers/
|__ my_new_folder/
|__ MyController.php
Тогда Namespace вашего Controller должно быть похоже на это: (это также применимо для всех систем пространств имен)
<?php namespace controllers my_new_folder ;
class MyController extends framework parents Controller
{
//
} Вы можете избежать расширения frameworkparentsController если ваш Controller не нуждается в использовании некоторых встроенных функций, таких как $this->LOAD_VIEW() , $this->GET_RULE() и т. Д.
Model S размещены в worksheet/models . Model используется для общения с базой данных. Итак, когда вы создаете Model , убедитесь, что она соответствует вам данным в базе данных. Чтобы использовать Model , необходимо настроить конфигурацию базы данных в backend/.secrets/.db или посмотреть документацию о Configuring Database .
После того, как выше сделано, давайте попробуем создать Model . Во -первых, создайте новый файл в worksheet/models . Предположим, что имя файла - User.php . Затем напишите контент файла с помощью этого основного стиля Model :
<?php namespace model ;
class User extends framework parents Model
{
// This is your table name. It is required by system.
protected static $ table = ' user ' ;
// This is your table columns. Only required if you want to create new
// table into Database.
protected static $ columns = [
' id ' => ' INT(11) AUTO_INCREMENT PRIMARY KEY ' ,
' username ' => ' VARCHAR(255) NOT NULL ' ,
' password ' => ' VARCHAR(255) NOT NULL '
];
} В вашем Controller вызовите класс Model :
<?php namespace controller ;
use model User ;
class MyController extends framework parents Controller
{
public function workingWithModel ()
{
// Initialize object of Model 'User'.
// Now you can use your Model.
$ user = new User ;
}
} Если у вас нет таблицы с именем user раньше, просто используйте метод create() для автоматического создания таблицы при запуске метода Controller workingWithModel() .
$ user = new User ;
// this will create new table into Database with columns and properties that
// already defined on 'protected static $columns'.
$ user -> create (); Почти сделано, теперь вам просто нужно было использовать Model с некоторыми встроенными функциями или методами.
$ user = new User ;
// Open Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> open ();
// Close Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> close ();
// Delete all data in Model 'User' | table 'user'.
$ user -> delete ();
// Delete all data in Model 'User' | table 'user' | where id = 1 and username = name.
$ user -> delete ([ ' id ' => 1 , ' username ' => ' name ' ]);
// Insert new data to Model 'User' | table 'user' | to column username with value
// 'Linus Torvald'.
$ user -> insert ([ ' username ' => ' Linus Torvald ' ]);
// Update data in Model 'User' | table 'user' | where id = 1. Update username
// to value 'Linus Torvald'.
$ user -> update ([ ' username ' => ' Linus Torvald ' ], [ ' id ' => 1 ]);
// Get all data from Model 'User' | table 'user'.
$ user -> get ();
// Get 5 data results from Model 'User' | table 'user'.
$ user -> get ( 5 );
// Select all data from column 'username' of Model 'User' | table 'user'.
$ user -> select ( ' username ' )-> get ();
// Get data from column 'username' of Model 'User' | table 'user' | take 4 data results
// start from data number 2.
$ user -> range ( 4 , 2 )-> get ();
// Get data from Model 'User' | table 'user' | based on the clause 'WHERE id = 1'.
// You can do anything inside of 'clause()'.
$ user -> clause ( ' WHERE id = 1 ' )-> get ();
// Select data from column 'username' of Model 'User' | table 'user' |
// where id = 1 AND username = 'Linus Torvald'.
$ user -> where ([ ' id ' => 1 , ' username ' => ' Linus Torvald ' ])-> get ();
// Exec query.
// 'query' is anything sql queries such as 'DELETE * FROM' or 'SELECT *'.
$ user -> exec (query);
// Execute query with bind params (PDO prepare statement).
$ user -> execute (query, bindParams);
// You can custom you queries with chaining functions or methods like this:
$ user -> select ( ' username ' )-> range ( 4 , 2 )-> get ();
// Using prepare statement
$ user -> clause ( ' WHERE id=:id ' )-> bindParams ([ ' id ' => 1 ])-> get (); View S помещается в worksheet/views . По сути, View - это шаблон, он может быть HTML или PHP -код. Ничего особого правила для View . Но в Janggelan расширение View всегда .php . Вы можете написать что -нибудь код View . Чтобы использовать View , вам просто нужно назвать его. Пример:
// Calling View 'example.php' on requests.php
// Note that you cannot calling View with Closure or Callback.
$ this -> request ( ' GET / (example) ' );
// Calling View 'example.php' inside folder 'new_folder' on requests.php
$ this -> request ( ' GET / (new_folder/example) ' );
// Calling View 'example.php' on Controller
$ this -> LOAD_VIEW ( ' example ' );
// Calling View 'example.php' inside folder 'new_folder' on Controller
$ this -> LOAD_VIEW ( ' new_folder/example ' ); Если вы хотите разместить View внешнего worksheet/views везде внутри public или public_html или каталога www , вам просто нужно добавить / :
$ this -> request ( ' GET / (/example) ' );
$ this -> LOAD_VIEW ( ' /example ' ); Это сообщит системе найти View на public/example.php или public_html/example.php или www/example.php .
Теперь, как передавать данные с View . На самом деле, вы можете сделать это просто. Just compact() Данные: обратите внимание, что передача данных возможна только при вызове View Controller .
$ data = ' This is data ' ;
$ this -> LOAD_VIEW ( ' example ' , compact ( ' data ' )); Затем в View File example.php просто вызовите переменную:
<p> <?php echo $ data ; ?> </p> Janggelan предоставляет некоторые инструменты, которые вы можете использовать, и, возможно, полезны для ваших случаев разработки. Они размещены в worksheet/tools . Чтобы использовать их, просто нужно назвать их имя класса. Пример:
<?php namespace controller ;
use tool Validation ;
class Example extends framework parents Controller
{
private $ validation ;
function __construct ()
{
$ this -> validation = new Validation ;
}
} Protected Rule - это система в Джангелане для защиты вашей page , View или Uri , как система входа в систему. Protected Rule хранится анонимные данные, которые всегда проверяются, когда request использовал эту систему. Если пользователь, который посещает, не имеет допустимых анонимных данных, пользователь будет автоматически перенаправляться в target , которая была определена ранее. Это будет легко защищать страницы, которые вы хотите сделать приватным или только для определенных пользователей.
Чтобы сделать новое Protected Rule , перейдите в файл config на backend/config/protected.php . Вы можете сделать более одного Protected Rule . Пример:
<?php return [
// FALSE means, system will uses SESSION to store protected_rule data. Set it TRUE
// if you want to store the data in COOKIE.
' use_cookie ' => FALSE ,
' protected_rule ' => [
// Creating 'Protected Rule' with name 'login'.
// If the data is not valid, then redirect to Controller 'Example'
// method 'protected.'
' login ' => [
' on_false ' => [
' controller ' => ' Example ' ,
' method ' => ' protected '
],
],
// Creating 'Protected Rule' with name 'protect'.
// If the data is not valid, then redirect to View 'example'.
' protect ' => [
' on_false ' => [
' view ' => ' example ' ,
],
],
// Creating 'Protected Rule' with name 'myRule'.
// If the data is not valid, then redirect to uri '/wrong'.
' myRule ' => [
' on_false ' => ' /wrong '
],
]
]; Затем, чтобы применять это Protected Rule , перейдите на worksheet/requests.php и добавьте новый Request : (синтаксис - !! ):
// Applying Protected Rule 'login'.
$ this -> request ( ' GET / @Example::example !!login ' );
$ this -> request ( ' GET / (viewName) !!login ' );
$ this -> request ( ' GET / !!login ' , function ()
{
echo ' If you see this, then you are an Admin. ' ;
}); Как установить действительные данные для пользователя или Protected Rule ? Просто используйте эти построенные ИТ -функции или методы.
$ this -> SET_RULE ( $ name ); Вы также можете передавать значения в Protected Rule :
$ this -> SET_RULE ( $ name , $ values ); Вот полные функции или методы для Protected Rule :
// Check valid data for user or 'Protected Rule';
$ this -> CHECK_RULE ( $ name );
// Set new valid data for user or 'Protected Rule'.
$ this -> SET_RULE ( $ name , $ data = '' );
// Get 'Protected Rule' data.
$ this -> GET_RULE ( $ name );
// Delete valid 'Protected Rule' data.
$ this -> DESTROY_RULE ( $ name ); Чтобы настроить базу данных, перейдите в backend/.secrets/.db . Существует объект для настройки вашей базы данных:
{ "DB_HOST" : " " , "DB_NAME" : " " , "DB_USERNAME" : " " , "DB_PASSWORD" : " " }Установите на все значения ключей с помощью конфигураций базы данных.
По умолчанию Janggelan подтвержден URI для каталога. Если URI, относящийся к папке или каталогу ESSET, система Janggelan не будет запущена, потому что она перенаправлена на эту папку или каталог. Если вы не хотите, чтобы это случилось, откройте File backend/force.uri и перепишите старую ценность в TRUE .
Дали Кевара | [email protected]
Janggelan-это PHP-структура с открытым исходным кодом, лицензированная по лицензии MIT.