4

I have a function that gets a class passed to it as a parameter. I would like to get the class name of the passed class as a string.

I tried putting this method in the passed class:

function getClassName()
    {
        return __CLASS__;
    }

but if the class is extended I assumed this would return the name of the subclass but it still returns the name of the super class which I find kind of odd.

So given a $var passed to a function as a parameter, is there a way to get a string of the class name?

Thanks!!

6 Answers 6

12

See get_class, that should be exactly what you're trying to achieve.

$class_name = get_class($object);
Sign up to request clarification or add additional context in comments.

Comments

11

Simplest way how to get Class name without namespace is:

$class = explode('\\', get_called_class());
echo end($class);

Or with preg_replace

echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());

Comments

1

__ CLASS __ with return the name of the class the method is implemented in.

If you want to get the class name of an object passed then you can use:

get_class($param);

Also, if you're using PHP5 then the Reflection classes provided are also useful.

Comments

0

Use get_class:

$className = get_class($object);

Comments

0

Straight from the php docs: http://uk.php.net/manual/en/function.get-class.php

<?php

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

class foo extends bar {
}

new foo;

?>

The above example will output:

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

Comments

0

you could also add a method into the passed class(es) returning this:

var_dump(get_called_class());

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.