基于 symfony 实现最基本的框架

目录

 

1. 根目录index

2. 根目录添加 .htaccess

3. 应用目录

4. 访问路由


 

1. 根目录index

<?php
//加载composer
include __DIR__. DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR."autoload.php";

use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\HttpFoundation\Request;

//定义路由
$route = new  Route('/home',array('controller' => 'App\controller\MyController::index'));

//加载路由
$routes = new RouteCollection();
$routes->add('route_name',$route);

//获取请求内容
$context = new RequestContext();
$matcher = new UrlMatcher($routes,$context);
$info = $matcher->match($context->fromRequest(Request::createFromGlobals())->getPathInfo());

$controller = $info['controller'];
$class_action = stripos($controller,'::');
$class = substr($controller,0,$class_action);
$action = substr($controller,$class_action+2);

//添加自动加载
function loadClass($class_name){
    $fan_gang = stripos($class_name,'\\');
    $is_app =  substr($class_name,0,$fan_gang);
    
    //加载应用目录
    if($is_app === 'App'){
        include __DIR__.DIRECTORY_SEPARATOR. $class_name.'.php';
    }
    return;

}
spl_autoload_register("loadClass");

/**
 * 返回当前请求类
 * @param $class
 * @return mixed
 */
function getClass($class){
    return new $class();
}

$ress = getClass($class)->$action();
echo $ress;

2. 根目录添加 .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

3. 应用目录

4. 访问路由

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值