Doctrine Common
  1. Doctrine Common
  2. DCOM-175

Proxies return private properties in __sleep, which is not supported by PHP.

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.4
    • Fix Version/s: 2.5.0
    • Component/s: None
    • Labels:
      None

      Description

      __sleep should not return private parent property names (see http://php.net/__sleep) this raises notices, and also results in the value of the property being 'N' (null) instead of keeping its value.

      I am unfortunately stuck having to serialize proxies in my revision tracking, as doctrine seems to be currently ignoring the fetch="EAGER" I set on the related properties.

      Proxies should use the Serializable interface, and not __sleep, or not return parent property names which are private, it serves no purpose, and is not supported by PHP itself anyway.

      Also, if you keep __sleep, but do not return the parent property names, then it will only include the items you return, so it would be better to simply drop the __sleep method, I cannot actually see any useful purpose it serves.

        Activity

        Ryan Mauger created issue -
        Ryan Mauger made changes -
        Field Original Value New Value
        Description __sleep should not return private property names (see http://php.net/__sleep) this raises notices, and also results in the value of the property being 'N' (null) instead of keeping its value.

        I am unfortunately stuck having to serialize proxies in my revision tracking, as doctrine seems to be currently ignoring the fetch="EAGER" I set on the related properties.

        Proxies should use the Serializable interface, and not __sleep, or not return property names which are private, it serves no purpose, and is not supported by PHP itself anyway.
        __sleep should not return private parent property names (see http://php.net/__sleep) this raises notices, and also results in the value of the property being 'N' (null) instead of keeping its value.

        I am unfortunately stuck having to serialize proxies in my revision tracking, as doctrine seems to be currently ignoring the fetch="EAGER" I set on the related properties.

        Proxies should use the Serializable interface, and not __sleep, or not return parent property names which are private, it serves no purpose, and is not supported by PHP itself anyway.

        Also, if you keep __sleep, but do not return the parent property names, then it will only include the items you return, so it would be better to simply drop the __sleep method, I cannot actually see any useful purpose it serves.
        Benjamin Eberlei made changes -
        Workflow jira [ 13562 ] jira-feedback [ 14036 ]
        Benjamin Eberlei made changes -
        Workflow jira-feedback [ 14036 ] jira-feedback2 [ 15900 ]
        Benjamin Eberlei made changes -
        Workflow jira-feedback2 [ 15900 ] jira-feedback3 [ 18155 ]
        Marco Pivetta made changes -
        Assignee Benjamin Eberlei [ beberlei ] Marco Pivetta [ ocramius ]
        Marco Pivetta made changes -
        Project Doctrine 2 - ORM [ 10032 ] Doctrine Common [ 10043 ]
        Key DDC-1727 DCOM-175
        Affects Version/s 2.4 [ 10327 ]
        Affects Version/s 2.2.1 [ 10194 ]
        Component/s ORM [ 10012 ]
        Marco Pivetta made changes -
        Status Open [ 1 ] In Progress [ 3 ]
        Marco Pivetta made changes -
        Status In Progress [ 3 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Benjamin Eberlei made changes -
        Fix Version/s 2.4 [ 10327 ]
        Marco Pivetta made changes -
        Fix Version/s 2.5.0 [ 10526 ]
        Marco Pivetta made changes -
        Fix Version/s 2.4 [ 10327 ]

          People

          • Assignee:
            Marco Pivetta
            Reporter:
            Ryan Mauger
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: