#21601 closed defect (bug) (wontfix)
Introduce WP_User::has_prop_val() magic method
Reported by: | wpsmith | Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | |
Component: | Users | Keywords: | has-patch 2nd-opinion dev-feedback |
Focuses: | Cc: |
Description (last modified by )
When using WP_User::has_prop( $key ), I believe the expectation is that if the property has a value, it would return true. However, it is returning true if the key is set or if the key exists. So if one uses it like WP_User::has_prop( 'user_url' ), it returns true regardless, simply because that's a standard WordPress user field.
So, keeping that functionality for checking even custom properties, I thought it may be beneficial to add a magic method for checking whether a property is set ( WP_User::has_prop( $key ) ) and has a value ( WP_User::get( $key ) ).
Thus, this ticket desires to add two methods: has_prop_val()
& __hasval()
Attachments (1)
Change History (6)
#2
@
12 years ago
This comes down to an inconsistency in PHP, where __isset()
is called by both isset() and empty():
$user->user_url = ''; isset( $user->user_url ); // true !empty( $user->user_url ); // false
For explicit calls, you have to be more verbose:
$user->user_url = ''; $user->has_prop( 'user_url' ); // true $user->has_prop( 'user_url' ) && !empty( $user->get( 'user_url' ); // false
So, has_prop_val() sort of makes sense, but drop __hasval()
.
Magic methods aren't something you can arbitrarily create. They're a predefined set of special constructs in the PHP language.
__hasval()
is not one of them: http://php.net/manual/en/language.oop5.magic.php