2010-02-15 6 views
3

J'ai une fonction qui obtient une classe passée en paramètre. Je voudrais obtenir le nom de classe de la classe passée en tant que chaîne.PHP: Récupère le nom de la classe de var passée?

J'ai essayé de mettre cette méthode dans la classe passée:

function getClassName() 
    { 
     return __CLASS__; 
    } 

mais si la classe est étendue, je supposais ce renverrait le nom de la sous-classe, mais il retourne toujours le nom de la super classe que je trouve un peu bizarre.

Donc, étant donné que $ var est passé à une fonction en tant que paramètre, existe-t-il un moyen d'obtenir une chaîne du nom de la classe?

Merci!

Répondre

11

Voir get_class, cela devrait être exactement ce que vous essayez d'atteindre.

$class_name = get_class($object); 
1

__ CLASSE __ avec retour le nom de la classe la méthode est mise en œuvre dans

Si vous souhaitez obtenir le nom de la classe d'un objet passé, vous pouvez alors utiliser:.

get_class($param); 

En outre, si vous utilisez PHP5, les classes de réflexion fournies sont également utiles.

0

Utilisation get_class:

$className = get_class($object); 
0

Droit des 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" 
0

vous pouvez aussi ajouter une méthode dans la classe passé (s) retourner ceci:

var_dump (get_called_class());

11

façon comment Simplest obtenir le nom de classe sans espace de noms est:

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

Ou avec preg_replace

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