Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
6dfff1c
add size method
walmir-silva Jul 1, 2024
18284e0
feat: Normalize Interfaces
walmir-silva Jul 1, 2024
21fc7c0
Merge branch 'main' into develop
walmir-silva Jul 1, 2024
132e0ee
Refactor and Normalize Collection Interface and Implementation
walmir-silva Jul 1, 2024
1124a8a
Merge branch 'main' into develop
walmir-silva Jul 1, 2024
f40b0c3
feat: Add BinaryHeap implementation and comprehensive tests
walmir-silva Jul 2, 2024
aaeb8d9
docs: Update README files in English and Portuguese
walmir-silva Jul 2, 2024
b1d7662
style: Normalize code formatting and style
walmir-silva Jul 2, 2024
d677ae5
Merge branch 'main' into develop
walmir-silva Jul 2, 2024
ff2922f
feat: Create Container interface and add unit tests
walmir-silva Jul 5, 2024
8316540
feat: Add logging interfaces and corresponding tests
walmir-silva Jul 5, 2024
fd0cb1c
feat: Update logging interfaces Add tests for LoggerAware and LoggerC…
walmir-silva Jul 10, 2024
1b46d44
Merge branch 'main' into develop
walmir-silva Jul 10, 2024
30dd462
feat(logging): improve log rotation and update log handler
walmir-silva Jul 18, 2024
fc2bbe3
Refactor:Indexable interface and LogLevel class
walmir-silva Oct 10, 2024
c00bfdc
Merge branch 'main' into develop
walmir-silva Oct 10, 2024
788e773
feat(contract): Add Processor interfaces and tests
walmir-silva Oct 13, 2024
b40023f
feat: add ProcessorRegistry interface and unit tests
walmir-silva Oct 13, 2024
468dc9a
Merge branch 'main' into develop
walmir-silva Oct 13, 2024
9e223a4
feat(processor): add ProcessorBuilder interface and test suite
walmir-silva Oct 14, 2024
3da44b1
Merge branch 'develop' of https://github.com/KaririCode-Framework/kar…
walmir-silva Oct 14, 2024
611e84f
feat(contract): add PHPDoc for ProcessableAttribute interface and cre…
walmir-silva Oct 15, 2024
185bd7c
Merge branch 'main' into develop
walmir-silva Oct 15, 2024
bf99f58
feat(contract): add Sanitizer, Serializer, and Validator interfaces w…
walmir-silva Oct 15, 2024
3e56162
Merge branch 'develop' of https://github.com/KaririCode-Framework/kar…
walmir-silva Oct 15, 2024
b1a9521
fix(validator): correct return type of Validator interface
walmir-silva Oct 15, 2024
115cad9
Merge branch 'main' into develop
walmir-silva Oct 15, 2024
2fcec44
feat(contract): add CustomizableMessageAttribute interface
walmir-silva Oct 18, 2024
c6758d7
Merge branch 'develop' of https://github.com/KaririCode-Framework/kar…
walmir-silva Oct 18, 2024
1cbe3ca
feat: add BaseProcessorAttribute abstract class
walmir-silva Oct 18, 2024
756ea9f
refactor: adjusty filterValidProcessors in BaseProcessorAttribute
walmir-silva Oct 18, 2024
bf508f4
Merge branch 'main' into develop
walmir-silva Oct 18, 2024
9de21b2
feat(processor): add ProcessorValidator and ValidatableProcessor inte…
walmir-silva Oct 21, 2024
b5c27a7
Merge branch 'develop' of https://github.com/KaririCode-Framework/kar…
walmir-silva Oct 21, 2024
8b7d45b
feat(validator): Add reset method to ValidatableProcessor interface
walmir-silva Oct 24, 2024
50f6c51
feat(validator): Add reset method to ValidatableProcessor interface
walmir-silva Oct 24, 2024
87e89f0
Merge branch 'develop' of https://github.com/KaririCode-Framework/kar…
walmir-silva Oct 24, 2024
0d0fc3a
Merge branch 'main' into develop
walmir-silva Oct 24, 2024
260fd83
test(processor): add unit tests for ProcessingResult interface
walmir-silva Oct 25, 2024
a3a4547
Merge branch 'develop' of https://github.com/KaririCode-Framework/kar…
walmir-silva Oct 25, 2024
9034f37
refactor: add professional comments to BaseProcessorAttribute and upd…
walmir-silva Oct 26, 2024
dc88ce2
feat: add Transformer interface and initial test
walmir-silva Oct 26, 2024
df761aa
feat: extend Container with resolve, bind, and singleton methods
walmir-silva Mar 6, 2025
30e3bb7
feat(di): standardize interface docs and add unit tests
walmir-silva Mar 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,5 @@ temp/
tmp/
.vscode/launch.json
.vscode/extensions.json
tests/lista_de_arquivos.php
tests/lista_de_arquivos.php
/composer.lock
26 changes: 13 additions & 13 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 42 additions & 0 deletions src/DI/Compiler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

declare(strict_types=1);

namespace KaririCode\Contract\DI;

