承接 hezecom/slim-starter 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hezecom/slim-starter

Composer 安装命令:

composer create-project hezecom/slim-starter

包简介

Slim Framework 4 Starter App

README 文档

README

Slim Framework 4 skeleton MVC application with build in authentication system.

Features

  • Light weight and organised for easy understanding.
  • Simple, fast routing engine.
  • Highly secured, ready to use authentication system.
  • Simplify helper function for faster development.
  • Build in email notification.
  • Build in email templates (can easily be modified)
  • PSR-7 implementation and PHP-DI container implementation
  • Detailed HTML error reporting.

Requirements

  • PHP 7.4 | 8.0+
  • PDO PHP Extension
  • Suport MySQL 5.5.3+ or MariaDB 5.5.23+ or PostgreSQL 9.5.10+ or SQLite 3.14.1+ ...

Installation

composer create-project "hezecom/slim-starter v1.0" [my-app]

Database (Required for auth to work)

  • Create a database or use existing database to import/copy to your SQL console to create required tables for the authentication.
  • Dasbase option (MySQL, SQLite or PostgreSQL)
  • Database file is located at /database

.env

Copy file .env.example to .env

DB_DRIVER=mysql
DB_HOST=localhost
DB_DATABASE=slimapp
DB_USERNAME=root
DB_PASSWORD=
DB_PORT=3306

# Email setting Driver = (smtp | sendmail | mail)
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=username
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS='info@example.com'
MAIL_FROM_NAME='Example'

Router

Routing example below

<?php

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

$app->group('', function ($route) {
    $route->get('/register', AuthController::class . ':createRegister')->setName('register');
    $route->post('/register', AuthController::class . ':register');
    $route->get('/login', AuthController::class . ':createLogin')->setName('login');
    $route->post('/login', AuthController::class . ':login');

    $route->get('/verify-email', AuthController::class.':verifyEmail')->setName('verify.email');
    $route->get('/verify-email-resend',AuthController::class.':verifyEmailResend')->setName('verify.email.resend');

    $route->get('/forgot-password', PasswordController::class . ':createForgotPassword')->setName('forgot.password');
    $route->post('/forgot-password', PasswordController::class . ':forgotPassword');
    $route->get('/reset-password', PasswordController::class.':resetPassword')->setName('reset.password');
    $route->get('/update-password', PasswordController::class.':createUpdatePassword')->setName('update.password');
    $route->post('/update-password', PasswordController::class.':updatePassword');

})->add(new GuestMiddleware($container));

Controller

Controller example simplify

<?php

namespace App\Controllers;

class HomeController extends Controller
{
	public function index(Request $request, Response $response)
	{
		return view($response,'index.twig');
	}
}

Model

Uses Eloquent ORM used by Laravel Framework. It currently supports MySQL, Postgres, SQL Server, and SQLite. Reference - illuminate/database

<?php

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

class User extends Model
{
	protected $table = 'users';

	protected $fillable = [
		'email',
		'username',
		'password',
	];

}

Middleware

<?php

namespace App\Middleware;

use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;

class AuthMiddleware extends Middleware
{
	public function __invoke(Request $request, RequestHandler $handler)
	{
	   if(! $this->container->get('auth')->isLogin()) {
              return redirect()->route('login')->with('error', 'Access denied, you need to login.');
            }
        $response = $handler->handle($request);
        return $response;
	}
}

Validation

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

<?php
namespace App\Controllers\Auth;
use App\Controllers\Controller;
use Respect\Validation\Validator as v;

class AuthController extends Controller
{
	public function register(Request $request, Response $response)
	{
		$validation = $this->validator->validate($request, [
			'email' => v::noWhitespace()->notEmpty()->email(),
                        'username' => v::noWhitespace()->notEmpty()->alnum(),
                        'password' => v::notEmpty()->stringType()->length(8),
		]);

		if ($validation->failed()) {
		    redirect()->route('register');
		}

		//	more coding here
	}
}

More basic functions

reference slim official documents - Slim Framework

Directory Structure

|-- slim-born
	|-- app
		|-- Auth
		|-- Controllers
		|-- Middleware
		|-- Models
		|-- Lib
	    |-- bootstrap
		|-- app.php
        |-- database.php
        |-- helper.php
    |-- logs
	|-- public
	|-- resources
    |-- route
	....

Testing

$ phpunit

Contributing

All contributions are welcome! If you wish to contribute, please create an issue first so that your feature, problem or question can be discussed.

License

This project is licensed under the terms of the MIT License.

统计信息

  • 总下载量: 93
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 9
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 9
  • Watchers: 1
  • Forks: 3
  • 开发语言: HTML

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-02-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固