get_class

Returns the name of the class of an object

&reftitle.description; `string` `get_class` `object` `object`

Gets the name of the class of the given `object`.

&reftitle.parameters;

`object`

- The tested object.

  Explicitly passing &null; as the `object` is no longer allowed as of PHP 7.2.0 and emits an `E_WARNING`. As of PHP 8.0.0, a `TypeError` is emitted when &null; is used.

&reftitle.returnvalues;

Returns the name of the class of which `object` is an instance.

If the `object` is an instance of a class which exists in a namespace, the qualified namespaced name of that class is returned.

&reftitle.errors;

If `get_class` is called with anything other than an object, `TypeError` is raised. Prior to PHP 8.0.0, an `E_WARNING` level error was raised.

If `get_class` is called with no arguments from outside a class, an `Error` is thrown. Prior to PHP 8.0.0, an `E_WARNING` level error was raised.

&reftitle.changelog;

&Version; | &Description;
8.3.0 | Calling `get_class` without an argument now emits an `E_DEPRECATED` warning; previously, calling this function inside a class returned the name of that class.
8.0.0 | Calling this function from outside a class, without any arguments, will now throw an `Error`. Previously, an `E_WARNING` was raised and the function returned &false;.
7.2.0 | Prior to this version the default value for `object` was &null; and it had the same effect as not passing any value. Now &null; has been removed as the default value for `object`, and is no longer a valid input.

&reftitle.examples;

### Using `get_class`

    <?php

    class foo {
        function name()
        {
            echo "My name is " , get_class($this) , "\n";
        }
    }

    // create an object
    $bar = new foo();

    // external call
    echo "Its name is " , get_class($bar) , "\n";

    // internal call
    $bar->name();

    ?>

&example.outputs;

    Its name is foo
    My name is foo

### Using `get_class` in superclass

    <?php

    abstract class bar {
        public function __construct()
        {
            var_dump(get_class($this));
            var_dump(get_class());
        }
    }

    class foo extends bar {
    }

    new foo;

    ?>

&example.outputs;

    string(3) "foo"
    string(3) "bar"

### Using `get_class` with namespaced classes

    <?php

    namespace Foo\Bar;

    class Baz {
        public function __construct()
        {

        }
    }

    $baz = new \Foo\Bar\Baz;

    var_dump(get_class($baz));
    ?>

&example.outputs;

    string(11) "Foo\Bar\Baz"

&reftitle.seealso;

- `get_called_class`
- `get_parent_class`
- `gettype`
- `get_debug_type`
- `is_subclass_of`