Slimore
Фреймворк Slimore полностью основан на (H)MVC и построен на базе Slim PHP Framework v2.6.x (https://github.com/slimphp/Slim).
Требуется PHP версии 5.4.0 или выше.
composer.json:
{
"require": {
"slimore/slimore": "*"
}
}
Установка:
$ composer install
Один модуль:
/
app/
controllers/
models/
views/
configs/
routes.php
settings.php
public/
.htaccess
index.php
vendor/
...
composer.json
Несколько модулей:
/
app/
frontend/
controllers/
models/
views/
backend/
controllers/
models/
views/
api/
controllers/
models/
views/
...
configs/
routes.php
settings.php
public/
.htaccess
index.php
vendor/
...
composer.json
.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
index.php:
<?php
define('APP_PATH', realpath(__DIR__ . '/../app') . DIRECTORY_SEPARATOR);
define('BASE_URL', str_replace('index.php', '', $_SERVER['PHP_SELF']));
require __DIR__ . '/../vendor/autoload.php';
$app = new \Slimore\Mvc\Application([
'debug' => true,
'path' => APP_PATH,
'baseURL' => BASE_URL,
//'modules' => ['home', 'admin', 'api'], // Multi-Modules
//'defaultModule' => 'home',
'autoloads' => [
APP_PATH . 'path/xx/xx'
]
]);
//$app->dbConnection(); // if using database
$app->get("/", function() {
echo "Hello world!";
});
// Routes
//$app->get('/news', 'NewsController:read');
// or $app->get('/news', controller('index', 'read'));
//$app->get('/news', 'Home\Controllers\NewsController:read');
// or $app->get('/news', controller('news', 'read', 'Home\Controllers\\'));
//$app->post('/news', 'Home\Controllers\NewsController:create');
//$app->put('/news/:id', 'Home\Controllers\NewsController:update');
//$app->delete('/news/:id', 'Home\Controllers\NewsController:delete');
// or
/*
$app->moduleNamespace('Home\Controllers\\', function($namespace, $app) {
//echo $namespace;
$ctl = 'IndexController';
//$app->get('/', $namespace . $ctl . ':index');
//$app->get('/news/:id', $namespace . $ctl . ':index');
$app->controller('index', function($controller, $app, $namespace) {
//echo $controller . ', ' . $namespace;
//$app->get('/news/:id', $namespace . $controller . ':index');
}, $namespace);
});*/
// Auto routes => /:action, /:controller/:action, /:module/:controller/:action
$app->autoRoute();
$app->run();
Модель:
<?php
class Article extends \Slimore\Mvc\Model
{
//protected $table = 'you_table_name';
//protected $primaryKey = 'your_id';
}
Использование Eloquent ORM / Model: http://laravel.com/docs/5.0/eloquent
Вид:
<?php
// использование php-операторов
?>
<title><?=$title?></title>
<?=$var?>
<?php if ($exp) : ?>
<?php else : ?>
<?php endif; ?>
Контроллер:
<?php
// Multi-module
//namesapce Frontend\Controllers;
use \Slimore\Database\Manager as DB;
class IndexController extends \Slimore\Mvc\Controller
{
public function index()
{
// Использование модели, аналогично Laravel
$article = Article::find(1);
// query builder
$news = $this->db->table('news')
->select(['nid', 'cid', 'title', 'content', 'add_time'])
->where(['cid' => 0])
->orderBy('nid', 'DESC')
->get();
//print_r($news);
// Базовое использование базы данных, аналогично Laravel
$results = DB::select('select * from users where id = ?', [1]);
// Slim
*Примечание: в тексте запроса присутствуют фрагменты кода на языке PHP, но они не были переведены.* **Методы приложения**
// запрос
$get = $this->request->get();
// ответ
//$this->response->headers->set('Content-Type', 'application/json');
// представление
$this->view->setData(array(
'color' => 'red',
'size' => 'medium'
));
// рендеринг views/index.php
$this->render('index', [
'title' => 'Hello world!' . $article->title,
'article' => $article
]);
// вывод json
/*$this->json([
'status' => 200,
'message' => 'xxxxxx',
'data' => $article
]);*/
}
Использование Slim: http://docs.slimframework.com/
Лицензия MIT: https://github.com/slimore/slimore/blob/master/LICENSE.
Авторские права (c) 2015 Pandao
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )