rectorphp / rector

Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
https://getrector.com
MIT License
8.62k stars 680 forks source link

[CodeQuality] `CompleteDynamicPropertiesRector` add unknown property #1751

Closed stloyd closed 5 years ago

stloyd commented 5 years ago
Subject Details
PHP version any
Full Command e.g. vendor/bin/rector process /src --set code-quality

Current Behaviour

Rector Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector adds, strange/unknown new property that's not used on class level.

    ---------- begin diff ----------
--- Original
+++ New
@@ -18,6 +18,10 @@
 class SomeClassName implements Serializable
 {
     /**
+     * @var
+     */
+    public $k;
+    /**

Minimal PHP Code Causing Issue

Seems to be related to usage of \Serializable interface.

<?php

class SomeClass implements \Serializable
{

    public function serialize()
    {
        $allFields = \get_object_vars($this);
        $fieldsToBeSerialized = [];
        foreach ($allFields as $k => $v) {
            $fieldsToBeSerialized[$k] = $v;
        }

        return \serialize($fieldsToBeSerialized);
    }

    public function unserialize($serialized)
    {
        $data = \unserialize($serialized);
        foreach ($data as $k => $v) {
            $this->$k = $v;
        }
    }
}

Expected Behaviour

No changes.

TomasVotruba commented 5 years ago

It makes sense. Very well described :+1: