slim starter
v1.0
Slim Framework 4在身份驗證系統中構建的Skeleton MVC應用程序。
composer create-project " hezecom/slim-starter v1.0 " [my-app] Database (Required for auth to work)
database 將文件.env.example複製為.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='[email protected]'
MAIL_FROM_NAME='Example'
以下路由示例
<?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 ));控制器示例簡化
<?php
namespace App Controllers ;
class HomeController extends Controller
{
public function index ( Request $ request , Response $ response )
{
return view ( $ response , ' index.twig ' );
}
}使用Laravel Framework使用的雄辯ORM。它目前支持MySQL,Postgres,SQL Server和SQLite。參考 - 照明/數據庫
<?php
namespace App Models ;
use Illuminate Database Eloquent Model ;
class User extends Model
{
protected $ table = ' users ' ;
protected $ fillable = [
' email ' ,
' username ' ,
' password ' ,
];
} <?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 ;
}
}使用有史以來為PHP創建的最棒的驗證引擎。參考 - 尊重/驗證
<?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
}
}參考纖細的官方文件 - 細長框架
| -- slim-born
| -- app
| -- Auth
| -- Controllers
| -- Middleware
| -- Models
| -- Lib
| -- bootstrap
| -- app.php
| -- database.php
| -- helper.php
| -- logs
| -- public
| -- resources
| -- route
....$ phpunit歡迎所有貢獻!如果您想做出貢獻,請先創建一個問題,以便可以討論您的功能,問題或問題。
該項目是根據MIT許可證的條款獲得許可的。