Легкий, простой в использовании PHP -платформу для создания веб -сайтов и веб -приложений.
Архитектура Sippy вызывает поражение с Codeigniter, поэтому мы называем это легкой структурой PHP. Тем не менее, помните, что, поскольку Sippy легкий, он не включает в себя много функциональности, которая поставляется с CodeIgniter. Возможно, мы можем добавить функциональность «плагин-n-play» через плагины, контроллеры и библиотеки. Для использования удалить «образец» из файла config в приложении/config/sample.config.php, чтобы это было приложение/config/config.php и заполните данные конфигурации.
Sippy основан на модели разработки моделей-контроллера.
Ваши приложения, конкретные файлы, заходят в папку «Приложение» (вам не нужно касаться папки системы). Внутри папки приложений есть папки для всех конкретных объектов приложения:
Помогатели контроллеров конфигурации
Когда Sippy загружает файлы, он предполагает, что они находятся в соответствующих папках. Поэтому убедитесь, что вы размещаете свои файлы в правильные папки.
Мы рекомендуем вам использовать папку «Активы» в корне для хранения статических файлов ресурсов (CSS, JS и т. Д.) Однако вы можете поместить их в любом месте. Вы также можете использовать функцию site_url() , чтобы помочь включить файлы в ваш HTML или использовать site_url('main/index') чтобы перейти на страницу http://www.yoursite.com/main/index . Например:
< link rel =" stylesheet " href =" <?php echo site_url(); ?>assets/css/style.css " type =" text/css " media =" screen " />Все классы в Sippy используют именование Pascalcase. Связанные имена файлов должны быть одинаковыми, за исключением всего нижнего случая. Так, например, класс Mainclass будет иметь файл mainclass.php. Подчеркивание в классах должно быть включено и в имена файлов.
По умолчанию URL-адреса в Sippy предназначены для того, чтобы быть поисковыми и дружелюбными. Вместо того, чтобы использовать стандартный подход «Строка запроса» к URL-адресам, который является синонимом динамических систем, Sippy использует подход, основанный на сегментах:
example.com/class/function/param по умолчанию index.php скрыт в URL. Это делается с использованием файла .htaccess в корневом каталоге.
Просто вставьте файлы в свой проект для легкой аутентификации: https://github.com/trafficinc/sippy-uth
Контроллеры являются движущей силой приложения Sippy. Как вы можете видеть из структуры URL, сегменты URL -адреса отображаются с классом и функцией. Эти классы являются контроллерами, хранящиеся в каталоге «Приложение/контроллер». Так, например, URL ...
example.com/main/login ... будет отображаться со следующим контроллером с помощью файла main.php:
<?php
class Main extends Sippy_controller {
function index () {
// This is the default function (i.e. no function is set in the URL)
}
function login () {
echo ' Hello World! ' ;
}
}... и результатом будет «Привет, мир!».
Контроллер по умолчанию и контроллер ошибки можно установить в Application/config.php
Обратите внимание, что если вам нужно объявить конструктор, вы также должны назвать родительский конструктор, как:
<?php
class Example extends Sippy_controller {
public function __construct ()
{
parent :: __construct ();
// Your own constructor code
}
}
?>Есть несколько вспомогательных функций, которые также можно использовать в контроллерах. Большинство из этих функций принимают параметр $ name соответствующего класса:
Ошибки журнала и информация о отладке
Затем вы можете добавить этот код в свой контроллер для отладки.
log_message('error','Your log message');log_message('debug','Your log message');Примеры проверки контроллера и защита ток -кеновой и вспышки. ###### - Класс - Защищенная $ Validation;
function __constructor() {
$this->validation = new Validation;
}
$data['messSuccess'] = $this->flash->message('success');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['csrf'] === $_SESSION['csrf_token']) {
$validator = $this->validation->go($_POST, [
'email' => 'required|min:5',
'password' => 'required',
]);
if (count($validator) > 0) {
$data['errors'] = $validator;
} else {
// ** Do Stuff **
$this->flash->message('success','Your flash message here');
$this->redirect('auth/login');
}
}
}
```
#вид
<h1>Login</h1>
<?php
if (isset($messSuccess)) {
$this->success_block($messSuccess);
}
if (isset($errors)) {
$this->error_block($errors);
}
?>
<form method="post" action="<?php echo site_url('auth/login'); ?>">
<input type="hidden" name="csrf" value="<?php echo $this->security->generate_csrf_token(); ?>"/>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" name="email" class="form-control" id="email" placeholder="Email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
</div>
<button type="submit" class="btn btn-default">Login</button>
</form>
В Sippy представление - это просто веб -страница. Они могут содержать все, что будет включать обычную веб -страницу. Виды почти всегда загружаются контроллерами. Так, например, если у вас была представление с именем main_view.php, в котором содержался следующий html:
<html>
<head>
<title>My Site</title>
</head>
<body>
<h1>Welcome to my Site!</h1>
</body>
</html>
. . . you would load it in a controller by doing the following:
// Controller file...
<?php
class Main extends Sippy_controller {
function index ()
{
$ template = $ this -> View ( ' main_view ' );
$ template -> render ();
}
} В классе View есть вспомогательная функция, называемая set($key, $val) , которая позволяет вам передавать переменные из контроллера в представление.
$ template = $ this -> View ( ' main_view ' );
$ template -> set ( ' someval ' , 17 );
$ template -> render ();... Тогда, в том виде, что вы могли бы сделать:
<?php echo $someval; ?>
... и вывод будет 17. Любой вид переменной PHP может быть передана таким образом: массивы и т. Д.
ИЛИ
В контроллере вы можете позвонить в свои представления с помощью данных, которые затем будут доступны в представлении. Это может быть достигнуто для способов. В контроллере ...
$ header = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ d );По мнению, эти элементы массива можно получить так ...
<?php echo $title; ?>
Который покажет текст «Мое название», и так далее для остальной части массива.
Предпочтительным способом доступа к данным в представлениях является название массива данных и доступ к нему в контроллере, как ...
$ data [ ' body ' ] = " Hello World " ;
$ data [ ' heading ' ] = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ data );Тогда в представлении ...
//body can be accessed
<?php echo $ body ; ?>
//heading can be accessed as an array
<?php
foreach ( $ heading as $ head ) {
echo $ head [ ' title ' ];
. . . etc.
}
?> В моделях Sippy есть классы, которые имеют дело с данными (обычно из базы данных), предоставляется пример базы данных, загрузите файл testdb.sql в Secutel Pro или ваш выбор GUI SQL. Например:
<?php
class Example_model extends Sippy_model {
public function getSomething ( $ id )
{
$ id = $ this -> escape ( $ id );
$ result = $ this -> query ( " SELECT * FROM something WHERE id=' { $ id } ' " );
return $ result ;
}
}
?>... тогда в контроллере вы бы сделали:
function index ()
{
$ example = $ this -> Model ( ' Example_model ' );
$ data [ ' something ' ] = $ example -> getSomething ( $ id );
$ template = $ this -> View ( ' main_view ' , $ data );
$ template -> render ();
} Теперь результаты запроса вашей базы данных будут доступны в вашем мнении в $ someval. Подключение к базе данных MySQL может быть сделано в вашем файле config/config.php (не забудьте переименовать файл sample.config.php ):
$ config [ ' db_host ' ] = '' ; // Database host (e.g. localhost)
$ config [ ' db_name ' ] = '' ; // Database name
$ config [ ' db_username ' ] = '' ; // Database username
$ config [ ' db_password ' ] = '' ; // Database passwordЕсть несколько вспомогательных функций, которые также можно использовать в моделях:
query($query) - возвращает множество результатов из запросаgetrow($query) - возвращает одну ряд из запросаgetrowobj($query) - возвращает строку в качестве объектаexecute($query) - возвращает прямой результат из запросаescape($string) - Escape Strings, прежде чем использовать их в запросахinsert($table, $dataArray) - вставьте в таблицу с массивомВ HTML-помощнике есть запеченная HTML-помощника, которую вы можете использовать в контроллерах и представлениях через $ this-> html-> esc () и многое другое, в вашем URL, когда вы запускаете Sippy.
Есть два типа дополнительных ресурсов, которые вы можете использовать в Sippy.
Помощники - это классы, которые вы можете использовать, которые не подпадают под категорию «контроллеров». Обычно это будут классы, которые предоставляют дополнительную функциональность, которые вы можете использовать в своих контроллерах. Sippy поставляется с вспомогательными классами (session_helper и url_helper), которые являются примерами того, как использовать помощников.
Плагины являются буквально любыми файлами PHP и могут предоставить любую функциональность, которую вы хотите. Загрузив плагин, вы просто включаете файл PHP из папки «Плагины». Это может быть полезно, если вы хотите использовать сторонние библиотеки в своем приложении Sippy.
Как использовать, в контроллере ...
protected $sess;
public function __construct() {
parent::__construct();
$this->Helper('Session_helper');
$this->sess = new Session_helper;
}
public function sample() {
$this->sess->set('email', '[email protected]'); //set session variable
$this->sess->get('email'); //get session variable
$this->sess->destroy(); //destroy session, good for logout method
}
Как использовать, в контроллере ...
public function __construct() {
parent::__construct();
$this->Plugin('Mailer');
}
public function sample() {
$send = Mailer::make()
->setTo('[email protected]', 'ToPerson')
->setFrom('[email protected]', 'Sippy')
->setSubject('Hello World Test')
->setMessage('Test message form sippy')
->setHtml()
->setWrap(100)
->send();
}
Чтобы расширить Sippy, есть возможность добавить «крючки». Крюки позволяют вам расширить всю структуру и/или добавлять функциональность. Чтобы активировать «крючки» перейдите в свой файл config.php и включите его. Затем в файле Config/Hooks.php добавьте функцию крюка. Крюки глобальны, и их три; before_system (загружается перед системными вызовами), before_controller (загружается перед контроллерами) и after_controller (загружается после контроллеров). Вот пример ...
// in hooks.php file
$ hook [ ' before_system ' ] = function () {
echo " hello world " ;
};Этот крюк глобально загрузит эту функцию с надписью «Hello World». Поскольку вы можете загрузить крюк только один раз, если у вас есть более одной функции для вызова, вы можете сложить его так ...
//... your functions ... function func1() {...do stuff...}
$ hook [ ' before_system ' ] = function () {
func1 ();
func2 ();
func3 ();
};$ php bin/sippy.php [опции]
пытаться
$ php bin/sippy.php -Help