[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