Skip to content

Commit

Permalink
Merge pull request #17 from spotlibs/feature/exploration
Browse files Browse the repository at this point in the history
type converter DTO
  • Loading branch information
m45adiwinata authored Sep 17, 2024
2 parents 8fb5c6f + f678fe0 commit 7ace30c
Show file tree
Hide file tree
Showing 14 changed files with 445 additions and 230 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@
/.phpunit.cache
.phpunit.result.cache
.env
/.vscode
/.vscode
report_coverage.xml
/storage
3 changes: 0 additions & 3 deletions .vscode/settings.json

This file was deleted.

94 changes: 94 additions & 0 deletions bootstrap/app.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?php

require_once __DIR__ . '/../vendor/autoload.php';

(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
dirname(__DIR__)
))->bootstrap();

date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| Here we will load the environment and create the application instance
| that serves as the central piece of this framework. We'll use this
| application as an "IoC" container and router for this framework.
|
*/

$app = new Laravel\Lumen\Application(
dirname(__DIR__)
);

$app->withFacades();

// $app->withEloquent();

/*
|--------------------------------------------------------------------------
| Register Container Bindings
|--------------------------------------------------------------------------
|
| Now we will register a few bindings in the service container. We will
| register the exception handler and the console kernel. You may add
| your own bindings here if you like or you can make another file.
|
*/

/*
|--------------------------------------------------------------------------
| Register Config Files
|--------------------------------------------------------------------------
|
| Now we will register the "app" configuration file. If the file exists in
| your configuration directory it will be loaded; otherwise, we'll load
| the default version. You may register other files below as needed.
|
*/

$app->configure('app');
$app->configure('logging');

/*
|--------------------------------------------------------------------------
| Register Middleware
|--------------------------------------------------------------------------
|
| Next, we will register the middleware with the application. These can
| be global middleware that run before and after each request into a
| route or middleware that'll be assigned to some specific routes.
|
*/

/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
|
| Here we will register all of the application's service providers which
| are used to bind services into the container. Service providers are
| totally optional, so you are not required to uncomment this line.
|
*/

/*
|--------------------------------------------------------------------------
| Load The Application Routes
|--------------------------------------------------------------------------
|
| Next we will include the routes file so that they can all be added to
| the application. This will provide all of the URLs the application
| can respond to, as well as the controllers that may handle them.
|
*/

// $app->router->group([
// 'namespace' => 'App\Http\Controllers',
// ], function ($router) {
// require __DIR__ . '/../routes/api.php';
// });

return $app;
2 changes: 2 additions & 0 deletions phpcs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<exclude name="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore" />
<exclude name="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore" />
<exclude name="Generic.Files.LineEndings"/>
<exclude name="PEAR.WhiteSpace.ScopeIndent.IncorrectExact" />
</rule>
<rule ref="Generic.Files.LineLength">
<properties>
Expand All @@ -22,4 +23,5 @@
<exclude-pattern>resources</exclude-pattern>
<exclude-pattern>database/</exclude-pattern>
<exclude-pattern>storage/</exclude-pattern>
<exclude-pattern>bootstrap/</exclude-pattern>
</ruleset>
1 change: 1 addition & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<file>src/Exceptions/Handler.php</file>
<directory suffix=".php">src/Commands</directory>
<directory suffix=".php">src/Libraries</directory>
<directory suffix=".php">src/Middlewares</directory>
<directory suffix=".php">src/Providers</directory>
<directory suffix=".php">src/Validations</directory>
</exclude>
Expand Down
209 changes: 0 additions & 209 deletions report_coverage.xml

This file was deleted.

11 changes: 11 additions & 0 deletions src/Dtos/TraitDtos.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@

namespace Spotlibs\PhpLib\Dtos;

use ReflectionClass;
use Throwable;

/**
* TraitDtos
*
Expand All @@ -35,7 +38,15 @@ trait TraitDtos
*/
public function __construct(array $data = [])
{
$reflector = new ReflectionClass(static::class);
foreach ($data as $key => $value) {
try {
$prop = $reflector->getProperty($key);
} catch (Throwable) {
// array key is not one of constructed DTO's property name
continue;
}
$value = TypeConverter::assertType($value, $reflector, $prop);
$this->{$key} = $value;
}
}
Expand Down
Loading

0 comments on commit 7ace30c

Please sign in to comment.