1. <?php
  2. /**
  3. * Dependency Resolver for User Data (Prototype)
  4. */
  5. class DependencyResolver
  6. {
  7. private $dependencies = []; // Array to store dependencies
  8. private $limits = []; // Array to store hard-coded limits
  9. /**
  10. * Constructor - sets up default limits.
  11. */
  12. public function __construct()
  13. {
  14. $this->limits = [
  15. 'max_age' => 65,
  16. 'max_score' => 1000,
  17. 'max_posts' => 100,
  18. ];
  19. }
  20. /**
  21. * Adds a dependency to the resolver.
  22. * @param string $dependencyName The name of the dependency.
  23. * @param mixed $dependencyValue The value of the dependency.
  24. */
  25. public function addDependency(string $dependencyName, $dependencyValue): void
  26. {
  27. $this->dependencies[$dependencyName] = $dependencyValue;
  28. }
  29. /**
  30. * Resolves user data based on dependencies and limits.
  31. * @param array $userData The raw user data.
  32. * @return array|null The resolved user data, or null if resolution fails.
  33. */
  34. public function resolveUserData(array $userData): ?array
  35. {
  36. // Check if required fields are present
  37. if (!isset($userData['name']) || !isset($userData['age'])) {
  38. error_log("Missing required user data fields.");
  39. return null;
  40. }
  41. // Apply age limit
  42. if ($userData['age'] > $this->limits['max_age']) {
  43. error_log("Age exceeds maximum limit.");
  44. return null;
  45. }
  46. // Apply score limit
  47. if ($userData['score'] > $this->limits['max_score']) {
  48. error_log("Score exceeds maximum limit.");
  49. return null;
  50. }
  51. //Apply post limit
  52. if ($userData['posts'] > $this->limits['max_posts']) {
  53. error_log("Post limit exceeded.");
  54. return null;
  55. }
  56. // Data is valid, return resolved data
  57. return $userData;
  58. }
  59. }
  60. // Example Usage:
  61. $resolver = new DependencyResolver();
  62. // Add some hardcoded dependencies (for testing)
  63. $resolver->addDependency('max_age', 70);
  64. $resolver->addDependency('max_score', 1200);
  65. $resolver->addDependency('max_posts', 150);
  66. $userData = [
  67. 'name' => 'John Doe',
  68. 'age' => 55,
  69. 'score' => 800,
  70. 'posts' => 50
  71. ];
  72. $resolvedData = $resolver->resolveUserData($userData);
  73. if ($resolvedData) {
  74. print_r($resolvedData);
  75. } else {
  76. echo "User data resolution failed.\n";
  77. }
  78. $invalidUserData = [
  79. 'name' => 'Jane Doe',
  80. 'age' => 80,
  81. 'score' => 1500,
  82. 'posts' => 200
  83. ];
  84. $resolvedInvalidData = $resolver->resolveUserData($invalidUserData);
  85. if ($resolvedInvalidData) {
  86. print_r($resolvedInvalidData);
  87. } else {
  88. echo "User data resolution failed.\n";
  89. }
  90. ?>

Add your comment