我有这个代码,但是当我运行它时,它说对象无法转换为字符串。
$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 :(得分:0)
您可以使用魔术方法__toString
class Product
{
public $fileName;
public function __toString()
{
return $this->filename;
}
}
每当您将对象视为字符串(例如将其打印出来)时,此方法将处理它。结果字符串将是此方法返回的任何内容。
也就是说,将Product对象转换为文件名字符串似乎并不合乎逻辑。也许你更喜欢getFilename()
方法。
答案 1 :(得分:0)
你在写:
$fileName = new Product($category, $row['productCode']);
后来你在做:
unlink($dir.DIRECTORY_SEPARATOR.$fileName);
正如您所看到的,您正在尝试将对象$ filename用作字符串。 这是不可能做到的,或者至少它不是一个好习惯(Magic __toString())。您需要检查对象产品以获取可允许的方法 你要提取文件名。
例如:
unlink($dir.DIRECTORY_SEPARATOR.$fileName->getFileName());