Ray.Di is a dependency injection and aspect-oriented programming (AOP) framework for PHP, inspired by Google Guice. It provides a module-based DI container that supports constructor, setter, and property injection via PHP 8 attributes, along with method interception for AOP cross-cutting concerns. The core architecture centers on AbstractModule for defining bindings, a Container for storing resolved dependencies, and an Injector that weaves aspects and manages object lifetimes (prototype/singleton). The framework supports advanced features like provider binding, contextual injection, multibinding (collections), assisted injection, null-object binding, and circular dependency detection. It includes a composition-time provenance log (BindingLog) for debugging binding precedence and produces a bindings.md diagnostics artifact. The codebase is mature and thoroughly tested (100% branch coverage), with extensive contract tests that pin observable semantics.
This repository provides a generic-based dependency injection framework for Go, called 'kod' (Killer Of Dependency), along with a CLI tool for code generation, component registration, and dependency graph validation. It features a rich interceptor chain for cross-cutting concerns (retry, validation, tracing, rate limiting, circuit breakers, etc.), and includes a comprehensive test suite and examples. The codebase also incorporates an extensive set of AI agent skills for software development workflows (grilling, code review, TDD, domain modeling) from the mattpocock/skills ecosystem. The primary value is the DI framework that leverages Go generics to provide compile-time safety for component wiring, with generated boilerplate code. The architecture is modular with clear separation of core, interceptors, internal utilities, and tests. It is actively maintained with modern Go features.