如何使用类插入图像(dirname和filepath问题)

时间:2014-07-14 08:59:51

标签: php

我想在类中使用一个方法,以便在可以放在任何目录中的页面中显示图像。

基本上,类文件位于根目录,类看起来像这样:

class A{
    function showImage(){
        echo '<img src="img/file.jpg">';
    }
}

当我在子目录中的页面中调用方法时出现问题。 例如,如果我在'subdir / mypage.php'中使用showImage(),则图片链接会中断。

我已查看过$_SERVER['HTTP_HOST']dirname(__FILE__),但我找不到合适的混音来获得可用于显示任何目录中图像的正确图像路径。

我应该在类中使用什么函数来动态获取文件路径,这取决于我调用的目录showImage()

非常感谢

1 个答案:

答案 0 :(得分:1)

class A{
    function showImage($link){
        $link = str_replace('/home/public', '', $link);
        echo '<img src="' . $link . '">';
    }
}

并像这样使用它:

$a->showImage(getcwd().'/img/file.jpg');

getcwd()将获取目录,然后删除函数中公共文件夹的第一个绝对路径。

示例案例:

  • test.php放在/home/public/images/{test.php}
  • class.php放在/home/public/{class.php}

test.php确实:

$a->showImage(getcwd().'/img/file.jpg');

它将发送给class.php的是:

$a->showImage('/home/public/images/img/file.jpg');

然后在您的函数中,它将删除/home/public并显示此链接:

<img src="/images/img/file.jpg">

MY BAD

我没有正确阅读答案。这是您正在寻找的解决方案:

class A{
    function showImage(){
        $root = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/';
        echo '<img src="' . $root . 'img/file.jpg">';
    }
}