2014-10-18 55 views
0

我有這樣的代碼,但是當我運行它時,它說對象不能轉換爲字符串。如何將類對象轉換爲字符串

$db = Database::getDB(); 
    $query = "SELECT * FROM products WHERE productID = '$product_id'"; 
    $result = $db->query($query); 
    $row = $result->fetch(); 
    $category = CategoryDB::getCategory($row['categoryID']); 
    $fileName = new Product($category, $row['productCode']); 


    $dir = "../images/"; 
    unlink($dir.DIRECTORY_SEPARATOR.$fileName); 

回答

0

你可以用魔術方法__toString

class Product 
{ 
    public $fileName; 

    public function __toString() 
    { 
     return $this->filename; 
    } 
} 

當你像對待一個字符串對象(例如打印出來),此方法將處理它。結果字符串將是該方法返回的內容。

也就是說,將Product對象轉換爲文件名字符串在邏輯上看起來並不合理。也許你更喜歡getFilename()方法。

0

您書面方式:

$fileName = new Product($category, $row['productCode']); 

,以後你正在做的:

unlink($dir.DIRECTORY_SEPARATOR.$fileName); 

正如你可以看到你正在嘗試使用對象$文件名作爲參數。 這是無法完成的,或者至少這不是一個好習慣(Magic __toString())。您需要檢查對象產品的方法,該方法可以允許您提取文件名稱 。

如:

unlink($dir.DIRECTORY_SEPARATOR.$fileName->getFileName());