2017-05-14 58 views
-1

我創建了一個函數來檢索存儲在數據庫中的圖像的原始路徑。修改陣列視圖文件名的函數

public function getImageWork($suffix) 
{ 
    $basePath = 'uploads/works/'; 
    $fullname = pathinfo($this->images, PATHINFO_FILENAME); 
    $imageWork = $basePath . $fullname . $suffix; 

    if (file_exists($imageWork)) { 
     return URL('/') . '/' . $imageWork; 
    } else { 
     return $imageWork = URL('/') . '/img/no-avatar.jpg'; 
    } 
} 

我創造,我存儲在自同名的文件夾,但在我添加結束幾個不同的圖像大小,例如,_cover_thumb和感謝這個功能,它可以讓我在我看來,以使$ image->getImageStudents('_ thumb.jpg')

只,我在一個不同的情況下,我不能使它的工作。 我有一個圖像庫,在我的數據庫中,圖像存儲在一個數組下。

["uploads/img1.jpg","uploads/img2.jpg","uploads/img3.jpg"…] 

我怎麼能改變我的功能,以便在我的foreach,它的作品。

在這裏我做pathinfo($this-> images)但通過這樣做,我恢復整個陣列,我似乎無法工作。

非常感謝你

回答

0

我會在兩個功能,其中一個功能需要在圖像的變量,而不是依靠this了分裂的代碼。

事情是這樣的:

public function getImageWork($suffix) 
{ 
    if (!is_array($this->images)) { 
     return $this->getSingleImageWork($this->images, $suffix); 
    } 

    $output = []; 
    foreach ($this->images as $image) { 
     $output[] = $this->getSingleImageWork($images, $suffix); 
    } 
    return $output; 
} 

public function getSingleImageWork($image, $suffix) { 
    $basePath = 'uploads/works/'; 

    $fullname = pathinfo($image, PATHINFO_FILENAME); 
    $imageWork = $basePath . $fullname . $suffix; 

    if (file_exists($imageWork)) { 
     return URL('/') . '/' . $imageWork; 
    } 

    return $imageWork = URL('/') . '/img/no-avatar.jpg'; 
} 

注:我不知道這些變量是如何,但我相信在這裏,$this->images要麼是某種變量或值的數組。

1

爲了適應這兩種單個值和用於在getImageWork方法圖像陣列,需要重構它以下述方式,

public function getImageWork($suffix = ""){ 
    $basePath = 'uploads/works/'; 
    $imagePathArr = array(); 
    $images = is_array($this->images) ? $this->images : array($this->images); 
    foreach($images as $image){ 
     $fullname = pathinfo($image, PATHINFO_FILENAME); 
     $imageWork = $basePath . $fullname . $suffix; 

     if (file_exists($imageWork)) { 
      $imagePathArr[] = URL('/') . '/' . $imageWork; 
     } else { 
      $imagePathArr[] = URL('/') . '/img/no-avatar.jpg'; 
     } 
    } 
    return $imagePathArr; 
} 

作爲輸出,在上述方法將返回的數組圖像路徑,您可以稍後在代碼庫中使用。