Skip to content

Commit 61d6a57

Browse files
author
Яценко Андрей
committed
Init class-transformer function
1 parent 4f2511e commit 61d6a57

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.idea

composer.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"name": "yzen.dev/plain-to-class",
3+
"version": "0.0.1",
4+
"description": "Class-transformer function to transform our object into a typed object",
5+
"minimum-stability": "dev",
6+
"prefer-stable": true,
7+
"license": "MIT",
8+
"keywords": [ "php", "object", "class", "transformer", "class-transformer"],
9+
"authors": [
10+
{
11+
"name": "Andey Iatsenko",
12+
"email": "yzen.dev@gmail.com"
13+
}
14+
],
15+
"config": {
16+
"sort-packages": true
17+
},
18+
"autoload": {
19+
"files": [
20+
"plainToClass.php"
21+
]
22+
},
23+
"require": {
24+
"php": "^5.5|^7.0|^8.0"
25+
},
26+
"support": {
27+
"issues": "https://github.com/yzen-dev/plain-to-class/issues",
28+
"source": "https://github.com/yzen-dev/plain-to-class"
29+
}
30+
}

plainToClass.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
if (!function_exists('plainToClass')) {
4+
/**
5+
* Class-transformer function to transform our object into a typed object
6+
* @template T
7+
*
8+
* @param T $class
9+
* @param $args
10+
*
11+
* @return T
12+
*/
13+
function plainToClass($class, $args)
14+
{
15+
$instance = new $class;
16+
if ($args !== null) {
17+
if (method_exists($class,'plainToClass')){
18+
return $class::plainToClass($args);
19+
}
20+
foreach ($args as $key => $val) {
21+
if (property_exists($instance, $key)) {
22+
$instance->{$key} = $val;
23+
}
24+
}
25+
}
26+
return $instance;
27+
}
28+
}

0 commit comments

Comments
 (0)