Slim Framework 3 骨架更快的撸一个 Web App

2016/04/20

基于 Slim Framework 3 构建的骨架,快速开发轻量级 Web App 。

以基本实现了 Authentication 可作为开发例子或改造属于你自己的果实。

你可以用 Laravel 的 Homestead 运行,各种环境各种运行,不多说,拉下去看看,就这么简单。

GitHub Stared This: https://github.com/HavenShen/slim-born

Latest Stable Version Total Downloads License

Slim Framework 3 skeleton application has authentication MVC construction.

The user authentication has been achieved, there is a need to install and use.

Installation

composer create-project havenshen/slim-born [my-app]

Router

This is a Slim Framework Router. Reference - Slim Router

<?php 

$app->get('/','HomeController:index')->setName('home');


$app->group('',function () {

	$this->get('/auth/signup','AuthController:getSignUp')->setName('auth.signup');
	$this->post('/auth/signup','AuthController:postSignUp');
	
	$this->get('/auth/signin','AuthController:getSignIn')->setName('auth.signin');
	$this->post('/auth/signin','AuthController:postSignIn');
	
})->add(new GuestMiddleware($container));

Controller

Use Slim Framework Twig View. Reference - Twig-View

<?php

namespace App\Controllers;

class HomeController extends Controller
{
	public function index($request,$response)
	{
		return $this->view->render($response,'home.twig');
	}
}

Model

Use Laravel PHP Framework Eloquent. Reference - illuminate/database

<?php

namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
	
	protected $table = 'users';
	protected $fillable = [
		'email',
		'name',
		'password',
	];
	public function setPassword($password)
	{
		$this->update([
			'password' => password_hash($password,PASSWORD_DEFAULT)
		]);
	}
}

Middleware

<?php

namespace App\Middleware;

class AuthMiddleware extends Middleware
{
	
	public function __invoke($request,$response,$next)
	{
		if(!$this->container->auth->check()) {
			$this->container->flash->addMessage('error','Please sign in before doing that');
			return $response->withRedirect($this->container->router->pathFor('auth.signin'));
		}
		$response = $next($request,$response);
		return $response;
	}
}

Validation

Use the most awesome validation engine ever created for PHP. Reference - Respect/Validation

<?php

namespace App\Controllers\Auth;
use App\Models\User;
use App\Controllers\Controller;
use Respect\Validation\Validator as v;

class AuthController extends Controller
{
	public function postSignUp($request,$response)
	{
		$validation = $this->validator->validate($request,[
			'email' => v::noWhitespace()->notEmpty()->email()->emailAvailable(),
			'name' => v::noWhitespace()->notEmpty()->alpha(),
			'password' => v::noWhitespace()->notEmpty(),
		]);
		if ($validation->failed()) {
			return $response->withRedirect($this->router->pathFor('auth.signup'));
		}
		//	todo someting
	}
}

More basic functions

reference slim official documents - Slim Framework

Use Packages

Directory Structure

|-- slim-born
	|-- app
		|-- Auth
		|-- Controllers
		|-- Middleware
		|-- Models
		|-- Validation
		|-- Routes.php
	|-- bootstrap
		|-- app.php
	|-- public
	|-- resources
	....

License

MIT