Mojo::Home

作者: JSON_NULL | 来源:发表于2017-08-19 12:01 被阅读5次

    Mojo::Home为 Mojo程序提供“家目录”服务,它是一个Mojo程序“家目录”的容器。Mojo::Home从Mojo::File继承了所有的函数和方法。

    方法

    Mojo::Home继承了Mojo::File中所有的方法,并实现了以下方法。

    detect

    $home = $home->detect;
    $home = $home->detect('My::App');
    

    从MOJO_HOME环境变量的值或应用程序类的位置检测程序的“家目录”。实现代码如下:

    sub detect {
      my ($self, $class) = @_;
    
      # Environment variable
      my $home;
      if ($ENV{MOJO_HOME}) { $home = Mojo::File->new($ENV{MOJO_HOME})->to_array }
    
      # Location of the application class (Windows mixes backslash and slash)
      elsif ($class && (my $path = $INC{my $file = class_to_path $class})) {
        $home = Mojo::File->new($path)->to_array;
        splice @$home, (my @dummy = split('/', $file)) * -1;
        pop @$home if @$home && $home->[-1] eq 'lib';
        pop @$home if @$home && $home->[-1] eq 'blib';
      }
    
      $$self = Mojo::File->new(@$home)->to_abs->to_string if $home;
      return $self;
    }
    

    mojo_lib_dir

    my $path = $home->mojo_lib_dir;
    

    把Mojolicious安装到的 lib包装成Mojo::Home对象返回。

    rel_file

    my $path = $home->rel_file('foo/bar.html');
    

    根据“参数”相对于当前“家目录”计算得到一个新的Mojo::Home对象。

    相关文章

      网友评论

        本文标题:Mojo::Home

        本文链接:https://www.haomeiwen.com/subject/miggrxtx.html