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许可证的条款获得许可的。