ItemQuantityExample.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Module\GameItems\Examples;
  3. use App\Module\GameItems\Validation\ItemQuantityValidation;
  4. use Exception;
  5. /**
  6. * 物品数量验证示例
  7. */
  8. class ItemQuantityExample
  9. {
  10. /**
  11. * 使用普通物品
  12. *
  13. * @param int $userId 用户ID
  14. * @param int $itemId 物品ID
  15. * @param int $quantity 数量
  16. * @return bool 是否成功
  17. * @throws Exception 验证失败时抛出异常
  18. */
  19. public static function useNormalItem(int $userId, int $itemId, int $quantity = 1): bool
  20. {
  21. // 创建验证对象
  22. $validation = new ItemQuantityValidation();
  23. $validation->user_id = $userId;
  24. $validation->item_id = $itemId;
  25. $validation->quantity = $quantity;
  26. // 验证
  27. if (!$validation->validated()) {
  28. throw new Exception($validation->getErrors()[0] ?? '物品数量验证失败');
  29. }
  30. // 验证通过,执行使用物品的逻辑
  31. // ...
  32. return true;
  33. }
  34. /**
  35. * 使用实例物品
  36. *
  37. * @param int $userId 用户ID
  38. * @param int $itemId 物品ID
  39. * @param int $instanceId 实例ID
  40. * @return bool 是否成功
  41. * @throws Exception 验证失败时抛出异常
  42. */
  43. public static function useInstanceItem(int $userId, int $itemId, int $instanceId): bool
  44. {
  45. // 创建验证对象
  46. $validation = new ItemQuantityValidation();
  47. $validation->user_id = $userId;
  48. $validation->item_id = $itemId;
  49. $validation->instance_id = $instanceId;
  50. // 验证
  51. if (!$validation->validated()) {
  52. throw new Exception($validation->getErrors()[0] ?? '物品数量验证失败');
  53. }
  54. // 验证通过,执行使用实例物品的逻辑
  55. // ...
  56. return true;
  57. }
  58. /**
  59. * 使用任意类型物品
  60. *
  61. * @param int $userId 用户ID
  62. * @param int $itemId 物品ID
  63. * @param int $quantity 数量
  64. * @return bool 是否成功
  65. * @throws Exception 验证失败时抛出异常
  66. */
  67. public static function useAnyTypeItem(int $userId, int $itemId, int $quantity = 1): bool
  68. {
  69. // 创建验证对象
  70. $validation = new ItemQuantityValidation();
  71. $validation->user_id = $userId;
  72. $validation->item_id = $itemId;
  73. $validation->quantity = $quantity;
  74. $validation->include_all_types = true;
  75. // 验证
  76. if (!$validation->validated()) {
  77. throw new Exception($validation->getErrors()[0] ?? '物品数量验证失败');
  78. }
  79. // 验证通过,执行使用物品的逻辑
  80. // ...
  81. return true;
  82. }
  83. }