2010-05-13 15 views
8

Comment puis-je obtenir le nom du modèle à partir de l'instance du modèle. Pour e.x.Obtention du nom de modèle à partir de l'instance du modèle YII

$ model = new État;

ici, L'état est le modèle $ modèle est instance de modèle d'état.

Je souhaite obtenir le nom du modèle i.e State à partir de $ model i.e instance de modèle.

+0

Exemple de travail avec l'explication: http://code2real.blogspot.in/2015/06/yii-11-get-current-model-name. html – Pupil

Répondre

11

get_class() - Retourne le nom de la classe d'un objet

get_class string ([objet $ object])

par conséquent vous l'utilisez comme ceci: $ modelname = get_cl ass ($ modelinstance);

-> renvoie une chaîne.

+2

Je préfère de loin cette méthode. Il n'est pas nécessaire d'étendre le modèle car get_class est intégré dans php http://php.net/manual/fr/function.get-class.php – sdjuan

+0

Celui-ci est plus efficace, dans le cas où vous avez 12 modèles, nous ne pouvons pas écrire 12 fonctions pour obtenir leurs noms. – Pupil

14

ajouter cette méthode à votre état classe

public function getModelName() 
{ 
    return __CLASS__; 
} 

et l'appeler comme ceci:

$model = new State(); 
echo $model->getModelName(); 
+0

Thanx Wolax. Cela fonctionne –

+0

Salut @ Wager, Aussi je préfère toninoj plus, pourquoi n'acceptez-vous pas une réponse aussi vrai en ce moment? – HPM

1

Utilisez cette méthode PHP: get_class

print get_class($object); 
0
<?php 

class Item extends CActiveRecord 
{ 

    public function getBaseModelName() 
    { 
     return __CLASS__; 
    } 

    public function getCalledClassName() 
    { 
     return get_called_class(); 
    } 
} 

class Product extends Item {} 

class Service extends Item {} 

class ProductController extends CController 
{ 
    $model = new Product; 
    echo $model->baseModelName; // Item 
} 

class ServiceController extends CController 
{ 
    $model = new Service; 

    echo $model->calledClassName; // Service 
    echo get_class($model); // Service 
}