[wp-trac] [WordPress Trac] #25672: is_a() causing errors with get_users() (was: WordPress › Support » How-To and Troubleshooting is_a() causing errors with get_users())
WordPress Trac
noreply at wordpress.org
Wed Oct 23 22:21:19 UTC 2013
#25672: is_a() causing errors with get_users()
------------------------------+------------------------------
Reporter: dgdax | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Warnings/Notices | Version: 3.6.1
Severity: normal | Resolution:
Keywords: needs-patch |
------------------------------+------------------------------
Changes (by SergeyBiryukov):
* component: General => Warnings/Notices
Old description:
> (copy of post on support forum : [http://wordpress.org/support/topic
> /is_a-causing-errors-with-get_users?replies=2#post-4795246] )
>
> Running WordPress with Yii framework sub-site.
> Use of is_a() function in capabilities.php (line 486) is causing errors,
> since causes instantiation of a WP_User object - which is unknown to Yii.
>
> is_a() was deprecated in PHP 5.0.0 - but did not cause this problem until
> PHP 5.3.7, when its behaviour changed: if first argument is not an
> object, __autoload() is triggered. (see php manual:
> [http://www.php.net/manual/en/function.is-a.php])
>
> Example: error if I use get_users() with the 'all_with_meta' option.
>
> Cause: is_a() called with non-object ($id)
>
> This is at least inefficient - and in my situation fatal! Even when it
> works, this generates unnecessary log warnings in many cases (see all the
> other posts)
>
> Solution:
> replace:
> {{{
> if ( is_a( $id, 'WP_User' ))
> }}}
> with:
> {{{
> if ( $id instanceof WP_User )
> }}}
>
> ... or equivalent, wherever is_a() may be called with a non-object.
>
> Please can you fix this for increased compatibility in future versions -
> both with PHP and all the other plugins!
New description:
(copy of post on support forum : [http://wordpress.org/support/topic/is_a-
causing-errors-with-get_users?replies=2#post-4795246] )
Running WordPress with Yii framework sub-site.
Use of `is_a()` function in capabilities.php (line 486) is causing errors,
since causes instantiation of a WP_User object - which is unknown to Yii.
`is_a()` was deprecated in PHP 5.0.0 - but did not cause this problem
until PHP 5.3.7, when its behaviour changed: if first argument is not an
object, `__autoload()` is triggered. (see php manual:
[http://www.php.net/manual/en/function.is-a.php])
Example: error if I use `get_users()` with the 'all_with_meta' option.
Cause: `is_a()` called with non-object ($id)
This is at least inefficient - and in my situation fatal! Even when it
works, this generates unnecessary log warnings in many cases (see all the
other posts)
Solution:
replace:
{{{
if ( is_a( $id, 'WP_User' ))
}}}
with:
{{{
if ( $id instanceof WP_User )
}}}
... or equivalent, wherever `is_a()` may be called with a non-object.
Please can you fix this for increased compatibility in future versions -
both with PHP and all the other plugins!
--
--
Ticket URL: <http://core.trac.wordpress.org/ticket/25672#comment:3>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list