it-swarm-es.tech

La mejor manera de incluir la clase auxiliar en el subcontrolador: require_once o JLoader

He creado un archivo auxiliar test.php De la siguiente manera:

administrador/componentes/com_compname/helpers/test.php

class TestHelper{
   //class methods
}

En controllers/subcontrollername.php Podemos usar cualquiera de ellos:

1) require_once(JPATH_COMPONENT.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'test.php' );

2) JLoader::register('TestHelper','/path/to/test.php');

Pero me pregunto cuál de los dos es apropiado y por qué o si esto importa o no. ¿Alguien puede guiarme en esto?.

6
Liz.

En realidad, JLoader::register('TestHelper','/path/to/test.php'); no carga el archivo, solo lo registra para poder cargar automáticamente el archivo si se crea una instancia de la clase.

Lo requiere al instante, desea utilizar:

JLoader::import('TestHelper','/path/to/test.php');

Nota: para esto, su nombre de archivo debe ser TestHelper.php.

que lo hará

  1. include_once El archivo si existe (con require_once Obtendrías PHP error, si no existe. Ahora obtendrías un error bastante Joomla!) .

  2. Recordará que este archivo ya está cargado y no volverá a include_once. Esto da como resultado una ganancia de rendimiento menor.

que no

  1. JLoader::register() su clase, por lo que no puede usar JLoader::load() más tarde.

En general:

  1. Aumento de rendimiento menor.
  2. Es una buena práctica seguir el estilo de codificación del marco (aunque Joomla! No lo hace en todas partes).
  3. Puede usar la notación de puntos para el nombre de la clase (no aplicable para las clases *Helper).

Ejemplo de notación de puntos

jimport('sub.path.classname','/path/to/')

sería el archivo include_once en /path/to/sub/path/classname.php

NOTA

JLoader::import('TestHelper','/path/to/test.php')

tiene taquigrafía

jimport('TestHelper','/path/to/test.php')

10
Rene Korss