Ok, thanks!

Best regards.

2011/4/4 Johannes Schmitt <[email protected]>

> No, leave it hard-coded. These classes are not meant to be extended.
>
> Johannes
>
>
>
> On Mon, Apr 4, 2011 at 9:02 PM, Gustavo Adrian <
> [email protected]> wrote:
>
>> The problem is that we need to pass the Entry class to the
>> ReflectionProperty's constructor even if $ace is an instance of FieldEntry.
>> That's why it was hardcoded. Although maybe we can do:
>>
>> $entryReflectionClass = new \ReflectionClass($ace);
>> $entryClass = $entryReflectionClass->getNamespaceName().'\Entry';
>> $aceIdProperty = new \ReflectionProperty($entryClass, 'id');
>>
>> That way at least we have the namespace not hardcoded. Should I make the
>> change or is it a better way to not hardcode the class in this case that I
>> don't know about?
>>
>> 2011/4/4 Yader Hernandez <[email protected]>
>>
>>> Instead of hardcoding, you can use ReflectionClass::getNamespace()
>>>
>>>
>>>
>>> On Mon, Apr 4, 2011 at 1:52 PM, Johannes Schmitt 
>>> <[email protected]>wrote:
>>>
>>>> You need to change it to
>>>>
>>>> $aceIdProperty = new
>>>> \ReflectionProperty('Symfony\Component\Security\Acl\Domain\Entry', 'id');
>>>>
>>>> because this class contains the "id" property.
>>>>
>>>> Kind regards,
>>>> Johannes
>>>>
>>>>
>>>> On Mon, Apr 4, 2011 at 7:47 PM, Gustavo Adrian <
>>>> [email protected]> wrote:
>>>>
>>>>> @Johannes: Following your advice, I've changed this on the
>>>>> MutableAclProvider class (beginning at line 779):
>>>>>
>>>>> $aceIdProperty = new \ReflectionProperty($ace, 'id');
>>>>> $aceIdProperty->setAccessible(true);
>>>>> $aceIdProperty->setValue($ace, intval($aceId));
>>>>>
>>>>> to this:
>>>>>
>>>>> $aceIdProperty = new \ReflectionProperty(get_class($ace), 'id');
>>>>> $aceIdProperty->setAccessible(true);
>>>>> $aceIdProperty->setValue($ace, intval($aceId));
>>>>>
>>>>> It gives me again the exception:
>>>>>
>>>>> "ReflectionException: Property
>>>>> Symfony\Component\Security\Acl\Domain\FieldEntry::$id does not exist"
>>>>>
>>>>>
>>>>> 2011/4/4 Johannes Schmitt <[email protected]>
>>>>>
>>>>>> I don't think that we need to change the visibility or need to add
>>>>>> setters, we just need to pass the fully-qualified class name of the entry
>>>>>> class when getting the reflection property instead of passing the object
>>>>>> instance.
>>>>>>
>>>>>> Kind regards,
>>>>>> Johannes
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Apr 4, 2011 at 6:19 PM, Gustavo Adrian <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> For now I just changed the visibility of the Entry::$id property to
>>>>>>> protected, and now it works fine. Your suggestion should work too, but I
>>>>>>> think in this special case it's better to change the visibility instead 
>>>>>>> of
>>>>>>> adding setters. A user shouldn't change directly a value of a property 
>>>>>>> of an
>>>>>>> Entry instance. This is handled by the AclProvider. What do you think?
>>>>>>>
>>>>>>>
>>>>>>> Thanks a lot for your comments and the useful info!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> 2011/4/4 Yader Hernandez <[email protected]>
>>>>>>>
>>>>>>>> Oh I see.
>>>>>>>>
>>>>>>>> There is in my opinion, a better way of handling this.
>>>>>>>>
>>>>>>>> Instead of accessing a private property which defeats the purpose of
>>>>>>>> it being private in the first place, a call to a setter method would 
>>>>>>>> work.
>>>>>>>> This would allow us to think more abstractly and less on
>>>>>>>> implementation.
>>>>>>>>
>>>>>>>> But it looks like those were not put into place so maybe changing
>>>>>>>> the scope might work just as easily.
>>>>>>>>
>>>>>>>> Anyway, if the setters were in place, using
>>>>>>>> ReflectionMethod::invoke() would work for what you need.
>>>>>>>>
>>>>>>>> Check out the example that is already provided there:
>>>>>>>> http://us.php.net/manual/en/reflectionmethod.invoke.php
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Apr 4, 2011 at 11:18 AM, Gustavo Adrian <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> It's a bug in PHP. As I said before... I'm having this problem when
>>>>>>>>> I try to update FieldEntry objects (Field ACEs). Lines 779, 780 and 
>>>>>>>>> 781 of
>>>>>>>>> MutableAclProvider uses:
>>>>>>>>>
>>>>>>>>> $aceIdProperty = new \ReflectionProperty($ace, 'id');
>>>>>>>>> $aceIdProperty->setAccessible(true);
>>>>>>>>> $aceIdProperty->setValue($ace, intval($aceId));
>>>>>>>>>
>>>>>>>>> First line throws an exception saying "id" property doesn't exist.
>>>>>>>>> With your code, it's the same thing. It doesn't show any inherited 
>>>>>>>>> private
>>>>>>>>> property. Read the second comment on the PHP bug.
>>>>>>>>>
>>>>>>>>> 2011/4/4 Yader Hernandez <[email protected]>
>>>>>>>>>
>>>>>>>>>> No need to change the visibility. You can flag what you need.
>>>>>>>>>>
>>>>>>>>>> class Foo {
>>>>>>>>>>     public    $foo  = 1;
>>>>>>>>>>     protected $bar  = 2;
>>>>>>>>>>     private   $baz  = 3;
>>>>>>>>>> }
>>>>>>>>>> $foo = new Foo();
>>>>>>>>>> $reflect = new ReflectionClass($foo);
>>>>>>>>>> $props   = $reflect->getProperties(ReflectionProperty::IS_PUBLIC |
>>>>>>>>>> ReflectionProperty::IS_PROTECTED | ReflectionProperty::IS_PRIVATE);
>>>>>>>>>>
>>>>>>>>>> foreach ($props as $prop) {
>>>>>>>>>>   echo $prop->getName();
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> echo "\n";
>>>>>>>>>> var_dump($props);
>>>>>>>>>> echo "\n";
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Output:
>>>>>>>>>> ------------
>>>>>>>>>>
>>>>>>>>>> array(3) {
>>>>>>>>>>   [0]=>
>>>>>>>>>>   object(ReflectionProperty)#3 (2) {
>>>>>>>>>>     ["name"]=>
>>>>>>>>>>     string(3) "foo"
>>>>>>>>>>     ["class"]=>
>>>>>>>>>>     string(3) "Foo"
>>>>>>>>>>   }
>>>>>>>>>>   [1]=>
>>>>>>>>>>   object(ReflectionProperty)#4 (2) {
>>>>>>>>>>     ["name"]=>
>>>>>>>>>>     string(3) "bar"
>>>>>>>>>>     ["class"]=>
>>>>>>>>>>     string(3) "Foo"
>>>>>>>>>>   }
>>>>>>>>>>   [2]=>
>>>>>>>>>>   object(ReflectionProperty)#5 (2) {
>>>>>>>>>>     ["name"]=>
>>>>>>>>>>     string(3) "baz"
>>>>>>>>>>     ["class"]=>
>>>>>>>>>>     string(3) "Foo"
>>>>>>>>>>   }
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  On Mon, Apr 4, 2011 at 9:26 AM, Gustavo Adrian <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>  Hi,
>>>>>>>>>>>
>>>>>>>>>>> I've finally found the issue of this one. It seems to be a bug of
>>>>>>>>>>> PHP:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> http://stackoverflow.com/questions/1495600/reflectionclassgetproperty-for-a-private-property-in-an-inhertited-class
>>>>>>>>>>>
>>>>>>>>>>> http://bugs.php.net/bug.php?id=47808
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I'm using Ubuntu with PHP 5.3.3.
>>>>>>>>>>>
>>>>>>>>>>> What should we do with this one? it's a very annoying bug while
>>>>>>>>>>> trying to update an ACL with Field ACEs. Changing the visibility of
>>>>>>>>>>> properties ("id" in this case) on the Entry class from private to 
>>>>>>>>>>> protected
>>>>>>>>>>> fixes the issue. I don't know if there's another case like this one 
>>>>>>>>>>> on other
>>>>>>>>>>> properties.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 2011/3/30 Gustavo Adrian <[email protected]>
>>>>>>>>>>>
>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>
>>>>>>>>>>>> I had random exceptions about serialization with the Entry
>>>>>>>>>>>> class. I've noticed all its properties are private. Also, 
>>>>>>>>>>>> FieldEntry extends
>>>>>>>>>>>> from Entry, so when I want to do something like this to delete a 
>>>>>>>>>>>> FieldEntry:
>>>>>>>>>>>>
>>>>>>>>>>>>         $classFieldACEs = $acl->getClassFieldACEs( $field );
>>>>>>>>>>>>
>>>>>>>>>>>>         // $classFieldACE is the ACE I want to delete
>>>>>>>>>>>>         foreach ( $classFieldACEs as $index => $classFieldACE )
>>>>>>>>>>>>         {
>>>>>>>>>>>>             if ( $ace->getId() === $classFieldACE->getId() )
>>>>>>>>>>>>             {
>>>>>>>>>>>>                 $acl->deleteClassACE( $index );
>>>>>>>>>>>>
>>>>>>>>>>>>                 break;
>>>>>>>>>>>>             }
>>>>>>>>>>>>         }
>>>>>>>>>>>>
>>>>>>>>>>>> Here I get an "Property
>>>>>>>>>>>> Symfony\Component\Security\Acl\Domain\FieldEntry::$id does not 
>>>>>>>>>>>> exist"
>>>>>>>>>>>> exception.
>>>>>>>>>>>>
>>>>>>>>>>>> Should we change the visibility of these properties to
>>>>>>>>>>>> protected?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks in advance!
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  --
>>>>>>>>>>> If you want to report a vulnerability issue on symfony, please
>>>>>>>>>>> send it to security at symfony-project.com
>>>>>>>>>>>
>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>> Google
>>>>>>>>>>> Groups "symfony developers" group.
>>>>>>>>>>> To post to this group, send email to
>>>>>>>>>>> [email protected]
>>>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>>>> [email protected]
>>>>>>>>>>> For more options, visit this group at
>>>>>>>>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  --
>>>>>>>>>> If you want to report a vulnerability issue on symfony, please
>>>>>>>>>> send it to security at symfony-project.com
>>>>>>>>>>
>>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>>> Groups "symfony developers" group.
>>>>>>>>>> To post to this group, send email to
>>>>>>>>>> [email protected]
>>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>>> [email protected]
>>>>>>>>>> For more options, visit this group at
>>>>>>>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  --
>>>>>>>>> If you want to report a vulnerability issue on symfony, please send
>>>>>>>>> it to security at symfony-project.com
>>>>>>>>>
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "symfony developers" group.
>>>>>>>>> To post to this group, send email to [email protected]
>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>> [email protected]
>>>>>>>>> For more options, visit this group at
>>>>>>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>>>>>>
>>>>>>>>
>>>>>>>>  --
>>>>>>>> If you want to report a vulnerability issue on symfony, please send
>>>>>>>> it to security at symfony-project.com
>>>>>>>>
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "symfony developers" group.
>>>>>>>> To post to this group, send email to [email protected]
>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>> [email protected]
>>>>>>>> For more options, visit this group at
>>>>>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>>>>>
>>>>>>>
>>>>>>>  --
>>>>>>> If you want to report a vulnerability issue on symfony, please send
>>>>>>> it to security at symfony-project.com
>>>>>>>
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "symfony developers" group.
>>>>>>> To post to this group, send email to [email protected]
>>>>>>> To unsubscribe from this group, send email to
>>>>>>> [email protected]
>>>>>>> For more options, visit this group at
>>>>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>>>>
>>>>>>
>>>>>>  --
>>>>>> If you want to report a vulnerability issue on symfony, please send it
>>>>>> to security at symfony-project.com
>>>>>>
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "symfony developers" group.
>>>>>> To post to this group, send email to [email protected]
>>>>>> To unsubscribe from this group, send email to
>>>>>> [email protected]
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>>>
>>>>>
>>>>>  --
>>>>> If you want to report a vulnerability issue on symfony, please send it
>>>>> to security at symfony-project.com
>>>>>
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "symfony developers" group.
>>>>> To post to this group, send email to [email protected]
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>>
>>>>
>>>>  --
>>>> If you want to report a vulnerability issue on symfony, please send it
>>>> to security at symfony-project.com
>>>>
>>>> You received this message because you are subscribed to the Google
>>>> Groups "symfony developers" group.
>>>> To post to this group, send email to [email protected]
>>>> To unsubscribe from this group, send email to
>>>> [email protected]
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/symfony-devs?hl=en
>>>>
>>>
>>>  --
>>> If you want to report a vulnerability issue on symfony, please send it to
>>> security at symfony-project.com
>>>
>>> You received this message because you are subscribed to the Google
>>> Groups "symfony developers" group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> For more options, visit this group at
>>> http://groups.google.com/group/symfony-devs?hl=en
>>>
>>
>>  --
>> If you want to report a vulnerability issue on symfony, please send it to
>> security at symfony-project.com
>>
>> You received this message because you are subscribed to the Google
>> Groups "symfony developers" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/symfony-devs?hl=en
>>
>
>  --
> If you want to report a vulnerability issue on symfony, please send it to
> security at symfony-project.com
>
> You received this message because you are subscribed to the Google
> Groups "symfony developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/symfony-devs?hl=en
>

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en

Reply via email to