diff --git a/.github/workflows/php-tests.yml b/.github/workflows/php-tests.yml index f1abe3c..1b888e8 100644 --- a/.github/workflows/php-tests.yml +++ b/.github/workflows/php-tests.yml @@ -43,7 +43,7 @@ jobs: run: composer run-script ci-test - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: coverage-report path: coverage.xml diff --git a/.gitignore b/.gitignore index 783d717..847bd3e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ vendor/ .idea/ coverage.xml package.xml +clover.xml coverage-html/ .phpunit/ /.php-cs-fixer.cache diff --git a/README.md b/README.md index 917badc..8bc6dbe 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ final readonly class UserData extends Data public function __construct( public string $firstName, #[Aliases('familyName')] - public stirng $lastName + public string $lastName ) { $this->fullName = "$this->firstName $this->lastName"; } @@ -67,10 +67,6 @@ This package was inspired from the [spatie/data-transfer-object](https://github. The main thing that I tried to focus on when creating this package is to make it outside of Laravel ecosystem, meaning: no dependency on [illuminate/support](https://github.com/illuminate/support). -**In no way** I am trying to compare this package with the original one, -Clearly, the original package is more advanced and has more features than this one, -and if you are using Laravel, I highly recommend using the original package instead of this one. - ### Requirements - PHP 8.4 or higher diff --git a/clover.xml b/clover.xml deleted file mode 100644 index 26f192e..0000000 --- a/clover.xml +++ /dev/null @@ -1,1664 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<coverage generated="1735743024"> - <project timestamp="1735743024"> - <package name="Nuxtifyts\PhpDto\Attributes\Class"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Class/MapName.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Class\MapName" namespace="Nuxtifyts\PhpDto\Attributes\Class"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </class> - <line num="14" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/> - <line num="18" type="stmt" count="1"/> - <metrics loc="20" ncloc="17" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Class/WithNormalizer.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Class\WithNormalizer" namespace="Nuxtifyts\PhpDto\Attributes\Class"> - <metrics complexity="2" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </class> - <line num="20" type="method" name="__construct" visibility="public" complexity="2" crap="2" count="3"/> - <line num="22" type="stmt" count="3"/> - <line num="24" type="stmt" count="3"/> - <line num="25" type="stmt" count="1"/> - <line num="28" type="stmt" count="2"/> - <metrics loc="31" ncloc="26" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Attributes\Property"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Aliases.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\Aliases" namespace="Nuxtifyts\PhpDto\Attributes\Property"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </class> - <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/> - <line num="17" type="stmt" count="1"/> - <metrics loc="20" ncloc="19" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/CipherTarget.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\CipherTarget" namespace="Nuxtifyts\PhpDto\Attributes\Property"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </class> - <line num="14" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/> - <line num="19" type="stmt" count="4"/> - <metrics loc="21" ncloc="18" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Computed.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\Computed" namespace="Nuxtifyts\PhpDto\Attributes\Property"> - <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </class> - <metrics loc="11" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/DefaultsTo.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\DefaultsTo" namespace="Nuxtifyts\PhpDto\Attributes\Property"> - <metrics complexity="4" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="5" elements="6" coveredelements="6"/> - </class> - <line num="25" type="method" name="__construct" visibility="public" complexity="4" crap="4" count="4"/> - <line num="28" type="stmt" count="4"/> - <line num="30" type="stmt" count="2"/> - <line num="32" type="stmt" count="2"/> - <line num="33" type="stmt" count="1"/> - <line num="36" type="stmt" count="1"/> - <metrics loc="41" ncloc="32" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="5" elements="6" coveredelements="6"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Hidden.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\Hidden" namespace="Nuxtifyts\PhpDto\Attributes\Property"> - <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </class> - <metrics loc="11" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/WithRefiner.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\WithRefiner" namespace="Nuxtifyts\PhpDto\Attributes\Property"> - <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/> - </class> - <line num="17" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/> - <line num="21" type="stmt" count="1"/> - <line num="24" type="method" name="getRefiner" visibility="public" complexity="1" crap="1" count="1"/> - <line num="26" type="stmt" count="1"/> - <metrics loc="29" ncloc="25" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Attributes\Property\Types"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Types/ArrayOfBackedEnums.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\Types\ArrayOfBackedEnums" namespace="Nuxtifyts\PhpDto\Attributes\Property\Types"> - <metrics complexity="7" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="17" elements="18" coveredelements="18"/> - </class> - <line num="25" type="method" name="__construct" visibility="public" complexity="7" crap="7" count="7"/> - <line num="28" type="stmt" count="7"/> - <line num="30" type="stmt" count="7"/> - <line num="31" type="stmt" count="1"/> - <line num="32" type="stmt" count="1"/> - <line num="33" type="stmt" count="1"/> - <line num="35" type="stmt" count="6"/> - <line num="36" type="stmt" count="6"/> - <line num="37" type="stmt" count="2"/> - <line num="38" type="stmt" count="2"/> - <line num="39" type="stmt" count="2"/> - <line num="45" type="stmt" count="4"/> - <line num="47" type="stmt" count="4"/> - <line num="48" type="stmt" count="1"/> - <line num="49" type="stmt" count="1"/> - <line num="50" type="stmt" count="1"/> - <line num="53" type="stmt" count="3"/> - <line num="57" type="stmt" count="3"/> - <metrics loc="60" ncloc="51" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="17" elements="18" coveredelements="18"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Types/ArrayOfData.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\Types\ArrayOfData" namespace="Nuxtifyts\PhpDto\Attributes\Property\Types"> - <metrics complexity="8" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="21" coveredstatements="21" elements="22" coveredelements="22"/> - </class> - <line num="27" type="method" name="__construct" visibility="public" complexity="8" crap="8" count="6"/> - <line num="31" type="stmt" count="6"/> - <line num="33" type="stmt" count="6"/> - <line num="34" type="stmt" count="1"/> - <line num="35" type="stmt" count="1"/> - <line num="36" type="stmt" count="1"/> - <line num="38" type="stmt" count="5"/> - <line num="39" type="stmt" count="5"/> - <line num="40" type="stmt" count="1"/> - <line num="41" type="stmt" count="1"/> - <line num="42" type="stmt" count="1"/> - <line num="48" type="stmt" count="4"/> - <line num="50" type="stmt" count="4"/> - <line num="51" type="stmt" count="1"/> - <line num="52" type="stmt" count="1"/> - <line num="53" type="stmt" count="1"/> - <line num="56" type="stmt" count="3"/> - <line num="60" type="stmt" count="3"/> - <line num="61" type="stmt" count="3"/> - <line num="62" type="stmt" count="3"/> - <line num="63" type="stmt" count="3"/> - <line num="64" type="stmt" count="3"/> - <metrics loc="68" ncloc="59" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="21" coveredstatements="21" elements="22" coveredelements="22"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Types/ArrayOfDateTimes.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\Types\ArrayOfDateTimes" namespace="Nuxtifyts\PhpDto\Attributes\Property\Types"> - <metrics complexity="9" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="21" coveredstatements="21" elements="22" coveredelements="22"/> - </class> - <line num="28" type="method" name="__construct" visibility="public" complexity="9" crap="9" count="6"/> - <line num="32" type="stmt" count="6"/> - <line num="34" type="stmt" count="6"/> - <line num="35" type="stmt" count="1"/> - <line num="36" type="stmt" count="1"/> - <line num="37" type="stmt" count="1"/> - <line num="39" type="stmt" count="5"/> - <line num="40" type="stmt" count="5"/> - <line num="41" type="stmt" count="1"/> - <line num="42" type="stmt" count="1"/> - <line num="43" type="stmt" count="1"/> - <line num="49" type="stmt" count="4"/> - <line num="51" type="stmt" count="4"/> - <line num="52" type="stmt" count="1"/> - <line num="53" type="stmt" count="1"/> - <line num="54" type="stmt" count="1"/> - <line num="57" type="stmt" count="3"/> - <line num="61" type="stmt" count="3"/> - <line num="62" type="stmt" count="3"/> - <line num="63" type="stmt" count="3"/> - <line num="64" type="stmt" count="3"/> - <line num="65" type="stmt" count="3"/> - <metrics loc="69" ncloc="60" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="21" coveredstatements="21" elements="22" coveredelements="22"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Types/ArrayOfScalarTypes.php"> - <class name="Nuxtifyts\PhpDto\Attributes\Property\Types\ArrayOfScalarTypes" namespace="Nuxtifyts\PhpDto\Attributes\Property\Types"> - <metrics complexity="3" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="9" elements="10" coveredelements="10"/> - </class> - <line num="18" type="method" name="__construct" visibility="public" complexity="3" crap="3" count="7"/> - <line num="21" type="stmt" count="7"/> - <line num="24" type="stmt" count="7"/> - <line num="25" type="stmt" count="7"/> - <line num="26" type="stmt" count="7"/> - <line num="27" type="stmt" count="7"/> - <line num="29" type="stmt" count="1"/> - <line num="30" type="stmt" count="1"/> - <line num="31" type="stmt" count="1"/> - <line num="34" type="stmt" count="6"/> - <metrics loc="37" ncloc="33" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="9" elements="10" coveredelements="10"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Concerns"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Concerns/BaseData.php"> - <class name="Nuxtifyts\PhpDto\Concerns\BaseData" namespace="Nuxtifyts\PhpDto\Concerns"> - <metrics complexity="20" methods="7" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="53" coveredstatements="53" elements="60" coveredelements="60"/> - </class> - <line num="22" type="method" name="create" visibility="public" complexity="4" crap="4" count="2"/> - <line num="26" type="stmt" count="2"/> - <line num="28" type="stmt" count="2"/> - <line num="29" type="stmt" count="2"/> - <line num="31" type="stmt" count="2"/> - <line num="32" type="stmt" count="1"/> - <line num="35" type="stmt" count="1"/> - <line num="36" type="stmt" count="1"/> - <line num="37" type="stmt" count="1"/> - <line num="38" type="stmt" count="1"/> - <line num="39" type="stmt" count="1"/> - <line num="40" type="stmt" count="1"/> - <line num="42" type="stmt" count="1"/> - <line num="43" type="stmt" count="1"/> - <line num="44" type="stmt" count="1"/> - <line num="51" type="method" name="from" visibility="public" complexity="4" crap="4" count="29"/> - <line num="55" type="stmt" count="29"/> - <line num="57" type="stmt" count="29"/> - <line num="59" type="stmt" count="29"/> - <line num="60" type="stmt" count="1"/> - <line num="63" type="stmt" count="28"/> - <line num="64" type="stmt" count="28"/> - <line num="65" type="stmt" count="28"/> - <line num="66" type="stmt" count="28"/> - <line num="67" type="stmt" count="28"/> - <line num="68" type="stmt" count="28"/> - <line num="70" type="stmt" count="28"/> - <line num="71" type="stmt" count="5"/> - <line num="72" type="stmt" count="27"/> - <line num="73" type="stmt" count="3"/> - <line num="74" type="stmt" count="3"/> - <line num="84" type="method" name="instanceWithoutConstructorFrom" visibility="protected" complexity="2" crap="2" count="24"/> - <line num="86" type="stmt" count="24"/> - <line num="88" type="stmt" count="24"/> - <line num="89" type="stmt" count="24"/> - <line num="91" type="stmt" count="24"/> - <line num="94" type="stmt" count="24"/> - <line num="103" type="method" name="instanceWithConstructorCallFrom" visibility="protected" complexity="3" crap="3" count="6"/> - <line num="106" type="stmt" count="6"/> - <line num="108" type="stmt" count="6"/> - <line num="109" type="stmt" count="6"/> - <line num="111" type="stmt" count="6"/> - <line num="112" type="stmt" count="1"/> - <line num="115" type="stmt" count="6"/> - <line num="118" type="stmt" count="5"/> - <line num="126" type="method" name="jsonSerialize" visibility="public" complexity="5" crap="5" count="29"/> - <line num="129" type="stmt" count="29"/> - <line num="131" type="stmt" count="29"/> - <line num="132" type="stmt" count="29"/> - <line num="133" type="stmt" count="29"/> - <line num="134" type="stmt" count="4"/> - <line num="137" type="stmt" count="29"/> - <line num="139" type="stmt" count="29"/> - <line num="142" type="stmt" count="28"/> - <line num="143" type="stmt" count="1"/> - <line num="144" type="stmt" count="1"/> - <line num="151" type="method" name="toArray" visibility="public" complexity="1" crap="1" count="4"/> - <line num="153" type="stmt" count="4"/> - <line num="156" type="method" name="toJson" visibility="public" complexity="1" crap="1" count="1"/> - <line num="158" type="stmt" count="1"/> - <metrics loc="161" ncloc="132" classes="1" methods="7" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="53" coveredstatements="53" elements="60" coveredelements="60"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Concerns/CloneableData.php"> - <class name="Nuxtifyts\PhpDto\Concerns\CloneableData" namespace="Nuxtifyts\PhpDto\Concerns"> - <metrics complexity="13" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="31" coveredelements="31"/> - </class> - <line num="18" type="method" name="with" visibility="public" complexity="6" crap="6" count="11"/> - <line num="21" type="stmt" count="11"/> - <line num="22" type="stmt" count="1"/> - <line num="26" type="stmt" count="10"/> - <line num="28" type="stmt" count="10"/> - <line num="29" type="stmt" count="3"/> - <line num="31" type="stmt" count="10"/> - <line num="32" type="stmt" count="1"/> - <line num="35" type="stmt" count="9"/> - <line num="36" type="stmt" count="7"/> - <line num="37" type="stmt" count="7"/> - <line num="38" type="stmt" count="4"/> - <line num="39" type="stmt" count="4"/> - <line num="49" type="method" name="cloneInstanceWithConstructorCall" visibility="protected" complexity="4" crap="4" count="7"/> - <line num="52" type="stmt" count="7"/> - <line num="54" type="stmt" count="7"/> - <line num="55" type="stmt" count="7"/> - <line num="57" type="stmt" count="7"/> - <line num="58" type="stmt" count="1"/> - <line num="61" type="stmt" count="7"/> - <line num="62" type="stmt" count="6"/> - <line num="63" type="stmt" count="5"/> - <line num="66" type="stmt" count="6"/> - <line num="75" type="method" name="cloneInstanceWithoutConstructorCall" visibility="protected" complexity="3" crap="3" count="2"/> - <line num="77" type="stmt" count="2"/> - <line num="79" type="stmt" count="2"/> - <line num="80" type="stmt" count="2"/> - <line num="81" type="stmt" count="2"/> - <line num="82" type="stmt" count="2"/> - <line num="83" type="stmt" count="2"/> - <line num="86" type="stmt" count="2"/> - <metrics loc="89" ncloc="72" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="28" elements="31" coveredelements="31"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Concerns/EmptyData.php"> - <class name="Nuxtifyts\PhpDto\Concerns\EmptyData" namespace="Nuxtifyts\PhpDto\Concerns"> - <metrics complexity="2" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </class> - <line num="15" type="method" name="empty" visibility="public" complexity="2" crap="2" count="10"/> - <line num="19" type="stmt" count="10"/> - <line num="21" type="stmt" count="10"/> - <line num="22" type="stmt" count="1"/> - <line num="23" type="stmt" count="1"/> - <metrics loc="27" ncloc="23" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </file> - </package> - <file name="/Users/faroukbraik/Dev/php-dto/src/Configuration/Configuration.php"> - <metrics loc="19" ncloc="14" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <package name="Nuxtifyts\PhpDto\Configuration"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Configuration/DataConfiguration.php"> - <class name="Nuxtifyts\PhpDto\Configuration\DataConfiguration" namespace="Nuxtifyts\PhpDto\Configuration"> - <metrics complexity="4" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/> - </class> - <line num="12" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="2"/> - <line num="16" type="stmt" count="2"/> - <line num="23" type="method" name="getInstance" visibility="public" complexity="3" crap="3" count="12"/> - <line num="27" type="stmt" count="12"/> - <line num="28" type="stmt" count="10"/> - <line num="31" type="stmt" count="4"/> - <line num="32" type="stmt" count="4"/> - <line num="33" type="stmt" count="4"/> - <line num="34" type="stmt" count="4"/> - <line num="35" type="stmt" count="4"/> - <line num="36" type="stmt" count="4"/> - <line num="37" type="stmt" count="4"/> - <line num="38" type="stmt" count="4"/> - <line num="39" type="stmt" count="4"/> - <line num="40" type="stmt" count="4"/> - <metrics loc="43" ncloc="38" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Configuration/NormalizersConfiguration.php"> - <class name="Nuxtifyts\PhpDto\Configuration\NormalizersConfiguration" namespace="Nuxtifyts\PhpDto\Configuration"> - <metrics complexity="6" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="16" coveredelements="16"/> - </class> - <line num="20" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="3"/> - <line num="23" type="stmt" count="3"/> - <line num="30" type="method" name="getInstance" visibility="public" complexity="5" crap="5" count="4"/> - <line num="34" type="stmt" count="4"/> - <line num="35" type="stmt" count="1"/> - <line num="38" type="stmt" count="4"/> - <line num="39" type="stmt" count="4"/> - <line num="40" type="stmt" count="4"/> - <line num="41" type="stmt" count="4"/> - <line num="42" type="stmt" count="4"/> - <line num="46" type="stmt" count="4"/> - <line num="47" type="stmt" count="4"/> - <line num="49" type="stmt" count="1"/> - <line num="53" type="stmt" count="3"/> - <line num="54" type="stmt" count="3"/> - <line num="55" type="stmt" count="3"/> - <metrics loc="58" ncloc="49" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="14" elements="16" coveredelements="16"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Configuration/SerializersConfiguration.php"> - <class name="Nuxtifyts\PhpDto\Configuration\SerializersConfiguration" namespace="Nuxtifyts\PhpDto\Configuration"> - <metrics complexity="6" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="17" coveredelements="17"/> - </class> - <line num="21" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="2"/> - <line num="24" type="stmt" count="2"/> - <line num="31" type="method" name="getInstance" visibility="public" complexity="5" crap="5" count="3"/> - <line num="35" type="stmt" count="3"/> - <line num="36" type="stmt" count="1"/> - <line num="39" type="stmt" count="3"/> - <line num="40" type="stmt" count="3"/> - <line num="41" type="stmt" count="3"/> - <line num="42" type="stmt" count="3"/> - <line num="43" type="stmt" count="3"/> - <line num="44" type="stmt" count="3"/> - <line num="48" type="stmt" count="3"/> - <line num="49" type="stmt" count="3"/> - <line num="51" type="stmt" count="1"/> - <line num="55" type="stmt" count="2"/> - <line num="56" type="stmt" count="2"/> - <line num="57" type="stmt" count="2"/> - <metrics loc="60" ncloc="51" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="17" coveredelements="17"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Contexts"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contexts/ClassContext.php"> - <class name="Nuxtifyts\PhpDto\Contexts\ClassContext" namespace="Nuxtifyts\PhpDto\Contexts"> - <metrics complexity="16" methods="8" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="38" elements="46" coveredelements="46"/> - </class> - <line num="48" type="method" name="__construct" visibility="private" complexity="1" crap="1" count="11"/> - <line num="51" type="stmt" count="11"/> - <line num="52" type="stmt" count="11"/> - <line num="53" type="stmt" count="11"/> - <line num="54" type="stmt" count="11"/> - <line num="55" type="stmt" count="11"/> - <line num="56" type="stmt" count="11"/> - <line num="74" type="method" name="getInstance" visibility="public" complexity="3" crap="3" count="27"/> - <line num="76" type="stmt" count="27"/> - <line num="78" type="stmt" count="27"/> - <line num="79" type="stmt" count="20"/> - <line num="82" type="stmt" count="11"/> - <line num="83" type="stmt" count="11"/> - <line num="86" type="stmt" count="11"/> - <line num="87" type="stmt" count="11"/> - <line num="93" type="method" name="getKey" visibility="private" complexity="2" crap="2" count="27"/> - <line num="95" type="stmt" count="27"/> - <line num="105" type="method" name="getPropertyContexts" visibility="private" complexity="2" crap="2" count="11"/> - <line num="107" type="stmt" count="11"/> - <line num="109" type="stmt" count="11"/> - <line num="110" type="stmt" count="10"/> - <line num="113" type="stmt" count="11"/> - <line num="116" type="method" name="syncClassAttributes" visibility="private" complexity="3" crap="3" count="11"/> - <line num="118" type="stmt" count="11"/> - <line num="120" type="stmt" count="1"/> - <line num="121" type="stmt" count="1"/> - <line num="122" type="stmt" count="1"/> - <line num="123" type="stmt" count="1"/> - <line num="126" type="stmt" count="11"/> - <line num="128" type="stmt" count="1"/> - <line num="130" type="stmt" count="1"/> - <line num="131" type="stmt" count="1"/> - <line num="132" type="stmt" count="1"/> - <line num="133" type="stmt" count="1"/> - <line num="142" type="method" name="newInstanceWithoutConstructor" visibility="public" complexity="1" crap="1" count="10"/> - <line num="144" type="stmt" count="10"/> - <line num="152" type="method" name="newInstanceWithConstructorCall" visibility="public" complexity="1" crap="1" count="14"/> - <line num="154" type="stmt" count="14"/> - <line num="164" type="method" name="emptyValue" visibility="public" complexity="3" crap="3" count="10"/> - <line num="167" type="stmt" count="10"/> - <line num="169" type="stmt" count="10"/> - <line num="170" type="stmt" count="10"/> - <line num="172" type="stmt" count="10"/> - <line num="173" type="stmt" count="1"/> - <line num="176" type="stmt" count="9"/> - <line num="179" type="stmt" count="9"/> - <metrics loc="182" ncloc="127" classes="1" methods="8" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="38" elements="46" coveredelements="46"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contexts/PropertyContext.php"> - <class name="Nuxtifyts\PhpDto\Contexts\PropertyContext" namespace="Nuxtifyts\PhpDto\Contexts"> - <metrics complexity="37" methods="11" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="89" coveredstatements="83" elements="100" coveredelements="92"/> - </class> - <line num="67" type="method" name="__construct" visibility="private" complexity="1" crap="1" count="61"/> - <line num="70" type="stmt" count="61"/> - <line num="71" type="stmt" count="60"/> - <line num="96" type="method" name="getInstance" visibility="public" complexity="1" crap="1" count="78"/> - <line num="98" type="stmt" count="78"/> - <line num="99" type="stmt" count="78"/> - <line num="102" type="method" name="getKey" visibility="private" complexity="1" crap="1" count="78"/> - <line num="104" type="stmt" count="78"/> - <line num="107" type="method" name="syncPropertyAttributes" visibility="private" complexity="6" crap="6" count="60"/> - <line num="109" type="stmt" count="60"/> - <line num="110" type="stmt" count="60"/> - <line num="112" type="stmt" count="60"/> - <line num="114" type="stmt" count="1"/> - <line num="117" type="stmt" count="60"/> - <line num="119" type="stmt" count="1"/> - <line num="122" type="stmt" count="60"/> - <line num="124" type="stmt" count="4"/> - <line num="126" type="stmt" count="4"/> - <line num="127" type="stmt" count="4"/> - <line num="128" type="stmt" count="4"/> - <line num="129" type="stmt" count="4"/> - <line num="130" type="stmt" count="4"/> - <line num="133" type="stmt" count="60"/> - <line num="135" type="stmt" count="3"/> - <line num="137" type="stmt" count="3"/> - <line num="138" type="stmt" count="3"/> - <line num="139" type="stmt" count="3"/> - <line num="140" type="stmt" count="3"/> - <line num="144" type="method" name="getValue" visibility="public" complexity="1" crap="1" count="34"/> - <line num="146" type="stmt" count="34"/> - <line num="152" type="method" name="getFilteredTypeContexts" visibility="public" complexity="1" crap="1" count="36"/> - <line num="154" type="stmt" count="36"/> - <line num="155" type="stmt" count="36"/> - <line num="156" type="stmt" count="36"/> - <line num="157" type="stmt" count="36"/> - <line num="158" type="stmt" count="36"/> - <line num="159" type="stmt" count="36"/> - <line num="160" type="stmt" count="36"/> - <line num="166" type="method" name="getFilteredSubTypeContexts" visibility="public" complexity="1" crap="1" count="14"/> - <line num="168" type="stmt" count="14"/> - <line num="169" type="stmt" count="14"/> - <line num="170" type="stmt" count="14"/> - <line num="171" type="stmt" count="14"/> - <line num="172" type="stmt" count="14"/> - <line num="173" type="stmt" count="14"/> - <line num="174" type="stmt" count="14"/> - <line num="183" type="method" name="resolveSerializers" visibility="protected" complexity="1" crap="1" count="12"/> - <line num="185" type="stmt" count="12"/> - <line num="195" type="method" name="deserializeFrom" visibility="public" complexity="3" crap="3" count="17"/> - <line num="197" type="stmt" count="17"/> - <line num="199" type="stmt" count="17"/> - <line num="200" type="stmt" count="1"/> - <line num="204" type="stmt" count="1"/> - <line num="212" type="method" name="serializeFrom" visibility="public" complexity="6" crap="6.47" count="16"/> - <line num="215" type="stmt" count="16"/> - <line num="217" type="stmt" count="16"/> - <line num="218" type="stmt" count="0"/> - <line num="222" type="stmt" count="16"/> - <line num="223" type="stmt" count="0"/> - <line num="226" type="stmt" count="16"/> - <line num="227" type="stmt" count="3"/> - <line num="228" type="stmt" count="3"/> - <line num="229" type="stmt" count="3"/> - <line num="230" type="stmt" count="3"/> - <line num="231" type="stmt" count="3"/> - <line num="232" type="stmt" count="3"/> - <line num="233" type="stmt" count="3"/> - <line num="234" type="stmt" count="3"/> - <line num="237" type="stmt" count="14"/> - <line num="238" type="stmt" count="0"/> - <line num="239" type="stmt" count="0"/> - <line num="248" type="method" name="emptyValue" visibility="public" complexity="15" crap="15.08" count="9"/> - <line num="250" type="stmt" count="9"/> - <line num="251" type="stmt" count="5"/> - <line num="254" type="stmt" count="8"/> - <line num="255" type="stmt" count="0"/> - <line num="259" type="stmt" count="8"/> - <line num="260" type="stmt" count="4"/> - <line num="262" type="stmt" count="8"/> - <line num="263" type="stmt" count="1"/> - <line num="265" type="stmt" count="8"/> - <line num="266" type="stmt" count="1"/> - <line num="268" type="stmt" count="8"/> - <line num="269" type="stmt" count="1"/> - <line num="271" type="stmt" count="7"/> - <line num="272" type="stmt" count="2"/> - <line num="274" type="stmt" count="5"/> - <line num="276" type="stmt" count="1"/> - <line num="278" type="stmt" count="1"/> - <line num="279" type="stmt" count="0"/> - <line num="280" type="stmt" count="1"/> - <line num="282" type="stmt" count="4"/> - <line num="284" type="stmt" count="2"/> - <line num="286" type="stmt" count="2"/> - <line num="287" type="stmt" count="2"/> - <line num="288" type="stmt" count="2"/> - <line num="292" type="stmt" count="2"/> - <line num="294" type="stmt" count="2"/> - <line num="295" type="stmt" count="2"/> - <line num="296" type="stmt" count="2"/> - <metrics loc="300" ncloc="247" classes="1" methods="11" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="89" coveredstatements="83" elements="100" coveredelements="92"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contexts/TypeContext.php"> - <class name="Nuxtifyts\PhpDto\Contexts\TypeContext" namespace="Nuxtifyts\PhpDto\Contexts"> - <metrics complexity="31" methods="7" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="73" coveredstatements="65" elements="80" coveredelements="69"/> - </class> - <line num="56" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="36"/> - <line num="61" type="stmt" count="36"/> - <line num="68" type="method" name="getInstances" visibility="public" complexity="12" crap="12" count="37"/> - <line num="70" type="stmt" count="37"/> - <line num="71" type="stmt" count="37"/> - <line num="73" type="stmt" count="37"/> - <line num="75" type="stmt" count="37"/> - <line num="76" type="stmt" count="1"/> - <line num="77" type="stmt" count="1"/> - <line num="78" type="stmt" count="36"/> - <line num="79" type="stmt" count="2"/> - <line num="80" type="stmt" count="2"/> - <line num="81" type="stmt" count="34"/> - <line num="82" type="stmt" count="1"/> - <line num="83" type="stmt" count="1"/> - <line num="84" type="stmt" count="33"/> - <line num="85" type="stmt" count="4"/> - <line num="86" type="stmt" count="4"/> - <line num="87" type="stmt" count="30"/> - <line num="88" type="stmt" count="0"/> - <line num="89" type="stmt" count="30"/> - <line num="90" type="stmt" count="2"/> - <line num="91" type="stmt" count="2"/> - <line num="92" type="stmt" count="2"/> - <line num="93" type="stmt" count="2"/> - <line num="94" type="stmt" count="2"/> - <line num="95" type="stmt" count="29"/> - <line num="96" type="stmt" count="5"/> - <line num="97" type="stmt" count="5"/> - <line num="98" type="stmt" count="5"/> - <line num="99" type="stmt" count="5"/> - <line num="100" type="stmt" count="5"/> - <line num="101" type="stmt" count="24"/> - <line num="102" type="stmt" count="1"/> - <line num="103" type="stmt" count="1"/> - <line num="104" type="stmt" count="1"/> - <line num="105" type="stmt" count="1"/> - <line num="106" type="stmt" count="1"/> - <line num="107" type="stmt" count="23"/> - <line num="108" type="stmt" count="22"/> - <line num="109" type="stmt" count="22"/> - <line num="110" type="stmt" count="22"/> - <line num="111" type="stmt" count="22"/> - <line num="112" type="stmt" count="22"/> - <line num="114" type="stmt" count="1"/> - <line num="118" type="stmt" count="36"/> - <line num="124" type="method" name="resolvesReflectionEnum" visibility="private" complexity="3" crap="3" count="30"/> - <line num="126" type="stmt" count="30"/> - <line num="131" type="stmt" count="2"/> - <line num="133" type="stmt" count="2"/> - <line num="134" type="stmt" count="2"/> - <line num="136" type="stmt" count="2"/> - <line num="140" type="stmt" count="29"/> - <line num="146" type="method" name="resolvesDateTime" visibility="private" complexity="5" crap="5" count="29"/> - <line num="149" type="stmt" count="29"/> - <line num="154" type="stmt" count="6"/> - <line num="156" type="stmt" count="6"/> - <line num="157" type="stmt" count="5"/> - <line num="159" type="stmt" count="29"/> - <line num="167" type="stmt" count="24"/> - <line num="173" type="method" name="resolvesData" visibility="private" complexity="4" crap="4.07" count="24"/> - <line num="176" type="stmt" count="24"/> - <line num="181" type="stmt" count="1"/> - <line num="183" type="stmt" count="1"/> - <line num="184" type="stmt" count="24"/> - <line num="187" type="stmt" count="0"/> - <line num="190" type="stmt" count="23"/> - <line num="199" type="method" name="getPropertyStringTypes" visibility="private" complexity="5" crap="10.40" count="37"/> - <line num="202" type="stmt" count="37"/> - <line num="203" type="stmt" count="37"/> - <line num="204" type="stmt" count="37"/> - <line num="205" type="stmt" count="0"/> - <line num="206" type="stmt" count="0"/> - <line num="207" type="stmt" count="0"/> - <line num="208" type="stmt" count="0"/> - <line num="209" type="stmt" count="0"/> - <line num="210" type="stmt" count="0"/> - <line num="211" type="stmt" count="37"/> - <line num="221" type="method" name="resolveSerializers" visibility="protected" complexity="1" crap="1" count="8"/> - <line num="223" type="stmt" count="8"/> - <metrics loc="226" ncloc="175" classes="1" methods="7" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="73" coveredstatements="65" elements="80" coveredelements="69"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Contexts\ClassContext"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contexts/ClassContext/NameMapperConfig.php"> - <class name="Nuxtifyts\PhpDto\Contexts\ClassContext\NameMapperConfig" namespace="Nuxtifyts\PhpDto\Contexts\ClassContext"> - <metrics complexity="6" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="9" coveredelements="9"/> - </class> - <line num="16" type="method" name="__construct" visibility="public" complexity="2" crap="2" count="1"/> - <line num="20" type="stmt" count="1"/> - <line num="23" type="method" name="transform" visibility="public" complexity="4" crap="4" count="5"/> - <line num="25" type="stmt" count="5"/> - <line num="26" type="stmt" count="1"/> - <line num="29" type="stmt" count="4"/> - <line num="30" type="stmt" count="4"/> - <line num="31" type="stmt" count="4"/> - <line num="35" type="stmt" count="1"/> - <metrics loc="38" ncloc="34" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="9" coveredelements="9"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Contexts\Concerns"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contexts/Concerns/HasTypes.php"> - <class name="Nuxtifyts\PhpDto\Contexts\Concerns\HasTypes" namespace="Nuxtifyts\PhpDto\Contexts\Concerns"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="3" coveredelements="3"/> - </class> - <line num="28" type="method" name="syncTypesFromReflectionProperty" visibility="protected" complexity="1" crap="1" count="61"/> - <line num="30" type="stmt" count="61"/> - <line num="31" type="stmt" count="61"/> - <metrics loc="34" ncloc="29" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="3" coveredelements="3"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Contexts\TypeContext"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contexts/TypeContext/ResolvesArraySubContexts.php"> - <class name="Nuxtifyts\PhpDto\Contexts\TypeContext\ResolvesArraySubContexts" namespace="Nuxtifyts\PhpDto\Contexts\TypeContext"> - <metrics complexity="19" methods="6" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="51" coveredstatements="44" elements="57" coveredelements="47"/> - </class> - <line num="22" type="method" name="resolveSubContextsForArray" visibility="protected" complexity="8" crap="8.02" count="22"/> - <line num="24" type="stmt" count="22"/> - <line num="26" type="stmt" count="22"/> - <line num="27" type="stmt" count="22"/> - <line num="28" type="stmt" count="22"/> - <line num="30" type="stmt" count="22"/> - <line num="31" type="stmt" count="22"/> - <line num="32" type="stmt" count="22"/> - <line num="33" type="stmt" count="22"/> - <line num="34" type="stmt" count="13"/> - <line num="35" type="stmt" count="8"/> - <line num="36" type="stmt" count="4"/> - <line num="37" type="stmt" count="0"/> - <line num="38" type="stmt" count="22"/> - <line num="39" type="stmt" count="22"/> - <line num="43" type="stmt" count="22"/> - <line num="49" type="method" name="resolveSubContextsForArrayOfScalarTypes" visibility="private" complexity="3" crap="3.47" count="10"/> - <line num="51" type="stmt" count="10"/> - <line num="53" type="stmt" count="10"/> - <line num="54" type="stmt" count="10"/> - <line num="55" type="stmt" count="0"/> - <line num="56" type="stmt" count="0"/> - <line num="57" type="stmt" count="0"/> - <line num="60" type="stmt" count="10"/> - <line num="63" type="stmt" count="10"/> - <line num="69" type="method" name="resolveSubContextsForArrayOfBackedEnums" visibility="private" complexity="3" crap="3.24" count="5"/> - <line num="71" type="stmt" count="5"/> - <line num="73" type="stmt" count="5"/> - <line num="74" type="stmt" count="5"/> - <line num="75" type="stmt" count="5"/> - <line num="77" type="stmt" count="5"/> - <line num="78" type="stmt" count="0"/> - <line num="79" type="stmt" count="0"/> - <line num="80" type="stmt" count="0"/> - <line num="83" type="stmt" count="5"/> - <line num="86" type="stmt" count="5"/> - <line num="90" type="method" name="resolveSubContextsForArrayOfDateTimes" visibility="private" complexity="2" crap="2" count="4"/> - <line num="92" type="stmt" count="4"/> - <line num="94" type="stmt" count="4"/> - <line num="95" type="stmt" count="4"/> - <line num="96" type="stmt" count="4"/> - <line num="98" type="stmt" count="4"/> - <line num="101" type="stmt" count="4"/> - <line num="105" type="method" name="resolveSubContextsForArrayOfData" visibility="private" complexity="2" crap="2" count="4"/> - <line num="107" type="stmt" count="4"/> - <line num="109" type="stmt" count="4"/> - <line num="110" type="stmt" count="4"/> - <line num="111" type="stmt" count="4"/> - <line num="113" type="stmt" count="4"/> - <line num="116" type="stmt" count="4"/> - <line num="122" type="method" name="arrayTypeAttributeClasses" visibility="private" complexity="1" crap="1" count="22"/> - <line num="124" type="stmt" count="22"/> - <line num="125" type="stmt" count="22"/> - <line num="126" type="stmt" count="22"/> - <line num="127" type="stmt" count="22"/> - <line num="128" type="stmt" count="22"/> - <line num="129" type="stmt" count="22"/> - <metrics loc="132" ncloc="115" classes="1" methods="6" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="51" coveredstatements="44" elements="57" coveredelements="47"/> - </file> - </package> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contracts/BaseData.php"> - <metrics loc="43" ncloc="22" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contracts/CloneableData.php"> - <metrics loc="14" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Contracts/EmptyData.php"> - <metrics loc="14" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <package name="Nuxtifyts\PhpDto"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Data.php"> - <class name="Nuxtifyts\PhpDto\Data" namespace="Nuxtifyts\PhpDto"> - <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </class> - <metrics loc="21" ncloc="21" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\DataCiphers"> - <file name="/Users/faroukbraik/Dev/php-dto/src/DataCiphers/CipherConfig.php"> - <class name="Nuxtifyts\PhpDto\DataCiphers\CipherConfig" namespace="Nuxtifyts\PhpDto\DataCiphers"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </class> - <line num="10" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/> - <line num="15" type="stmt" count="4"/> - <metrics loc="17" ncloc="14" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/DataCiphers/DefaultDataCipher.php"> - <class name="Nuxtifyts\PhpDto\DataCiphers\DefaultDataCipher" namespace="Nuxtifyts\PhpDto\DataCiphers"> - <metrics complexity="13" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="38" elements="46" coveredelements="38"/> - </class> - <line num="14" type="method" name="cipher" visibility="public" complexity="4" crap="4.03" count="3"/> - <line num="19" type="stmt" count="3"/> - <line num="20" type="stmt" count="3"/> - <line num="22" type="stmt" count="3"/> - <line num="23" type="stmt" count="0"/> - <line num="26" type="stmt" count="3"/> - <line num="28" type="stmt" count="3"/> - <line num="29" type="stmt" count="3"/> - <line num="30" type="stmt" count="3"/> - <line num="31" type="stmt" count="3"/> - <line num="32" type="stmt" count="3"/> - <line num="33" type="stmt" count="3"/> - <line num="34" type="stmt" count="3"/> - <line num="36" type="stmt" count="3"/> - <line num="37" type="stmt" count="0"/> - <line num="40" type="stmt" count="3"/> - <line num="41" type="stmt" count="3"/> - <line num="42" type="stmt" count="3"/> - <line num="48" type="method" name="decipher" visibility="public" complexity="6" crap="6.04" count="4"/> - <line num="53" type="stmt" count="4"/> - <line num="55" type="stmt" count="4"/> - <line num="57" type="stmt" count="4"/> - <line num="58" type="stmt" count="0"/> - <line num="61" type="stmt" count="4"/> - <line num="62" type="stmt" count="4"/> - <line num="64" type="stmt" count="4"/> - <line num="65" type="stmt" count="1"/> - <line num="68" type="stmt" count="3"/> - <line num="69" type="stmt" count="3"/> - <line num="70" type="stmt" count="3"/> - <line num="71" type="stmt" count="3"/> - <line num="72" type="stmt" count="3"/> - <line num="73" type="stmt" count="3"/> - <line num="74" type="stmt" count="3"/> - <line num="76" type="stmt" count="3"/> - <line num="77" type="stmt" count="0"/> - <line num="80" type="stmt" count="3"/> - <line num="81" type="stmt" count="2"/> - <line num="82" type="stmt" count="3"/> - <line num="88" type="method" name="stringify" visibility="private" complexity="3" crap="3.04" count="3"/> - <line num="90" type="stmt" count="3"/> - <line num="91" type="stmt" count="1"/> - <line num="94" type="stmt" count="2"/> - <line num="96" type="stmt" count="2"/> - <line num="97" type="stmt" count="0"/> - <line num="100" type="stmt" count="2"/> - <metrics loc="103" ncloc="94" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="38" elements="46" coveredelements="38"/> - </file> - </package> - <file name="/Users/faroukbraik/Dev/php-dto/src/DataCiphers/DataCipher.php"> - <metrics loc="27" ncloc="21" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/DataRefiners/DataRefiner.php"> - <metrics loc="16" ncloc="13" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <package name="Nuxtifyts\PhpDto\DataRefiners"> - <file name="/Users/faroukbraik/Dev/php-dto/src/DataRefiners/DateTimeRefiner.php"> - <class name="Nuxtifyts\PhpDto\DataRefiners\DateTimeRefiner" namespace="Nuxtifyts\PhpDto\DataRefiners"> - <metrics complexity="8" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="22" elements="24" coveredelements="24"/> - </class> - <line num="23" type="method" name="__construct" visibility="public" complexity="3" crap="3" count="9"/> - <line num="26" type="stmt" count="9"/> - <line num="27" type="stmt" count="2"/> - <line num="28" type="stmt" count="1"/> - <line num="30" type="stmt" count="1"/> - <line num="31" type="stmt" count="1"/> - <line num="32" type="stmt" count="1"/> - <line num="33" type="stmt" count="1"/> - <line num="38" type="method" name="refine" visibility="public" complexity="5" crap="5" count="9"/> - <line num="40" type="stmt" count="9"/> - <line num="41" type="stmt" count="1"/> - <line num="44" type="stmt" count="8"/> - <line num="45" type="stmt" count="7"/> - <line num="47" type="stmt" count="7"/> - <line num="48" type="stmt" count="1"/> - <line num="51" type="stmt" count="6"/> - <line num="53" type="stmt" count="6"/> - <line num="54" type="stmt" count="6"/> - <line num="55" type="stmt" count="6"/> - <line num="56" type="stmt" count="6"/> - <line num="57" type="stmt" count="6"/> - <line num="58" type="stmt" count="6"/> - <line num="59" type="stmt" count="4"/> - <line num="63" type="stmt" count="3"/> - <metrics loc="66" ncloc="62" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="22" elements="24" coveredelements="24"/> - </file> - </package> - <file name="/Users/faroukbraik/Dev/php-dto/src/Enums/LetterCase.php"> - <metrics loc="12" ncloc="12" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Enums/Property/Type.php"> - <metrics loc="24" ncloc="23" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <package name="Nuxtifyts\PhpDto\Exceptions"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/DataCipherException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\DataCipherException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="5" methods="5" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="4" elements="25" coveredelements="5"/> - </class> - <line num="15" type="method" name="failedToGetNonceSize" visibility="public" complexity="1" crap="2" count="0"/> - <line num="17" type="stmt" count="0"/> - <line num="18" type="stmt" count="0"/> - <line num="19" type="stmt" count="0"/> - <line num="20" type="stmt" count="0"/> - <line num="23" type="method" name="failedToCipherData" visibility="public" complexity="1" crap="2" count="0"/> - <line num="25" type="stmt" count="0"/> - <line num="26" type="stmt" count="0"/> - <line num="27" type="stmt" count="0"/> - <line num="28" type="stmt" count="0"/> - <line num="31" type="method" name="failedToDecipherData" visibility="public" complexity="1" crap="2" count="0"/> - <line num="33" type="stmt" count="0"/> - <line num="34" type="stmt" count="0"/> - <line num="35" type="stmt" count="0"/> - <line num="36" type="stmt" count="0"/> - <line num="39" type="method" name="failedToStringifyValue" visibility="public" complexity="1" crap="2" count="0"/> - <line num="41" type="stmt" count="0"/> - <line num="42" type="stmt" count="0"/> - <line num="43" type="stmt" count="0"/> - <line num="44" type="stmt" count="0"/> - <line num="47" type="method" name="invalidNonceSize" visibility="public" complexity="1" crap="1" count="1"/> - <line num="49" type="stmt" count="1"/> - <line num="50" type="stmt" count="1"/> - <line num="51" type="stmt" count="1"/> - <line num="52" type="stmt" count="1"/> - <metrics loc="55" ncloc="55" classes="1" methods="5" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="4" elements="25" coveredelements="5"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/DataConfigurationException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\DataConfigurationException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/> - </class> - <line num="13" type="method" name="invalidBaseSerializers" visibility="public" complexity="1" crap="1" count="1"/> - <line num="15" type="stmt" count="1"/> - <line num="18" type="method" name="invalidBaseNormalizers" visibility="public" complexity="1" crap="1" count="1"/> - <line num="20" type="stmt" count="1"/> - <metrics loc="23" ncloc="23" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/DataCreationException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\DataCreationException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="5" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="24" coveredstatements="24" elements="29" coveredelements="29"/> - </class> - <line num="16" type="method" name="unableToCreateInstance" visibility="public" complexity="1" crap="1" count="1"/> - <line num="20" type="stmt" count="1"/> - <line num="21" type="stmt" count="1"/> - <line num="22" type="stmt" count="1"/> - <line num="23" type="stmt" count="1"/> - <line num="24" type="stmt" count="1"/> - <line num="27" type="method" name="invalidProperty" visibility="public" complexity="1" crap="1" count="2"/> - <line num="29" type="stmt" count="2"/> - <line num="30" type="stmt" count="2"/> - <line num="31" type="stmt" count="2"/> - <line num="32" type="stmt" count="2"/> - <line num="35" type="method" name="unableToCreateEmptyInstance" visibility="public" complexity="1" crap="1" count="1"/> - <line num="39" type="stmt" count="1"/> - <line num="40" type="stmt" count="1"/> - <line num="41" type="stmt" count="1"/> - <line num="42" type="stmt" count="1"/> - <line num="43" type="stmt" count="1"/> - <line num="46" type="method" name="unableToCloneInstanceWithNewData" visibility="public" complexity="1" crap="1" count="4"/> - <line num="50" type="stmt" count="4"/> - <line num="51" type="stmt" count="4"/> - <line num="52" type="stmt" count="4"/> - <line num="53" type="stmt" count="4"/> - <line num="54" type="stmt" count="4"/> - <line num="57" type="method" name="invalidParamsPassed" visibility="public" complexity="1" crap="1" count="3"/> - <line num="61" type="stmt" count="3"/> - <line num="62" type="stmt" count="3"/> - <line num="63" type="stmt" count="3"/> - <line num="64" type="stmt" count="3"/> - <line num="65" type="stmt" count="3"/> - <metrics loc="68" ncloc="68" classes="1" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="24" coveredstatements="24" elements="29" coveredelements="29"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/DeserializeException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\DeserializeException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="9" methods="9" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="37" coveredstatements="21" elements="46" coveredelements="26"/> - </class> - <line num="20" type="method" name="generic" visibility="public" complexity="1" crap="1" count="3"/> - <line num="22" type="stmt" count="3"/> - <line num="23" type="stmt" count="3"/> - <line num="24" type="stmt" count="3"/> - <line num="25" type="stmt" count="3"/> - <line num="26" type="stmt" count="3"/> - <line num="29" type="method" name="invalidValue" visibility="public" complexity="1" crap="1" count="3"/> - <line num="31" type="stmt" count="3"/> - <line num="32" type="stmt" count="3"/> - <line num="33" type="stmt" count="3"/> - <line num="34" type="stmt" count="3"/> - <line num="37" type="method" name="propertyIsNotNullable" visibility="public" complexity="1" crap="1" count="1"/> - <line num="39" type="stmt" count="1"/> - <line num="40" type="stmt" count="1"/> - <line num="41" type="stmt" count="1"/> - <line num="42" type="stmt" count="1"/> - <line num="45" type="method" name="unableToDeserializeScalarTypeItem" visibility="public" complexity="1" crap="2" count="0"/> - <line num="47" type="stmt" count="0"/> - <line num="48" type="stmt" count="0"/> - <line num="49" type="stmt" count="0"/> - <line num="50" type="stmt" count="0"/> - <line num="53" type="method" name="unableToDeserializeBackedEnumItem" visibility="public" complexity="1" crap="2" count="0"/> - <line num="55" type="stmt" count="0"/> - <line num="56" type="stmt" count="0"/> - <line num="57" type="stmt" count="0"/> - <line num="58" type="stmt" count="0"/> - <line num="61" type="method" name="unableToDeserializeDateTimeItem" visibility="public" complexity="1" crap="2" count="0"/> - <line num="63" type="stmt" count="0"/> - <line num="64" type="stmt" count="0"/> - <line num="65" type="stmt" count="0"/> - <line num="66" type="stmt" count="0"/> - <line num="69" type="method" name="unableToDeserializeDataItem" visibility="public" complexity="1" crap="1" count="1"/> - <line num="71" type="stmt" count="1"/> - <line num="72" type="stmt" count="1"/> - <line num="73" type="stmt" count="1"/> - <line num="74" type="stmt" count="1"/> - <line num="77" type="method" name="unableToDeserializeArrayItem" visibility="public" complexity="1" crap="2" count="0"/> - <line num="79" type="stmt" count="0"/> - <line num="80" type="stmt" count="0"/> - <line num="81" type="stmt" count="0"/> - <line num="82" type="stmt" count="0"/> - <line num="85" type="method" name="invalidParamsPassed" visibility="public" complexity="1" crap="1" count="1"/> - <line num="87" type="stmt" count="1"/> - <line num="88" type="stmt" count="1"/> - <line num="89" type="stmt" count="1"/> - <line num="90" type="stmt" count="1"/> - <metrics loc="93" ncloc="93" classes="1" methods="9" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="37" coveredstatements="21" elements="46" coveredelements="26"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/FallbackResolverException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\FallbackResolverException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </class> - <line num="11" type="method" name="unableToFindResolverClass" visibility="public" complexity="1" crap="1" count="1"/> - <line num="13" type="stmt" count="1"/> - <line num="14" type="stmt" count="1"/> - <line num="15" type="stmt" count="1"/> - <line num="16" type="stmt" count="1"/> - <metrics loc="19" ncloc="19" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/InvalidRefiner.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\InvalidRefiner" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </class> - <line num="13" type="method" name="emptyTypeContexts" visibility="public" complexity="1" crap="1" count="1"/> - <line num="15" type="stmt" count="1"/> - <line num="16" type="stmt" count="1"/> - <line num="17" type="stmt" count="1"/> - <line num="18" type="stmt" count="1"/> - <metrics loc="21" ncloc="21" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="5" coveredelements="5"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/SerializeException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\SerializeException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="6" methods="6" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="17" elements="31" coveredelements="21"/> - </class> - <line num="18" type="method" name="generic" visibility="public" complexity="1" crap="1" count="1"/> - <line num="20" type="stmt" count="1"/> - <line num="21" type="stmt" count="1"/> - <line num="22" type="stmt" count="1"/> - <line num="23" type="stmt" count="1"/> - <line num="24" type="stmt" count="1"/> - <line num="27" type="method" name="unableToSerializeScalarTypeItem" visibility="public" complexity="1" crap="1" count="2"/> - <line num="29" type="stmt" count="2"/> - <line num="30" type="stmt" count="2"/> - <line num="31" type="stmt" count="2"/> - <line num="32" type="stmt" count="2"/> - <line num="35" type="method" name="unableToSerializeBackedEnumItem" visibility="public" complexity="1" crap="1" count="2"/> - <line num="37" type="stmt" count="2"/> - <line num="38" type="stmt" count="2"/> - <line num="39" type="stmt" count="2"/> - <line num="40" type="stmt" count="2"/> - <line num="43" type="method" name="unableToSerializeDateTimeItem" visibility="public" complexity="1" crap="2" count="0"/> - <line num="45" type="stmt" count="0"/> - <line num="46" type="stmt" count="0"/> - <line num="47" type="stmt" count="0"/> - <line num="48" type="stmt" count="0"/> - <line num="51" type="method" name="unableToSerializeDataItem" visibility="public" complexity="1" crap="1" count="1"/> - <line num="53" type="stmt" count="1"/> - <line num="54" type="stmt" count="1"/> - <line num="55" type="stmt" count="1"/> - <line num="56" type="stmt" count="1"/> - <line num="59" type="method" name="unableToSerializeArrayItem" visibility="public" complexity="1" crap="2" count="0"/> - <line num="61" type="stmt" count="0"/> - <line num="62" type="stmt" count="0"/> - <line num="63" type="stmt" count="0"/> - <line num="64" type="stmt" count="0"/> - <metrics loc="67" ncloc="67" classes="1" methods="6" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="17" elements="31" coveredelements="21"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/UnknownTypeException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\UnknownTypeException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="12" elements="13" coveredelements="13"/> - </class> - <line num="12" type="method" name="unknownType" visibility="public" complexity="1" crap="1" count="1"/> - <line num="14" type="stmt" count="1"/> - <line num="15" type="stmt" count="1"/> - <line num="16" type="stmt" count="1"/> - <line num="17" type="stmt" count="1"/> - <line num="19" type="stmt" count="1"/> - <line num="20" type="stmt" count="1"/> - <line num="21" type="stmt" count="1"/> - <line num="22" type="stmt" count="1"/> - <line num="23" type="stmt" count="1"/> - <line num="24" type="stmt" count="1"/> - <line num="25" type="stmt" count="1"/> - <line num="26" type="stmt" count="1"/> - <metrics loc="29" ncloc="29" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="12" elements="13" coveredelements="13"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/UnsupportedTypeException.php"> - <class name="Nuxtifyts\PhpDto\Exceptions\UnsupportedTypeException" namespace="Nuxtifyts\PhpDto\Exceptions"> - <metrics complexity="5" methods="4" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="3" elements="16" coveredelements="4"/> - </class> - <line num="14" type="method" name="unknownType" visibility="public" complexity="2" crap="2" count="1"/> - <line num="16" type="stmt" count="1"/> - <line num="17" type="stmt" count="1"/> - <line num="18" type="stmt" count="1"/> - <line num="21" type="method" name="emptyType" visibility="public" complexity="1" crap="2" count="0"/> - <line num="23" type="stmt" count="0"/> - <line num="24" type="stmt" count="0"/> - <line num="25" type="stmt" count="0"/> - <line num="28" type="method" name="invalidReflection" visibility="public" complexity="1" crap="2" count="0"/> - <line num="30" type="stmt" count="0"/> - <line num="31" type="stmt" count="0"/> - <line num="32" type="stmt" count="0"/> - <line num="35" type="method" name="invalidType" visibility="public" complexity="1" crap="2" count="0"/> - <line num="37" type="stmt" count="0"/> - <line num="38" type="stmt" count="0"/> - <line num="39" type="stmt" count="0"/> - <metrics loc="42" ncloc="42" classes="1" methods="4" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="3" elements="16" coveredelements="4"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\FallbackResolver"> - <file name="/Users/faroukbraik/Dev/php-dto/src/FallbackResolver/FallbackConfig.php"> - <class name="Nuxtifyts\PhpDto\FallbackResolver\FallbackConfig" namespace="Nuxtifyts\PhpDto\FallbackResolver"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </class> - <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/> - <line num="17" type="stmt" count="3"/> - <metrics loc="19" ncloc="15" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </file> - </package> - <file name="/Users/faroukbraik/Dev/php-dto/src/FallbackResolver/FallbackResolver.php"> - <metrics loc="17" ncloc="12" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <package name="Nuxtifyts\PhpDto\Normalizers"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Normalizers/ArrayAccessNormalizer.php"> - <class name="Nuxtifyts\PhpDto\Normalizers\ArrayAccessNormalizer" namespace="Nuxtifyts\PhpDto\Normalizers"> - <metrics complexity="10" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="22" coveredelements="22"/> - </class> - <line num="11" type="method" name="normalize" visibility="public" complexity="2" crap="2" count="12"/> - <line num="13" type="stmt" count="12"/> - <line num="14" type="stmt" count="12"/> - <line num="20" type="method" name="normalizeIterable" visibility="private" complexity="4" crap="4" count="12"/> - <line num="22" type="stmt" count="12"/> - <line num="23" type="stmt" count="3"/> - <line num="26" type="stmt" count="9"/> - <line num="28" type="stmt" count="9"/> - <line num="29" type="stmt" count="9"/> - <line num="30" type="stmt" count="3"/> - <line num="33" type="stmt" count="6"/> - <line num="36" type="stmt" count="6"/> - <line num="42" type="method" name="normalizeArrayAccess" visibility="private" complexity="4" crap="4" count="6"/> - <line num="45" type="stmt" count="6"/> - <line num="46" type="stmt" count="4"/> - <line num="49" type="stmt" count="2"/> - <line num="51" type="stmt" count="2"/> - <line num="53" type="stmt" count="2"/> - <line num="54" type="stmt" count="2"/> - <line num="57" type="stmt" count="1"/> - <line num="58" type="stmt" count="1"/> - <line num="59" type="stmt" count="1"/> - <metrics loc="63" ncloc="57" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="22" coveredelements="22"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Normalizers/ArrayNormalizer.php"> - <class name="Nuxtifyts\PhpDto\Normalizers\ArrayNormalizer" namespace="Nuxtifyts\PhpDto\Normalizers"> - <metrics complexity="6" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="10" elements="11" coveredelements="11"/> - </class> - <line num="7" type="method" name="normalize" visibility="public" complexity="6" crap="6" count="6"/> - <line num="10" type="stmt" count="6"/> - <line num="12" type="stmt" count="6"/> - <line num="13" type="stmt" count="6"/> - <line num="16" type="stmt" count="4"/> - <line num="19" type="stmt" count="2"/> - <line num="21" type="stmt" count="2"/> - <line num="22" type="stmt" count="2"/> - <line num="23" type="stmt" count="1"/> - <line num="26" type="stmt" count="1"/> - <line num="29" type="stmt" count="1"/> - <metrics loc="32" ncloc="32" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="10" elements="11" coveredelements="11"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Normalizers/JsonStringNormalizer.php"> - <class name="Nuxtifyts\PhpDto\Normalizers\JsonStringNormalizer" namespace="Nuxtifyts\PhpDto\Normalizers"> - <metrics complexity="6" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="12" elements="13" coveredelements="13"/> - </class> - <line num="7" type="method" name="normalize" visibility="public" complexity="6" crap="6" count="11"/> - <line num="9" type="stmt" count="11"/> - <line num="10" type="stmt" count="8"/> - <line num="13" type="stmt" count="4"/> - <line num="16" type="stmt" count="4"/> - <line num="17" type="stmt" count="4"/> - <line num="19" type="stmt" count="1"/> - <line num="22" type="stmt" count="3"/> - <line num="24" type="stmt" count="3"/> - <line num="25" type="stmt" count="3"/> - <line num="26" type="stmt" count="1"/> - <line num="29" type="stmt" count="3"/> - <line num="32" type="stmt" count="2"/> - <metrics loc="35" ncloc="35" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="12" elements="13" coveredelements="13"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Normalizers/Normalizer.php"> - <class name="Nuxtifyts\PhpDto\Normalizers\Normalizer" namespace="Nuxtifyts\PhpDto\Normalizers"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </class> - <line num="12" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="24"/> - <line num="16" type="stmt" count="24"/> - <metrics loc="23" ncloc="17" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Normalizers/StdClassNormalizer.php"> - <class name="Nuxtifyts\PhpDto\Normalizers\StdClassNormalizer" namespace="Nuxtifyts\PhpDto\Normalizers"> - <metrics complexity="4" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="9" elements="10" coveredelements="10"/> - </class> - <line num="9" type="method" name="normalize" visibility="public" complexity="4" crap="4" count="10"/> - <line num="11" type="stmt" count="10"/> - <line num="12" type="stmt" count="8"/> - <line num="15" type="stmt" count="3"/> - <line num="17" type="stmt" count="3"/> - <line num="19" type="stmt" count="3"/> - <line num="20" type="stmt" count="3"/> - <line num="21" type="stmt" count="1"/> - <line num="24" type="stmt" count="2"/> - <line num="27" type="stmt" count="2"/> - <metrics loc="30" ncloc="30" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="9" elements="10" coveredelements="10"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Normalizers\Concerns"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Normalizers/Concerns/HasNormalizers.php"> - <class name="Nuxtifyts\PhpDto\Normalizers\Concerns\HasNormalizers" namespace="Nuxtifyts\PhpDto\Normalizers\Concerns"> - <metrics complexity="5" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="14" coveredelements="14"/> - </class> - <line num="22" type="method" name="normalizeValue" visibility="protected" complexity="3" crap="3" count="43"/> - <line num="27" type="stmt" count="43"/> - <line num="28" type="stmt" count="43"/> - <line num="30" type="stmt" count="43"/> - <line num="31" type="stmt" count="39"/> - <line num="35" type="stmt" count="7"/> - <line num="45" type="method" name="allNormalizer" visibility="protected" complexity="1" crap="1" count="44"/> - <line num="47" type="stmt" count="44"/> - <line num="48" type="stmt" count="44"/> - <line num="49" type="stmt" count="44"/> - <line num="50" type="stmt" count="44"/> - <line num="51" type="stmt" count="44"/> - <line num="57" type="method" name="normalizers" visibility="protected" complexity="1" crap="1" count="39"/> - <line num="59" type="stmt" count="39"/> - <metrics loc="62" ncloc="44" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="14" coveredelements="14"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Pipelines/DeserializePipeline/DeserializePipeline.php"> - <class name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\DeserializePipeline" namespace="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline"> - <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="13" coveredelements="13"/> - </class> - <line num="17" type="method" name="hydrateFromArray" visibility="public" complexity="1" crap="1" count="28"/> - <line num="19" type="stmt" count="28"/> - <line num="20" type="stmt" count="28"/> - <line num="21" type="stmt" count="28"/> - <line num="22" type="stmt" count="28"/> - <line num="23" type="stmt" count="28"/> - <line num="24" type="stmt" count="28"/> - <line num="31" type="method" name="createFromArray" visibility="public" complexity="1" crap="1" count="1"/> - <line num="33" type="stmt" count="1"/> - <line num="34" type="stmt" count="1"/> - <line num="35" type="stmt" count="1"/> - <line num="36" type="stmt" count="1"/> - <line num="37" type="stmt" count="1"/> - <metrics loc="40" ncloc="33" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="13" coveredelements="13"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Pipelines/DeserializePipeline/DeserializePipelinePassable.php"> - <class name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\DeserializePipelinePassable" namespace="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline"> - <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/> - </class> - <line num="17" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="29"/> - <line num="21" type="stmt" count="29"/> - <line num="26" type="method" name="with" visibility="public" complexity="1" crap="1" count="29"/> - <line num="28" type="stmt" count="29"/> - <metrics loc="31" ncloc="22" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Pipelines/DeserializePipeline/Pipes/DecipherDataPipe.php"> - <class name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes\DecipherDataPipe" namespace="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes"> - <metrics complexity="5" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="14" coveredelements="14"/> - </class> - <line num="14" type="method" name="handle" visibility="public" complexity="5" crap="5" count="8"/> - <line num="16" type="stmt" count="8"/> - <line num="18" type="stmt" count="8"/> - <line num="19" type="stmt" count="8"/> - <line num="22" type="stmt" count="8"/> - <line num="23" type="stmt" count="4"/> - <line num="24" type="stmt" count="8"/> - <line num="26" type="stmt" count="5"/> - <line num="29" type="stmt" count="4"/> - <line num="30" type="stmt" count="4"/> - <line num="31" type="stmt" count="4"/> - <line num="32" type="stmt" count="4"/> - <line num="33" type="stmt" count="4"/> - <line num="36" type="stmt" count="7"/> - <metrics loc="39" ncloc="36" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="14" coveredelements="14"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Pipelines/DeserializePipeline/Pipes/MapNamesPipe.php"> - <class name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes\MapNamesPipe" namespace="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes"> - <metrics complexity="5" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="10" elements="11" coveredelements="11"/> - </class> - <line num="14" type="method" name="handle" visibility="public" complexity="5" crap="5" count="9"/> - <line num="16" type="stmt" count="9"/> - <line num="17" type="stmt" count="4"/> - <line num="20" type="stmt" count="5"/> - <line num="22" type="stmt" count="5"/> - <line num="23" type="stmt" count="5"/> - <line num="25" type="stmt" count="5"/> - <line num="26" type="stmt" count="2"/> - <line num="29" type="stmt" count="4"/> - <line num="30" type="stmt" count="4"/> - <line num="33" type="stmt" count="5"/> - <metrics loc="36" ncloc="33" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="10" elements="11" coveredelements="11"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Pipelines/DeserializePipeline/Pipes/RefineDataPipe.php"> - <class name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes\RefineDataPipe" namespace="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes"> - <metrics complexity="5" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="11" elements="13" coveredelements="11"/> - </class> - <line num="15" type="method" name="handle" visibility="public" complexity="5" crap="5.01" count="31"/> - <line num="17" type="stmt" count="31"/> - <line num="19" type="stmt" count="31"/> - <line num="20" type="stmt" count="31"/> - <line num="22" type="stmt" count="31"/> - <line num="23" type="stmt" count="11"/> - <line num="26" type="stmt" count="31"/> - <line num="28" type="stmt" count="2"/> - <line num="29" type="stmt" count="2"/> - <line num="30" type="stmt" count="2"/> - <line num="31" type="stmt" count="2"/> - <line num="32" type="stmt" count="0"/> - <line num="36" type="stmt" count="31"/> - <metrics loc="39" ncloc="36" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="11" elements="13" coveredelements="11"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Pipelines/DeserializePipeline/Pipes/ResolveDefaultDataPipe.php"> - <class name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes\ResolveDefaultDataPipe" namespace="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes"> - <metrics complexity="7" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="20" coveredelements="20"/> - </class> - <line num="15" type="method" name="handle" visibility="public" complexity="7" crap="7" count="9"/> - <line num="17" type="stmt" count="9"/> - <line num="19" type="stmt" count="9"/> - <line num="20" type="stmt" count="9"/> - <line num="21" type="stmt" count="4"/> - <line num="24" type="stmt" count="6"/> - <line num="25" type="stmt" count="3"/> - <line num="26" type="stmt" count="1"/> - <line num="27" type="stmt" count="2"/> - <line num="30" type="stmt" count="6"/> - <line num="31" type="stmt" count="6"/> - <line num="32" type="stmt" count="6"/> - <line num="33" type="stmt" count="6"/> - <line num="36" type="stmt" count="6"/> - <line num="37" type="stmt" count="6"/> - <line num="38" type="stmt" count="6"/> - <line num="39" type="stmt" count="6"/> - <line num="42" type="stmt" count="5"/> - <line num="43" type="stmt" count="2"/> - <line num="48" type="stmt" count="9"/> - <metrics loc="51" ncloc="47" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="19" elements="20" coveredelements="20"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Pipelines/DeserializePipeline/Pipes/ResolveValuesFromAliasesPipe.php"> - <class name="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes\ResolveValuesFromAliasesPipe" namespace="Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\Pipes"> - <metrics complexity="5" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="12" coveredelements="12"/> - </class> - <line num="14" type="method" name="handle" visibility="public" complexity="5" crap="5" count="5"/> - <line num="16" type="stmt" count="5"/> - <line num="18" type="stmt" count="5"/> - <line num="19" type="stmt" count="5"/> - <line num="21" type="stmt" count="5"/> - <line num="22" type="stmt" count="4"/> - <line num="25" type="stmt" count="2"/> - <line num="27" type="stmt" count="2"/> - <line num="28" type="stmt" count="1"/> - <line num="29" type="stmt" count="1"/> - <line num="30" type="stmt" count="1"/> - <line num="35" type="stmt" count="5"/> - <metrics loc="38" ncloc="35" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="12" coveredelements="12"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Serializers"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/ArraySerializer.php"> - <class name="Nuxtifyts\PhpDto\Serializers\ArraySerializer" namespace="Nuxtifyts\PhpDto\Serializers"> - <metrics complexity="20" methods="3" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="22" elements="28" coveredelements="23"/> - </class> - <line num="14" type="method" name="supportedTypes" visibility="public" complexity="1" crap="1" count="14"/> - <line num="16" type="stmt" count="14"/> - <line num="17" type="stmt" count="14"/> - <line num="18" type="stmt" count="14"/> - <line num="26" type="method" name="serializeItem" visibility="protected" complexity="10" crap="10.46" count="11"/> - <line num="28" type="stmt" count="11"/> - <line num="29" type="stmt" count="1"/> - <line num="32" type="stmt" count="10"/> - <line num="33" type="stmt" count="10"/> - <line num="35" type="stmt" count="10"/> - <line num="37" type="stmt" count="10"/> - <line num="38" type="stmt" count="10"/> - <line num="40" type="stmt" count="10"/> - <line num="41" type="stmt" count="10"/> - <line num="44" type="stmt" count="1"/> - <line num="47" type="stmt" count="0"/> - <line num="52" type="stmt" count="0"/> - <line num="60" type="method" name="deserializeItem" visibility="protected" complexity="9" crap="9.08" count="11"/> - <line num="62" type="stmt" count="11"/> - <line num="63" type="stmt" count="10"/> - <line num="65" type="stmt" count="10"/> - <line num="67" type="stmt" count="10"/> - <line num="68" type="stmt" count="10"/> - <line num="70" type="stmt" count="1"/> - <line num="73" type="stmt" count="0"/> - <line num="78" type="stmt" count="1"/> - <line num="79" type="stmt" count="1"/> - <line num="80" type="stmt" count="1"/> - <metrics loc="83" ncloc="73" classes="1" methods="3" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="22" elements="28" coveredelements="23"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/BackedEnumSerializer.php"> - <class name="Nuxtifyts\PhpDto\Serializers\BackedEnumSerializer" namespace="Nuxtifyts\PhpDto\Serializers"> - <metrics complexity="19" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="28" elements="33" coveredelements="30"/> - </class> - <line num="18" type="method" name="supportedTypes" visibility="public" complexity="1" crap="1" count="35"/> - <line num="20" type="stmt" count="35"/> - <line num="21" type="stmt" count="35"/> - <line num="22" type="stmt" count="35"/> - <line num="28" type="method" name="serializeItem" visibility="protected" complexity="5" crap="5" count="18"/> - <line num="31" type="stmt" count="18"/> - <line num="32" type="stmt" count="17"/> - <line num="33" type="stmt" count="18"/> - <line num="40" type="method" name="deserializeItem" visibility="protected" complexity="13" crap="13.10" count="19"/> - <line num="42" type="stmt" count="19"/> - <line num="43" type="stmt" count="1"/> - <line num="44" type="stmt" count="1"/> - <line num="45" type="stmt" count="1"/> - <line num="49" type="stmt" count="18"/> - <line num="50" type="stmt" count="18"/> - <line num="51" type="stmt" count="18"/> - <line num="53" type="stmt" count="2"/> - <line num="56" type="stmt" count="16"/> - <line num="57" type="stmt" count="3"/> - <line num="59" type="stmt" count="16"/> - <line num="61" type="stmt" count="16"/> - <line num="62" type="stmt" count="0"/> - <line num="65" type="stmt" count="16"/> - <line num="66" type="stmt" count="2"/> - <line num="67" type="stmt" count="2"/> - <line num="69" type="stmt" count="0"/> - <line num="73" type="stmt" count="14"/> - <line num="75" type="stmt" count="14"/> - <line num="76" type="stmt" count="14"/> - <line num="77" type="stmt" count="14"/> - <line num="79" type="stmt" count="14"/> - <line num="80" type="stmt" count="14"/> - <line num="89" type="stmt" count="2"/> - <metrics loc="92" ncloc="83" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="28" elements="33" coveredelements="30"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/DataSerializer.php"> - <class name="Nuxtifyts\PhpDto\Serializers\DataSerializer" namespace="Nuxtifyts\PhpDto\Serializers"> - <metrics complexity="17" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="28" elements="33" coveredelements="30"/> - </class> - <line num="20" type="method" name="supportedTypes" visibility="public" complexity="1" crap="1" count="34"/> - <line num="22" type="stmt" count="34"/> - <line num="23" type="stmt" count="34"/> - <line num="24" type="stmt" count="34"/> - <line num="32" type="method" name="serializeItem" visibility="protected" complexity="5" crap="5" count="11"/> - <line num="34" type="stmt" count="11"/> - <line num="35" type="stmt" count="11"/> - <line num="37" type="stmt" count="11"/> - <line num="39" type="stmt" count="11"/> - <line num="40" type="stmt" count="11"/> - <line num="46" type="method" name="deserializeItem" visibility="protected" complexity="11" crap="11.09" count="14"/> - <line num="48" type="stmt" count="14"/> - <line num="49" type="stmt" count="6"/> - <line num="51" type="stmt" count="14"/> - <line num="52" type="stmt" count="10"/> - <line num="54" type="stmt" count="10"/> - <line num="55" type="stmt" count="0"/> - <line num="58" type="stmt" count="10"/> - <line num="60" type="stmt" count="10"/> - <line num="61" type="stmt" count="10"/> - <line num="62" type="stmt" count="10"/> - <line num="64" type="stmt" count="9"/> - <line num="65" type="stmt" count="0"/> - <line num="68" type="stmt" count="9"/> - <line num="75" type="stmt" count="6"/> - <line num="77" type="stmt" count="2"/> - <line num="78" type="stmt" count="2"/> - <line num="79" type="stmt" count="2"/> - <line num="80" type="stmt" count="2"/> - <line num="82" type="stmt" count="2"/> - <line num="86" type="stmt" count="5"/> - <line num="87" type="stmt" count="2"/> - <line num="88" type="stmt" count="5"/> - <metrics loc="91" ncloc="80" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="28" elements="33" coveredelements="30"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/DateTimeSerializer.php"> - <class name="Nuxtifyts\PhpDto\Serializers\DateTimeSerializer" namespace="Nuxtifyts\PhpDto\Serializers"> - <metrics complexity="18" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="27" elements="32" coveredelements="29"/> - </class> - <line num="20" type="method" name="supportedTypes" visibility="public" complexity="1" crap="1" count="36"/> - <line num="22" type="stmt" count="36"/> - <line num="23" type="stmt" count="36"/> - <line num="24" type="stmt" count="36"/> - <line num="30" type="method" name="serializeItem" visibility="protected" complexity="5" crap="5" count="9"/> - <line num="32" type="stmt" count="9"/> - <line num="33" type="stmt" count="9"/> - <line num="35" type="stmt" count="6"/> - <line num="37" type="stmt" count="9"/> - <line num="38" type="stmt" count="9"/> - <line num="44" type="method" name="deserializeItem" visibility="protected" complexity="12" crap="12.12" count="12"/> - <line num="46" type="stmt" count="12"/> - <line num="47" type="stmt" count="1"/> - <line num="49" type="stmt" count="12"/> - <line num="50" type="stmt" count="7"/> - <line num="52" type="stmt" count="7"/> - <line num="53" type="stmt" count="0"/> - <line num="56" type="stmt" count="7"/> - <line num="57" type="stmt" count="1"/> - <line num="60" type="stmt" count="6"/> - <line num="62" type="stmt" count="5"/> - <line num="63" type="stmt" count="0"/> - <line num="66" type="stmt" count="5"/> - <line num="73" type="stmt" count="6"/> - <line num="74" type="stmt" count="2"/> - <line num="75" type="stmt" count="2"/> - <line num="76" type="stmt" count="2"/> - <line num="77" type="stmt" count="2"/> - <line num="78" type="stmt" count="2"/> - <line num="82" type="stmt" count="5"/> - <line num="83" type="stmt" count="3"/> - <line num="84" type="stmt" count="5"/> - <metrics loc="87" ncloc="79" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="27" elements="32" coveredelements="29"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/ScalarTypeSerializer.php"> - <class name="Nuxtifyts\PhpDto\Serializers\ScalarTypeSerializer" namespace="Nuxtifyts\PhpDto\Serializers"> - <metrics complexity="13" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="29" elements="33" coveredelements="33"/> - </class> - <line num="17" type="method" name="supportedTypes" visibility="public" complexity="1" crap="1" count="19"/> - <line num="19" type="stmt" count="19"/> - <line num="20" type="stmt" count="19"/> - <line num="21" type="stmt" count="19"/> - <line num="22" type="stmt" count="19"/> - <line num="23" type="stmt" count="19"/> - <line num="24" type="stmt" count="19"/> - <line num="30" type="method" name="getScalarTypeFromProperty" visibility="private" complexity="2" crap="2" count="15"/> - <line num="33" type="stmt" count="15"/> - <line num="34" type="stmt" count="15"/> - <line num="35" type="stmt" count="15"/> - <line num="36" type="stmt" count="15"/> - <line num="37" type="stmt" count="15"/> - <line num="43" type="method" name="serializeItem" visibility="protected" complexity="5" crap="5" count="17"/> - <line num="45" type="stmt" count="16"/> - <line num="46" type="stmt" count="17"/> - <line num="48" type="stmt" count="16"/> - <line num="49" type="stmt" count="16"/> - <line num="50" type="stmt" count="16"/> - <line num="51" type="stmt" count="16"/> - <line num="53" type="stmt" count="17"/> - <line num="54" type="stmt" count="16"/> - <line num="60" type="method" name="deserializeItem" visibility="protected" complexity="5" crap="5" count="17"/> - <line num="62" type="stmt" count="15"/> - <line num="63" type="stmt" count="17"/> - <line num="64" type="stmt" count="1"/> - <line num="65" type="stmt" count="2"/> - <line num="67" type="stmt" count="15"/> - <line num="68" type="stmt" count="15"/> - <line num="69" type="stmt" count="15"/> - <line num="70" type="stmt" count="15"/> - <line num="72" type="stmt" count="16"/> - <line num="73" type="stmt" count="15"/> - <metrics loc="76" ncloc="67" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="29" elements="33" coveredelements="33"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/Serializer.php"> - <class name="Nuxtifyts\PhpDto\Serializers\Serializer" namespace="Nuxtifyts\PhpDto\Serializers"> - <metrics complexity="3" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="10" coveredelements="10"/> - </class> - <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="46"/> - <line num="15" type="stmt" count="46"/> - <line num="27" type="method" name="serialize" visibility="public" complexity="1" crap="1" count="49"/> - <line num="29" type="stmt" count="49"/> - <line num="31" type="stmt" count="49"/> - <line num="32" type="stmt" count="49"/> - <line num="33" type="stmt" count="49"/> - <line num="41" type="method" name="deserialize" visibility="public" complexity="1" crap="1" count="58"/> - <line num="43" type="stmt" count="58"/> - <line num="45" type="stmt" count="58"/> - <metrics loc="58" ncloc="39" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="10" coveredelements="10"/> - </file> - </package> - <package name="Nuxtifyts\PhpDto\Serializers\Concerns"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/Concerns/HasSerializers.php"> - <class name="Nuxtifyts\PhpDto\Serializers\Concerns\HasSerializers" namespace="Nuxtifyts\PhpDto\Serializers\Concerns"> - <metrics complexity="7" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="17" elements="20" coveredelements="20"/> - </class> - <line num="26" type="method" name="getSerializersFromPropertyContext" visibility="protected" complexity="3" crap="3" count="13"/> - <line num="29" type="stmt" count="13"/> - <line num="31" type="stmt" count="13"/> - <line num="32" type="stmt" count="13"/> - <line num="33" type="stmt" count="13"/> - <line num="34" type="stmt" count="13"/> - <line num="35" type="stmt" count="13"/> - <line num="36" type="stmt" count="13"/> - <line num="37" type="stmt" count="13"/> - <line num="48" type="method" name="getSerializersFromTypeContext" visibility="protected" complexity="3" crap="3" count="12"/> - <line num="51" type="stmt" count="12"/> - <line num="53" type="stmt" count="12"/> - <line num="54" type="stmt" count="12"/> - <line num="55" type="stmt" count="12"/> - <line num="56" type="stmt" count="12"/> - <line num="57" type="stmt" count="12"/> - <line num="58" type="stmt" count="12"/> - <line num="59" type="stmt" count="12"/> - <line num="68" type="method" name="serializers" visibility="public" complexity="1" crap="1" count="27"/> - <line num="70" type="stmt" count="27"/> - <metrics loc="78" ncloc="50" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="17" elements="20" coveredelements="20"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/Concerns/SerializesArrayOfItems.php"> - <class name="Nuxtifyts\PhpDto\Serializers\Concerns\SerializesArrayOfItems" namespace="Nuxtifyts\PhpDto\Serializers\Concerns"> - <metrics complexity="6" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="17" coveredelements="17"/> - </class> - <line num="20" type="method" name="serializeArrayOfItems" visibility="public" complexity="5" crap="5" count="13"/> - <line num="24" type="stmt" count="13"/> - <line num="26" type="stmt" count="13"/> - <line num="27" type="stmt" count="13"/> - <line num="28" type="stmt" count="13"/> - <line num="30" type="stmt" count="13"/> - <line num="31" type="stmt" count="13"/> - <line num="32" type="stmt" count="13"/> - <line num="33" type="stmt" count="13"/> - <line num="35" type="stmt" count="13"/> - <line num="36" type="stmt" count="13"/> - <line num="37" type="stmt" count="13"/> - <line num="47" type="method" name="deserializeArrayOfItems" visibility="public" complexity="1" crap="1" count="14"/> - <line num="51" type="stmt" count="14"/> - <line num="52" type="stmt" count="14"/> - <line num="53" type="stmt" count="14"/> - <line num="54" type="stmt" count="14"/> - <metrics loc="57" ncloc="42" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="15" elements="17" coveredelements="17"/> - </file> - </package> - <file name="/Users/faroukbraik/Dev/php-dto/src/Serializers/Contracts/SerializesArrayOfItems.php"> - <metrics loc="33" ncloc="21" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <package name="Nuxtifyts\PhpDto\Support"> - <file name="/Users/faroukbraik/Dev/php-dto/src/Support/Arr.php"> - <class name="Nuxtifyts\PhpDto\Support\Arr" namespace="Nuxtifyts\PhpDto\Support"> - <metrics complexity="4" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="9" coveredelements="9"/> - </class> - <line num="14" type="method" name="getArray" visibility="public" complexity="2" crap="2" count="3"/> - <line num="16" type="stmt" count="3"/> - <line num="18" type="stmt" count="3"/> - <line num="25" type="method" name="isArrayOfClassStrings" visibility="public" complexity="2" crap="2" count="2"/> - <line num="27" type="stmt" count="2"/> - <line num="28" type="stmt" count="2"/> - <line num="29" type="stmt" count="2"/> - <line num="30" type="stmt" count="2"/> - <line num="31" type="stmt" count="2"/> - <metrics loc="34" ncloc="23" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="9" coveredelements="9"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Support/Passable.php"> - <class name="Nuxtifyts\PhpDto\Support\Passable" namespace="Nuxtifyts\PhpDto\Support"> - <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </class> - <metrics loc="8" ncloc="8" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Support/Pipe.php"> - <class name="Nuxtifyts\PhpDto\Support\Pipe" namespace="Nuxtifyts\PhpDto\Support"> - <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </class> - <line num="12" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="46"/> - <metrics loc="23" ncloc="13" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="1" elements="2" coveredelements="2"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Support/Pipeline.php"> - <class name="Nuxtifyts\PhpDto\Support\Pipeline" namespace="Nuxtifyts\PhpDto\Support"> - <metrics complexity="4" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="9" coveredelements="9"/> - </class> - <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="29"/> - <line num="21" type="stmt" count="29"/> - <line num="26" type="method" name="through" visibility="public" complexity="1" crap="1" count="29"/> - <line num="28" type="stmt" count="29"/> - <line num="30" type="stmt" count="29"/> - <line num="38" type="method" name="sendThenReturn" visibility="public" complexity="2" crap="2" count="29"/> - <line num="40" type="stmt" count="29"/> - <line num="41" type="stmt" count="29"/> - <line num="44" type="stmt" count="29"/> - <metrics loc="47" ncloc="30" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="9" coveredelements="9"/> - </file> - <file name="/Users/faroukbraik/Dev/php-dto/src/Support/Str.php"> - <class name="Nuxtifyts\PhpDto\Support\Str" namespace="Nuxtifyts\PhpDto\Support"> - <metrics complexity="25" methods="12" coveredmethods="12" conditionals="0" coveredconditionals="0" statements="26" coveredstatements="26" elements="38" coveredelements="38"/> - </class> - <line num="9" type="method" name="validateLetterCase" visibility="public" complexity="5" crap="5" count="8"/> - <line num="12" type="stmt" count="8"/> - <line num="13" type="stmt" count="6"/> - <line num="14" type="stmt" count="4"/> - <line num="15" type="stmt" count="8"/> - <line num="19" type="method" name="isCamelCase" visibility="public" complexity="1" crap="1" count="6"/> - <line num="21" type="stmt" count="6"/> - <line num="24" type="method" name="isSnakeCase" visibility="public" complexity="1" crap="1" count="6"/> - <line num="26" type="stmt" count="6"/> - <line num="29" type="method" name="isKebabCase" visibility="public" complexity="1" crap="1" count="6"/> - <line num="31" type="stmt" count="6"/> - <line num="34" type="method" name="isPascalCase" visibility="public" complexity="1" crap="1" count="6"/> - <line num="36" type="stmt" count="6"/> - <line num="39" type="method" name="transformLetterCase" visibility="public" complexity="10" crap="10" count="8"/> - <line num="44" type="stmt" count="8"/> - <line num="45" type="stmt" count="1"/> - <line num="48" type="stmt" count="7"/> - <line num="49" type="stmt" count="7"/> - <line num="50" type="stmt" count="5"/> - <line num="51" type="stmt" count="3"/> - <line num="52" type="stmt" count="1"/> - <line num="53" type="stmt" count="7"/> - <line num="56" type="stmt" count="7"/> - <line num="57" type="stmt" count="5"/> - <line num="58" type="stmt" count="3"/> - <line num="59" type="stmt" count="7"/> - <line num="63" type="method" name="camelToSnake" visibility="public" complexity="1" crap="1" count="2"/> - <line num="65" type="stmt" count="2"/> - <line num="68" type="method" name="snakeToCamel" visibility="public" complexity="1" crap="1" count="3"/> - <line num="70" type="stmt" count="3"/> - <line num="73" type="method" name="kebabToCamel" visibility="public" complexity="1" crap="1" count="2"/> - <line num="75" type="stmt" count="2"/> - <line num="78" type="method" name="pascalToSnake" visibility="public" complexity="1" crap="1" count="1"/> - <line num="80" type="stmt" count="1"/> - <line num="83" type="method" name="snakeToPascal" visibility="public" complexity="1" crap="1" count="2"/> - <line num="85" type="stmt" count="2"/> - <line num="88" type="method" name="camelToKebab" visibility="public" complexity="1" crap="1" count="1"/> - <line num="90" type="stmt" count="1"/> - <metrics loc="93" ncloc="93" classes="1" methods="12" coveredmethods="12" conditionals="0" coveredconditionals="0" statements="26" coveredstatements="26" elements="38" coveredelements="38"/> - </file> - </package> - <metrics files="74" loc="3976" ncloc="3374" classes="60" methods="165" coveredmethods="135" conditionals="0" coveredconditionals="0" statements="1038" coveredstatements="953" elements="1203" coveredelements="1088"/> - </project> -</coverage> diff --git a/composer.json b/composer.json index a09f12f..0a5b607 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,8 @@ } }, "scripts": { - "ci-test": "XDEBUG_MODE=coverage vendor/bin/phpunit --testsuite=ci --configuration phpunit.xml", + "ci-test": "XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-text --testsuite=ci --configuration phpunit.xml", + "unit-test": "XDEBUG_MODE=coverage vendor/bin/phpunit --testsuite=unit --configuration phpunit.xml", "phpstan": "vendor/bin/phpstan analyse --configuration phpstan.neon --memory-limit=256M" } } diff --git a/docs/DataConfiguration.md b/docs/DataConfiguration.md index 2e73108..498756d 100644 --- a/docs/DataConfiguration.md +++ b/docs/DataConfiguration.md @@ -38,6 +38,6 @@ DataConfiguration::getInstance([ BackedEnumSerializer::class, ScalarTypeSerializer::class, ] - ] + ], ]) ``` diff --git a/src/Concerns/BaseData.php b/src/Concerns/BaseData.php index 2e9b0d1..7d42eeb 100644 --- a/src/Concerns/BaseData.php +++ b/src/Concerns/BaseData.php @@ -9,7 +9,6 @@ use Nuxtifyts\PhpDto\Normalizers\Concerns\HasNormalizers; use Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\DeserializePipeline; use Nuxtifyts\PhpDto\Pipelines\DeserializePipeline\DeserializePipelinePassable; -use ReflectionClass; use Throwable; trait BaseData diff --git a/src/Configuration/DataConfiguration.php b/src/Configuration/DataConfiguration.php index cfc2046..3fd2221 100644 --- a/src/Configuration/DataConfiguration.php +++ b/src/Configuration/DataConfiguration.php @@ -36,7 +36,7 @@ public static function getInstance( serializers: SerializersConfiguration::getInstance( Arr::getArray($config ?? [], 'serializers'), $forceCreate - ) + ), ); } } diff --git a/src/Support/Arr.php b/src/Support/Arr.php index 0a83032..9bada21 100644 --- a/src/Support/Arr.php +++ b/src/Support/Arr.php @@ -2,11 +2,13 @@ namespace Nuxtifyts\PhpDto\Support; +use BackedEnum; +use InvalidArgumentException; + final readonly class Arr { /** * @param array<array-key, mixed> $array - * @param string $key * @param array<array-key, mixed> $default * * @return array<array-key, mixed> @@ -30,4 +32,165 @@ public static function isArrayOfClassStrings(array $array, string $classString): && is_subclass_of($value, $classString) ); } + + /** + * @param array<array-key, mixed> $array + */ + public static function getStringOrNull(array $array, string $key): ?string + { + $value = $array[$key] ?? null; + + return is_string($value) ? $value : null; + } + + /** + * @param array<array-key, mixed> $array + */ + public static function getString(array $array, string $key, string $default = ''): string + { + return self::getStringOrNull($array, $key) ?? $default; + } + + /** + * @param array<array-key, mixed> $array + */ + public static function getIntegerOrNull(array $array, string $key): ?int + { + $value = $array[$key] ?? null; + + return is_int($value) ? $value : null; + } + + /** + * @param array<array-key, mixed> $array + */ + public static function getInteger(array $array, string $key, int $default = 0): int + { + return self::getIntegerOrNull($array, $key) ?? $default; + } + + /** + * @param array<array-key, mixed> $array + */ + public static function getFloatOrNull(array $array, string $key): ?float + { + $value = $array[$key] ?? null; + + return is_float($value) ? $value : null; + } + + /** + * @param array<array-key, mixed> $array + */ + public static function getFloat(array $array, string $key, float $default = 0.0): float + { + return self::getFloatOrNull($array, $key) ?? $default; + } + + /** + * @param array<array-key, mixed> $array + */ + public static function getBooleanOrNull(array $array, string $key): ?bool + { + $value = $array[$key] ?? null; + + return is_bool($value) ? $value : null; + } + + /** + * @param array<array-key, mixed> $array + */ + public static function getBoolean(array $array, string $key, bool $default = false): bool + { + return self::getBooleanOrNull($array, $key) ?? $default; + } + + /** + * @template T of BackedEnum + * + * @param array<array-key, mixed> $array + * @param class-string<T> $enumClass + * @param ?T $default + * + * @return ?T + */ + public static function getBackedEnumOrNull( + array $array, + string $key, + string $enumClass, + ?BackedEnum $default = null + ): ?BackedEnum { + $value = $array[$key] ?? null; + + if ($value instanceof $enumClass) { + return $value; + } else if ( + (is_string($value) || is_integer($value)) + && $resolvedValue = $enumClass::tryFrom($value) + ) { + return $resolvedValue; + } + + return is_null($default) + ? null + : ($default instanceof $enumClass + ? $default + : throw new InvalidArgumentException('Default value must be an instance of ' . $enumClass) + ); + } + + /** + * @template T of BackedEnum + * + * @param array<array-key, mixed> $array + * @param class-string<T> $enumClass + * @param T $default + * + * @return T + */ + public static function getBackedEnum( + array $array, + string $key, + string $enumClass, + BackedEnum $default + ): BackedEnum { + return self::getBackedEnumOrNull($array, $key, $enumClass, $default) ?? $default; + } + + + /** + * @param array<array-key, mixed> $array + * + * @return ($preserveKeys is true ? array<array-key, mixed> : list<mixed>) + */ + public static function flatten(array $array, float $depth = INF, bool $preserveKeys = true): array + { + $result = []; + + foreach ($array as $key => $item) { + $item = $item instanceof Collection ? $item->all() : $item; + + if (! is_array($item)) { + if ($preserveKeys) { + $result[$key] = $item; + } else { + $result[] = $item; + } + } else { + $values = $depth === 1.0 + ? $item + : self::flatten($item, $depth - 1, $preserveKeys); + + foreach ($values as $subKey => $value) { + if ($preserveKeys) { + $result[$subKey] = $value; + } else { + $result[] = $value; + } + } + } + } + + return $result; + } } diff --git a/src/Support/Collection.php b/src/Support/Collection.php new file mode 100644 index 0000000..47369c1 --- /dev/null +++ b/src/Support/Collection.php @@ -0,0 +1,117 @@ +<?php + +namespace Nuxtifyts\PhpDto\Support; + +/** + * @template TKey of array-key + * @template TValue of mixed + */ +class Collection +{ + /** @var array<TKey, TValue> */ + protected array $items = []; + + /** + * @param array<TKey, TValue> $items + */ + public function __construct(array $items = []) + { + $this->items = $items; + } + + /** + * @param TValue $item + * + * @return self<TKey, TValue> + */ + public function push(mixed $item): self + { + $this->items[] = $item; + return $this; + } + + /** + * @param TKey $key + * @param TValue $value + * + * @return self<TKey, TValue> + */ + public function put(mixed $key, mixed $value): self + { + $this->items[$key] = $value; + return $this; + } + + /** + * @param ?callable(TValue $item): bool $callable + * + * @return ?TValue + */ + public function first(?callable $callable = null): mixed + { + return is_null($callable) + ? reset($this->items) ?: null + : array_find($this->items, $callable); + } + + /** + * @template TNewValue of mixed + * @param callable(TValue $item): TNewValue $callable + * + * @return self<TKey, TNewValue> + */ + public function map(callable $callable): self + { + return new self(array_map($callable, $this->items)); + } + + /** + * @return ($preserveKeys is true ? Collection<array-key, mixed> : Collection<int, mixed>) + */ + public function collapse(bool $preserveKeys = false): self + { + return $this->flatten(1, $preserveKeys); + } + + /** + * @return ($preserveKeys is true ? Collection<array-key, mixed> : Collection<int, mixed>) + */ + public function flatten(float $depth = INF, bool $preserveKeys = true): self + { + return new self(Arr::flatten($this->items, $depth, $preserveKeys)); + } + + public function isNotEmpty(): bool + { + return !empty($this->items); + } + + public function isEmpty(): bool + { + return !$this->isNotEmpty(); + } + + /** + * @param callable(TValue $item): bool $callable + */ + public function every(callable $callable): bool + { + return array_all($this->items, $callable); + } + + /** + * @param callable(TValue $item): bool $callable + */ + public function some(callable $callable): bool + { + return array_any($this->items, $callable); + } + + /** + * @return array<TKey, TValue> + */ + public function all(): array + { + return $this->items; + } +} diff --git a/tests/Unit/Support/ArrTest.php b/tests/Unit/Support/ArrTest.php index 633b923..59f77d6 100644 --- a/tests/Unit/Support/ArrTest.php +++ b/tests/Unit/Support/ArrTest.php @@ -2,16 +2,22 @@ namespace Nuxtifyts\PhpDto\Tests\Unit\Support; -use Nuxtifyts\PhpDto\Serializers\BackedEnumSerializer; -use Nuxtifyts\PhpDto\Serializers\ScalarTypeSerializer; -use Nuxtifyts\PhpDto\Serializers\Serializer; +use InvalidArgumentException; use Nuxtifyts\PhpDto\Support\Arr; +use PHPUnit\Framework\Attributes\Test; use Nuxtifyts\PhpDto\Tests\Unit\UnitCase; +use PHPUnit\Framework\Attributes\UsesClass; +use Nuxtifyts\PhpDto\Serializers\Serializer; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Test; +use Nuxtifyts\PhpDto\Serializers\BackedEnumSerializer; +use Nuxtifyts\PhpDto\Serializers\ScalarTypeSerializer; +use Nuxtifyts\PhpDto\Tests\Dummies\Enums\YesNoBackedEnum; +use Nuxtifyts\PhpDto\Tests\Dummies\Enums\ColorsBackedEnum; #[CoversClass(Arr::class)] +#[UsesClass(YesNoBackedEnum::class)] +#[UsesClass(ColorsBackedEnum::class)] final class ArrTest extends UnitCase { /** @@ -20,6 +26,7 @@ final class ArrTest extends UnitCase #[Test] #[DataProvider('get_arr_provider')] #[DataProvider('is_array_of_class_strings_provider')] + #[DataProvider('flatten_provider')] public function arr_helper_functions( string $functionName, array $parameters, @@ -62,9 +69,281 @@ public static function get_arr_provider(): array ], [], ], + 'get string existing key, invalid value' => [ + 'getString', + [ + 'array' => ['key' => 1], + 'key' => 'key', + ], + '', + ], + 'get string existing key, valid value' => [ + 'getString', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + 'value', + ], + 'get string non-existing key' => [ + 'getString', + [ + 'array' => ['key' => 'value'], + 'key' => 'nonExistingKey', + ], + '', + ], + 'get string or null existing key, invalid value' => [ + 'getStringOrNull', + [ + 'array' => ['key' => 1], + 'key' => 'key', + ], + null, + ], + 'get string or null existing key, valid value' => [ + 'getStringOrNull', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + 'value', + ], + 'get string or null non-existing key' => [ + 'getStringOrNull', + [ + 'array' => ['key' => 'value'], + 'key' => 'nonExistingKey', + ], + null, + ], + 'get integer existing key, invalid value' => [ + 'getInteger', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + 0, + ], + 'get integer existing key, valid value' => [ + 'getInteger', + [ + 'array' => ['key' => 1], + 'key' => 'key', + ], + 1, + ], + 'get integer non-existing key' => [ + 'getInteger', + [ + 'array' => ['key' => 1], + 'key' => 'nonExistingKey', + ], + 0, + ], + 'get integer or null existing key, invalid value' => [ + 'getIntegerOrNull', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + null, + ], + 'get integer or null existing key, valid value' => [ + 'getIntegerOrNull', + [ + 'array' => ['key' => 1], + 'key' => 'key', + ], + 1, + ], + 'get integer or null non-existing key' => [ + 'getIntegerOrNull', + [ + 'array' => ['key' => 1], + 'key' => 'nonExistingKey', + ], + null, + ], + 'get float existing key, invalid value' => [ + 'getFloat', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + 0.0, + ], + 'get float existing key, valid value' => [ + 'getFloat', + [ + 'array' => ['key' => 1.1], + 'key' => 'key', + ], + 1.1, + ], + 'get float non-existing key' => [ + 'getFloat', + [ + 'array' => ['key' => 1.1], + 'key' => 'nonExistingKey', + ], + 0.0, + ], + 'get float or null existing key, invalid value' => [ + 'getFloatOrNull', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + null, + ], + 'get float or null existing key, valid value' => [ + 'getFloatOrNull', + [ + 'array' => ['key' => 1.1], + 'key' => 'key', + ], + 1.1, + ], + 'get float or null non-existing key' => [ + 'getFloatOrNull', + [ + 'array' => ['key' => 1.1], + 'key' => 'nonExistingKey', + ], + null, + ], + 'get boolean existing key, invalid value' => [ + 'getBoolean', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + false, + ], + 'get boolean existing key, valid value' => [ + 'getBoolean', + [ + 'array' => ['key' => true], + 'key' => 'key', + ], + true, + ], + 'get boolean non-existing key' => [ + 'getBoolean', + [ + 'array' => ['key' => true], + 'key' => 'nonExistingKey', + ], + false, + ], + 'get boolean or null existing key, invalid value' => [ + 'getBooleanOrNull', + [ + 'array' => ['key' => 'value'], + 'key' => 'key', + ], + null, + ], + 'get boolean or null existing key, valid value' => [ + 'getBooleanOrNull', + [ + 'array' => ['key' => true], + 'key' => 'key', + ], + true, + ], + 'get boolean or null non-existing key' => [ + 'getBooleanOrNull', + [ + 'array' => ['key' => true], + 'key' => 'nonExistingKey', + ], + null, + ], + 'get backed enum or null, invalid value' => [ + 'getBackedEnumOrNull', + [ + 'array' => ['key' => 'invalid'], + 'key' => 'key', + 'enumClass' => YesNoBackedEnum::class, + ], + null + ], + 'get backed enum or null, invalid value default provided' => [ + 'getBackedEnumOrNull', + [ + 'array' => ['key' => 'invalid'], + 'key' => 'key', + 'enumClass' => YesNoBackedEnum::class, + 'default' => YesNoBackedEnum::NO, + ], + YesNoBackedEnum::NO + ], + 'get backed enum or null, valid backed enum value' => [ + 'getBackedEnumOrNull', + [ + 'array' => ['key' => YesNoBackedEnum::YES], + 'key' => 'key', + 'enumClass' => YesNoBackedEnum::class, + ], + YesNoBackedEnum::YES + ], + 'get backed enum or null, valid string value' => [ + 'getBackedEnumOrNull', + [ + 'array' => ['key' => 'yes'], + 'key' => 'key', + 'enumClass' => YesNoBackedEnum::class, + ], + YesNoBackedEnum::YES + ], + 'get backed enum, invalid value' => [ + 'getBackedEnum', + [ + 'array' => ['key' => 'invalid'], + 'key' => 'key', + 'enumClass' => YesNoBackedEnum::class, + 'default' => YesNoBackedEnum::NO, + ], + YesNoBackedEnum::NO + ], + 'get backed enum, valid backed enum value' => [ + 'getBackedEnum', + [ + 'array' => ['key' => YesNoBackedEnum::YES], + 'key' => 'key', + 'enumClass' => YesNoBackedEnum::class, + 'default' => YesNoBackedEnum::NO, + ], + YesNoBackedEnum::YES + ], + 'get backed enum, valid string value' => [ + 'getBackedEnum', + [ + 'array' => ['key' => 'yes'], + 'key' => 'key', + 'enumClass' => YesNoBackedEnum::class, + 'default' => YesNoBackedEnum::NO, + ], + YesNoBackedEnum::YES + ], ]; } + #[Test] + public function get_backed_enum_or_null_will_throw_an_exception_if_default_value_is_invalid(): void + { + self::expectException(InvalidArgumentException::class); + + Arr::getBackedEnumOrNull( + ['key' => 'invalid'], + 'key', + YesNoBackedEnum::class, + ColorsBackedEnum::RED + ); + } + /** * @return array<string, mixed> */ @@ -96,4 +375,124 @@ public static function is_array_of_class_strings_provider(): array ], ]; } + + /** + * @return array<string, mixed> + */ + public static function flatten_provider(): array + { + return [ + 'flatten, empty array' => [ + 'flatten', + [ + 'array' => [], + ], + [] + ], + 'flatten array, one depth' => [ + 'flatten', + [ + 'array' => [ + 'a' => [ + 'a1' => 1.1, + 'a2' => 1.2 + ], + 'b' => 2, + ], + ], + [ + 'a1' => 1.1, + 'a2' => 1.2, + 'b' => 2 + ] + ], + 'flatten array, multiple depths' => [ + 'flatten', + [ + 'array' => [ + 'a' => [ + 'a1' => [ + 'a1.1' => 1.1, + 'a1.2' => 1.2 + ], + 'a2' => 2 + ], + 'b' => 3, + ], + ], + [ + 'a1.1' => 1.1, + 'a1.2' => 1.2, + 'a2' => 2, + 'b' => 3 + ] + ], + 'flatten array, and resets array keys' => [ + 'flatten', + [ + 'array' => [ + 'a' => [ + 'a1' => 1.1, + 'a2' => 1.2 + ], + 'b' => 2, + ], + 'depth' => 1.0, + 'preserveKeys' => false, + ], + [ + 1.1, + 1.2, + 2 + ] + ], + 'flatten array, and resets array keys, multiple depths' => [ + 'flatten', + [ + 'array' => [ + 'a' => [ + 'a1' => [ + 'a1.1' => 1.1, + 'a1.2' => 1.2 + ], + 'a2' => 2 + ], + 'b' => 3, + ], + 'preserveKeys' => false, + ], + [ + 1.1, + 1.2, + 2, + 3 + ] + ], + 'flatten array, one depth, not enough' => [ + 'flatten', + [ + 'array' => [ + 'a' => [ + 'a1' => [ + 'a1.1' => 1.1, + 'a1.2' => 1.2 + ], + 'a2' => 2 + ], + 'b' => 3, + ], + 'depth' => 1, + 'preserveKeys' => false, + ], + [ + [ + 'a1.1' => 1.1, + 'a1.2' => 1.2 + ], + 2, + 3 + ] + ] + ]; + } } diff --git a/tests/Unit/Support/CollectionTest.php b/tests/Unit/Support/CollectionTest.php new file mode 100644 index 0000000..9039364 --- /dev/null +++ b/tests/Unit/Support/CollectionTest.php @@ -0,0 +1,238 @@ +<?php + +namespace Nuxtifyts\PhpDto\Tests\Unit\Support; + +use Nuxtifyts\PhpDto\Support\Collection; +use Nuxtifyts\PhpDto\Tests\Unit\UnitCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; + +#[CoversClass(Collection::class)] +final class CollectionTest extends UnitCase +{ + /** + * @param Collection<array-key, mixed> $collection + * @param array<string, mixed> $functionParams + */ + #[Test] + #[DataProvider('push_function_provider')] + #[DataProvider('put_function_provider')] + #[DataProvider('first_function_provider')] + #[DataProvider('map_function_provider')] + #[DataProvider('collapse_function_provider')] + #[DataProvider('flatten_function_provider')] + #[DataProvider('all_function_provider')] + #[DataProvider('validation_functions_provider')] + public function will_be_able_to_perform_functions( + Collection $collection, + string $functionName, + array $functionParams, + mixed $expected + ): void { + $result = $collection->{$functionName}(...$functionParams); + + if ($expected instanceof Collection) { + self::assertInstanceOf(Collection::class, $result); + self::assertCollection($result, $expected); + } else { + self::assertEquals($expected, $result); + } + } + + /** + * @return array<string, mixed> + */ + public static function push_function_provider(): array + { + return [ + 'push' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'push', + 'functionParams' => [ 'item' => 4 ], + 'expected' => new Collection([1, 2, 3, 4]) + ] + ]; + } + + /** + * @return array<string, mixed> + */ + public static function put_function_provider(): array + { + return [ + 'put in new key' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'put', + 'functionParams' => [ 'key' => 3, 'value' => 4 ], + 'expected' => new Collection([1, 2, 3, 4]) + ], + 'put in existing key will override value' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'put', + 'functionParams' => [ 'key' => 0, 'value' => 4 ], + 'expected' => new Collection([4, 2, 3]) + ] + ]; + } + + /** + * @return array<string, mixed> + */ + public static function first_function_provider(): array + { + return [ + 'first without callable and non empty collection' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'first', + 'functionParams' => [], + 'expected' => 1 + ], + 'first without callable and empty collection' => [ + 'collection' => new Collection([]), + 'functionName' => 'first', + 'functionParams' => [], + 'expected' => null + ], + 'first with callable and existing item that will meet requirements' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'first', + 'functionParams' => [ 'callable' => static fn (int $item) => $item === 2 ], + 'expected' => 2 + ], + 'first with callable and no item that will meet requirements' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'first', + 'functionParams' => [ 'callable' => static fn (int $item) => $item === 4 ], + 'expected' => null + ] + ]; + } + + /** + * @return array<string, mixed> + */ + public static function map_function_provider(): array + { + return [ + 'map' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'map', + 'functionParams' => [ 'callable' => static fn (int $item) => $item * 2 ], + 'expected' => new Collection([2, 4, 6]) + ] + ]; + } + + /** + * @return array<string, mixed> + */ + public static function collapse_function_provider(): array + { + return [ + 'collapse' => [ + 'collection' => new Collection([ + new Collection([ 'a' => 1, 2, 3]), + new Collection([4, 5, 6]), + new Collection([7, 8, 9]) + ]), + 'functionName' => 'collapse', + 'functionParams' => [], + 'expected' => new Collection([1, 2, 3, 4, 5, 6, 7, 8, 9]) + ], + + ]; + } + + /** + * @return array<string, mixed> + */ + public static function flatten_function_provider(): array + { + return [ + 'flatten' => [ + 'collection' => new Collection([ + 'a1' => new Collection([ + 'a1.1' => 1.1, + 'a1.2' => new Collection([ + 'a1.2.1' => 1.21, + 'a1.2.2' => 1.22, + 'a1.2.3' => new Collection([ + 'a1.2.3.1' => 1.231, + 'a1.2.3.2' => 1.232, + 'a1.2.3.3' => 1.233 + ]) + ]) + ]) + ]), + 'functionName' => 'flatten', + 'functionParams' => [], + 'expected' => new Collection([ + 'a1.1' => 1.1, + 'a1.2.1' => 1.21, + 'a1.2.2' => 1.22, + 'a1.2.3.1' => 1.231, + 'a1.2.3.2' => 1.232, + 'a1.2.3.3' => 1.233 + ]) + ] + ]; + } + + /** + * @return array<string, mixed> + */ + public static function all_function_provider(): array + { + return [ + 'all' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'all', + 'functionParams' => [], + 'expected' => [1, 2, 3] + ] + ]; + } + + /** + * @return array<string, mixed> + */ + public static function validation_functions_provider(): array + { + return [ + 'isEmpty' => [ + 'collection' => new Collection([]), + 'functionName' => 'isEmpty', + 'functionParams' => [], + 'expected' => true + ], + 'isNotEmpty' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'isNotEmpty', + 'functionParams' => [], + 'expected' => true + ], + 'every' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'every', + 'functionParams' => [ 'callable' => static fn (int $item) => $item > 0 ], + 'expected' => true + ], + 'some' => [ + 'collection' => new Collection([1, 2, 3]), + 'functionName' => 'some', + 'functionParams' => [ 'callable' => static fn (int $item) => $item === 2 ], + 'expected' => true + ], + ]; + } + + /** + * @param Collection<array-key, mixed> $collection + * @param Collection<array-key, mixed> $expected + */ + private static function assertCollection(Collection $collection, Collection $expected): void + { + self::assertEquals($expected->all(), $collection->all()); + } +}