вы на самом деле пытаетесь бросить объект в число с плавающей точкой.
$article->getUsualPrice(CountryPublic::getByShortCut('a'));
Ваш метод getUsualPrice
возвращает объект ArticlePrice
, вы должны поместить получатель в свой класс ArticlePrice
, чтобы получить доступ к вашему атрибутуprice
внутри, а затем бросить его в поплавок.
Это простое решение, но, вероятно, не самое красивое с точки зрения концепции.
если вы попробуете что-то вроде
var_dump($article->getUsualPrice(CountryPublic::getByShortCut('a')) instanceof ArticlePrice)
Вы увидите, что вы бросили объект в float.
После вашего комментария
object(ArticlePrice)#11396 (15) {
["id":protected]=> string(36) "7f01d63a-3f08-480a-b798-c83f6ddbdb94"
["articleID":protected]=> string(36) "65983c99-66e4-43689ba7039dc5e742c0"
["countryID":protected]=> string(36) "31149178-8a2a-4e57-8133-ca12004a59dd"
["price":protected]=> string(5) "13.50"
Вы видите, что попали на аттрибут под названием цена.
вам нужно только выполнить операцию с этим атрибутом, а не с вашим объектом.вы, вероятно, имеете в своем классе getter, который называется getPrice ().
Будет работать следующий код:
(float)$article->getPrice(CountryPublic::getByShortCut('a'))->getPrice()
, но вам, вероятно, потребуется время, чтобы подумать о названии вашегометод, избыточно иметь два метода с именем getPrice()