¿Cuáles son los usos de la capa lógica Thinkphp?
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); p>
$modelo = new Think\Model(nombrebase($nombre));
}
$_modelo[$nombre.$capa] = $modelo; p>
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< p>
* /
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á