Each PHP minor version gets a batch of deprecations, warnings that something will stop working in a later release. This RFC, started by Daniel Scherzer, collects the deprecations for PHP 8.7. Unless an item says otherwise, each one would be removed in PHP 9.

So far the list has two items, and both deal with passing the wrong kind of value to a class check.

is_a() with a value that isn't a string or object

is_a() checks whether an object or class name is a given class or interface. The first argument should be an object or a class name, but PHP accepts anything, and for other values it always returns false:

is_a(5, "int");     // always false
is_a(true, "bool"); // always false

The RFC would deprecate passing anything that isn't a string or an object, with a notice like this:

Deprecated: Calling is_a() with $object_or_class of type %s is deprecated.

If you don't know a value's type ahead of time, the RFC suggests calling is_object() first.

is_subclass_of() with a value that isn't a string or object

is_subclass_of() works like is_a(), except it returns false when the class is the exact same one. It has the same problem: pass 5 or true, and you always get false.

The RFC would deprecate this case too, with a matching notice. It also points out that subclasses only exist for objects, so the check makes no sense for other values.

What it means for existing code

If you pass numbers, booleans, arrays or null to either function, you'd start seeing deprecation notices in PHP 8.7. The result wouldn't change yet, because those calls already return false, and checking with is_object() first clears the notice.

Each item gets its own vote, and each needs a two-thirds majority to pass.

Where it stands

The RFC is a draft, created on August 12, 2026, and discussion on the mailing list hasn't started yet. The list may still grow, since the page keeps a blank example entry for new items.