Object of class stdClass could not be converted to int

  • Code:

    Code
    FilterValueCacheBuilder::getInstance()->getData([
                'column' => 'foo',
                'filter' => new stdClass(),
                'limit' => 5
    ]);

    Fehler:


    Ursache array_multisort und mögliche Lösung siehe https://www.drupal.org/project/drupal/issues/972536

    • Official Post

    Objekte sind als Parameter extrem unglücklich, weil diese stateful sind, was für die primitiven Datentypen, einschließlich Arrays, nicht gilt. Ein ['foo' => 'bar'] wird immer dasselbe Array sein, aber ein Objekt kann andere Zustände enthalten, die bei der Serialisierung zu Abweichungen führen.


    Dies ist insofern relevant, als dass das Ergebnis der Serialisierung als SHA-1-Hash für den Namen des Cache verwendet wird. Dabei ist es nicht von Belang, ob die Objekte in deinem Fall stets deterministisch sind, sondern wie es sich grundsätzlich verhält.

    Alexander Ebert
    Senior Developer WoltLab® GmbH