ItemInstance.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Module\GameItems\Logics;
  3. use App\Module\GameItems\Models\ItemInstance as ItemInstanceModel;
  4. /**
  5. * 物品实例逻辑类
  6. */
  7. class ItemInstance
  8. {
  9. /**
  10. * 检查物品实例是否已过期
  11. *
  12. * @param ItemInstanceModel $instance 物品实例模型
  13. * @return bool
  14. */
  15. public function isExpired(ItemInstanceModel $instance): bool
  16. {
  17. // 注入Item逻辑类
  18. $itemLogic = new Item();
  19. if (empty($instance->expire_at)) {
  20. return $itemLogic->isExpired($instance->item);
  21. }
  22. return $instance->expire_at->isPast() || $itemLogic->isExpired($instance->item);
  23. }
  24. /**
  25. * 检查物品是否已绑定
  26. *
  27. * @param ItemInstanceModel $instance 物品实例模型
  28. * @return bool
  29. */
  30. public function isBound(ItemInstanceModel $instance): bool
  31. {
  32. return $instance->is_bound;
  33. }
  34. /**
  35. * 检查绑定是否已过期
  36. *
  37. * @param ItemInstanceModel $instance 物品实例模型
  38. * @return bool
  39. */
  40. public function isBindExpired(ItemInstanceModel $instance): bool
  41. {
  42. if (empty($instance->bind_exp_time)) {
  43. return false;
  44. }
  45. return $instance->bind_exp_time->isPast();
  46. }
  47. }