Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuáles son los usos de la capa lógica Thinkphp?

¿Cuáles son los usos de la capa lógica Thinkphp?

La función D de ThinkPHP es muy poderosa. En términos generales, el uso más común del método D es crear instancias de clases de modelo personalizadas para implementar operaciones relacionadas con la base de datos, pero la función del método D es mucho más que eso. utilizado en la capa lógica, instanciación de clase personalizada para la capa de servicio.

El formato de llamada es el siguiente:

D('[Project://][Grouping/]Model', 'Model Layer Name')

Este artículo no lo presentará. El uso general del método D generalmente se usa para crear una instancia del UserModel en D ('Usuario').

Creamos una carpeta Lógica o Servicio en LIB_PATH, que está al mismo nivel que las carpetas Controlador (llamada Acción en versiones anteriores) y Modelo.

Capa lógica del modelo jerárquico ThinkPHP

En la carpeta Lógica, cree un nuevo archivo UserLogic.class.php como la clase de la lógica empresarial del usuario y luego cree una instancia de la clase, puede use el método D que viene con tp, como se muestra a continuación:

D('User', 'Logic'

Esto llamará a UserLogic.class en la carpeta Logic .php); archivar y crear una instancia de la clase UserLogic, lo que técnicamente significa que el método D admite la división en modelos y la creación de instancias de clases personalizadas. El modelo jerárquico aquí se refiere a directorios como Logic y Service.

Nota: El modelo en capas ha sido compatible desde ThinkPHP 3.1.

Echemos un vistazo al código fuente del método ThinkPHP D:

/**

* La función D se utiliza para crear una instancia del formato de clase del modelo. [Recurso:/ /][Módulo/]Modelo

* @param string $name Dirección del recurso

* @param string $layer Nombre de la capa del modelo

* @return Modelo

*/

function D($name='', $layer='') {

if(empty($name)) devolver nuevo Think\ Model;

static $_ model = array();

$layer = $layer?$layer: C('DEFAULT_M_LAYER');

if ( isset($_model[$nombre.$capa]))

Devuelve $_model[$nombre.capa];

$clase = parse_res_name($nombre, $ capa);

if(class_exists($class)) {

$model = new $class(basename($name));

}elseif( false === strpos($name,'/')){

// Carga automáticamente el modelo en el módulo público ***

$class = '\\Common\ \'.$capa .'\\'.$nombre.$capa;

$model = class_exists($clase)? nueva $clase($nombre): nueva Think\Model($nombre);

}else {

Think\Log::record('La creación de instancias del método D no encontró la clase de modelo'.$class, Think\Log::NOTICE);

$modelo = new Think\Model(nombrebase($nombre));

}

$_modelo[$nombre.$capa] = $modelo;

return $ model;

}

Por supuesto, también podemos anular un método para llamar a una clase personalizada en el modelo jerárquico, por ejemplo

/**

* La capa de lógica de negocios llama a esta función

* @param string $name nombre del modelo de negocio

* @return object<

* /

función lógica($nombre){

estática $_obj=array();

$capa='Lógica';

$class=$nombre.$capa;

if(isset($_obj[$nombre])){

return $_obj[$nombre] ;

}

requiere LIB_PATH."{$l

ayer}/".$class.'.class.php';

$_obj[$nombre] = new $clase($nombre);

return $_obj[$nombre ];

}

Escríbalo en la función tp public ****, de modo que cuando llame al modelo jerárquico lógico en la clase personalizada (en realidad, esta carpeta) pueda usarlo. este método directamente: Logic('Usuario') lo hará