[LyApi] 如何解决静态文件引入问题

本文主要解决LyApi - V1.6.0 更新的 "URL启动模式" 无法访问静态文件问题。

问题的根源

在新版本中,我们把静态文件放在 app\view\static 目录下(如 Javascript , CSS 文件)

但在LyApi框架中,默认的访问目录是 public ,这会保证我们程序的安全,用户无法访问除public以外的所有目录。但有得必有失,一些需要的文件也无法直接访问了。

简单的思路

此时,我们无法直接通过地址访问静态文件,但我们依旧可以使用PHP程序来访问啊!
我们可以尝试使用PHP将文件的内容读出来再输出!

开始实现程序

2019-10-2-1.jpg

这是我在更新Demo时写的一个函数,这段代码非常简单,下面我来介绍一下:

  1. 我们拿到传来的 type 和 location 参数
  2. 如果 location 是 bootstrap 时,就说明此时需要的是 bootstrap 框架
  3. 接下来 type 告诉我们程序需要什么类型的文件(或者说是哪个文件)
  4. 我们使用 "file_get_contents" 函数拿到文件内容,再直接返回。

注意一下这里的 LyApi 常量是框架自带的,代表了框架当前的运行目录!

总结

我曾经的框架:LyApi(现已废弃) 其实是自带了这种功能,很方便就能使用静态文件,但这次我觉得这种简单的功能可以让开发者自己完成,这样也挺好的吧(可能会考虑做成插件发布,不强制要求安装)

最后附上代码

把代码丢在这里吧,可以自己复制到程序中:

public function Resource()
{
    $type = Request::Get('type');
    $location = Request::Get('location');

    if($location == 'bootstrap'){
        $path = LyApi . '/app/view/static/bootstrap/';
        if($type == 'js'){
            return file_get_contents($path . 'js/bootstrap.min.js');
        }elseif($type == 'css'){
            return file_get_contents($path . 'css/bootstrap.min.css');
        }else{
            return '';
        }
    }elseif($location == 'jquery'){
        return file_get_contents(LyApi . '/app/view/static/jquery.min.js');
    }else{
        return '';
    }

}
Last modification:October 3rd, 2019 at 10:30 am
赠人玫瑰,手留余香!

Leave a Comment