/**
* Interface Compiler.
*
* Defines the contract for compiling container definitions and handling caching mechanisms.
*
* @category DependencyInjection
*
* @author Walmir Silva <walmir.silva@kariricode.org>
*/
interface Compiler
{
/**
* Compiles the container definitions.
*
* @param Container $container The container to compile
*
* @return Container Compiled container
*/
public function compile(Container $container): Container;

/**
* Writes compiled container to a file.
*
* @param string $path Path to the file where compiled container will be written
*/
public function writeToFile(string $path): void;

/**
* Loads compiled container definitions from a file.
*
* @param string $path Path to the file containing compiled container definitions
*
* @return Container Loaded container instance
*/
public function loadFromFile(string $path): Container;
}
122 changes: 122 additions & 0 deletions src/DI/Container.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
<?php

declare(strict_types=1);

namespace KaririCode\Contract\DI;

/**
* Interface Container.
*
* Defines the contract for a dependency injection container that manages the creation and resolution of services.
*
* @category DependencyInjection
*
* @author Walmir Silva <walmir.silva@kariricode.org>
*/
interface Container
{
/**
* Sets a service in the container.
*
* @param string $id Identifier of the service
* @param callable $service The callable that returns the service instance
*/
public function set(string $id, callable $service): void;

/**
* Retrieves a service by its identifier.
*
* @param string $id Identifier of the service to retrieve
*
* @return mixed The service instance
*/
public function get(string $id): mixed;

/**
* Checks if the container can return a service for the given identifier.
*
* @param string $id Identifier of the service to check
*
* @return bool True if the service is found, false otherwise
*/
public function has(string $id): bool;

/**
* Resolves and returns an instance of the given abstract type.
*
* @param string $abstract The abstract type or identifier to resolve
*
* @return object Resolved instance of the given abstract
*/
public function resolve(string $abstract): object;

/**
* Binds a concrete implementation to an abstract type with optional parameters.
*
* @param string $abstract The abstract type or identifier
* @param mixed $concrete The concrete implementation (class name or closure)
* @param array $parameters Optional parameters for instantiation
*/
public function bind(string $abstract, mixed $concrete, array $parameters = []): void;

/**
* Registers a singleton binding, ensuring the instance is created only once.
*
* @param string $abstract The abstract type or identifier
* @param mixed $concrete The concrete implementation (class name or closure)
* @param array $parameters Optional parameters
*/
public function singleton(string $abstract, mixed $concrete, array $parameters = []): void;

/**
* Registers a factory binding, creating a new instance upon each resolution.
*
* @param string $abstract The abstract type or identifier
* @param mixed $concrete The concrete implementation (class name or closure)
* @param array $parameters Optional parameters
*/
public function factory(string $abstract, mixed $concrete, array $parameters = []): void;

/**
* Assigns multiple abstracts to a specific tag.
*
* @param string $tag Tag name
* @param array $abstracts List of abstract identifiers
*/
public function tag(string $tag, array $abstracts): void;

/**
* Retrieves abstracts associated with a specific tag.
*
* @param string $tag Tag name
*
* @return array Abstract identifiers tagged
*/
public function tagged(string $tag): array;

/**
* Executes a callable or method with provided parameters.
*
* @param callable|string $callback The callable or method name
* @param array $parameters Parameters to pass
*
* @return mixed Result of the callable execution
*/
public function call(callable|string $callback, array $parameters = []): mixed;

/**
* Extends an existing binding.
*
* @param string $abstract Abstract identifier to extend
* @param \Closure $extender Closure to extend functionality
*/
public function extend(string $abstract, \Closure $extender): void;

/**
* Creates an alias for an abstract identifier.
*
* @param string $abstract Original abstract identifier
* @param string $alias Alias to use
*/
public function alias(string $abstract, string $alias): void;
}
52 changes: 52 additions & 0 deletions src/DI/Definition.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

declare(strict_types=1);

namespace KaririCode\Contract\DI;

/**
* Interface Definition.
*
* Defines the contract for service definitions managed by the dependency injection container.
*
* @category DependencyInjection
*
* @author Walmir Silva <walmir.silva@kariricode.org>
*/
interface Definition
{
/**
* Gets the concrete implementation.
*
* @return mixed The concrete implementation of the service
*/
public function getConcrete(): mixed;

/**
* Gets the instantiation parameters.
*
* @return array Parameters used for service instantiation
*/
public function getParameters(): array;

/**
* Gets tags associated with the definition.
*
* @return array List of tags associated with this definition
*/
public function getTags(): array;

/**
* Checks if definition is a singleton.
*
* @return bool True if the definition is a singleton, false otherwise
*/
public function isSingleton(): bool;

/**
* Checks if definition is a factory.
*
* @return bool True if the definition is a factory, false otherwise
*/
public function isFactory(): bool;
}
31 changes: 31 additions & 0 deletions src/DI/Provider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace KaririCode\Contract\DI;

/**
* Interface Provider.
*
* Defines the contract for service providers responsible for registering and bootstrapping services.
*
* @category DependencyInjection
*
* @author Walmir Silva <walmir.silva@kariricode.org>
*/
interface Provider
{
/**
* Registers services into the container.
*
* @param Container $container The dependency injection container
*/
public function register(Container $container): void;

/**
* Boots services after registration.
*
* @param Container $container The dependency injection container
*/
public function boot(Container $container): void;
}
46 changes: 0 additions & 46 deletions src/DependencyInjection/Container.php

This file was deleted.

Loading
Loading