2010-05-13 14 views
8

¿Cómo puedo obtener el nombre del modelo a partir de la instancia del modelo? Para e.x.Obtener el nombre del modelo de la instancia del modelo YII

$ model = new State;

aquí, El estado es el modelo $ modelo es State model instance.

Deseo obtener el nombre del modelo, es decir, Estado desde $ modelo, es decir, instancia del modelo.

+0

Ejemplo de trabajo con la explicación: http://code2real.blogspot.in/2015/06/yii-11-get-current-model-name. html – Pupil

Respuesta

11

get_class() - Devuelve el nombre de la clase de un objeto

get_class de cuerda ([object $ object])

por lo tanto, lo usa así: $ modelname = get_cl culo ($ modelinstance);

-> devuelve una cadena.

+2

Yo prefiero este método. No es necesario ampliar el modelo ya que get_class está integrado en php http://php.net/manual/en/function.get-class.php – sdjuan

+0

Este es más eficiente, en caso de que tenga 12 modelos, no podemos escribir 12 funciones para obtener sus nombres. – Pupil

14

añadir este método para su Clase Estado

public function getModelName() 
{ 
    return __CLASS__; 
} 

y lo llaman así:

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

Thanx Wolax. Funciona –

+0

Hola @Wager, También prefiero toninoj más, ¿por qué no aceptas una respuesta como verdadera en este momento? – HPM

1

Utilice este método 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 
} 
Cuestiones relacionadas