Me preguntaba cuándo necesita usar module_load_include()
o require_once
para incluir archivos que se encuentran dentro de su módulo.module_load_include() vs require_once
Respuesta
La clave de que la función Drupal module_load_include()
supera el estándar PHP require_once
es que hace referencia a la ruta del módulo al ubicar el archivo, usando drupal_get_path()
.
Si tuviera que usar require_once
, tendría que hacer este bit usted mismo.
La otra cosa que hace es verificar que el archivo exista antes de tratar de incluirlo, lo cual es útil para evitar accidentes fatales, pero no tiene sentido si va a obtener uno de todos modos cuando intente llamar a las funciones que intenté incluir Sin embargo, esto es útil para permitirle producir errores más significativos.
Al final del día, module_load_include()
es en realidad una pequeña función de utilidad proporcionada por Drupal para facilitar las cosas por sí mismos. Si sabe dónde se encuentra el archivo y sabe que existe allí, hay muy poca necesidad de utilizar la función Drupal; también puede usar require_once
.
Para que la explicación sea más explícita, su módulo podría instalarse en sites/all/modules /, sites/all/modules/contrib /, sites/site.com/modules, etc. module_load_include() sabrá dónde está instalado su módulo y usa la ruta correcta – Berdir
@Berdir: absolutamente correcto. Por otro lado, si lo está incluyendo desde otro archivo dentro del mismo módulo, solo necesita conocer la ruta relativa, por lo que 'require_once' sería suficiente. 'module_load_include()' normalmente se usaría mejor cuando se incluye un archivo de módulo desde fuera de ese módulo (es decir, como debe ser hecho por el código en el núcleo de Drupal). Sin embargo, estás en lo cierto; ambos tienen su lugar. – Spudley
@Spudley la ruta relativa siempre comienza desde el archivo solicitado inicialmente, que es index.php. Para incluir realmente un archivo de su propio módulo, tendría que usar un truco como dirname (\ __ FILE__) para obtener la ubicación de su archivo .module. – Berdir
module_load_include requiere que Drupal se cargue por completo (Totalmente Bootstrapped).
sintaxis: module_load_include ($ type, $ module, $ name = NULL);
Ej: module_load_include('inc','module_name','file_name');
si quieres utilizar esta función en un contexto global a continuación, utilizar require_once
require_once no lo necesita.
Ej: require_once DRUPAL_ROOT . '/path/file' .
- 1. PHP: ¿es mejor usar require_once ('filename.php') o require_once 'filename.php';
- 2. Require_once PHP Error
- 3. require_once() o die() no funciona
- 4. include, include_once, require or require_once?
- 5. Asignación de contenido a una variable con include/require_once
- 6. ¿Hay un equivalente de ASP MVC para require_once() de PHP?
- 7. PHP require_once no pudo abrir el permiso de transmisión denegado
- 8. ¿Cómo funciona la resolución de ruta en require_once?
- 9. ¿Cuál es el alcance de require_once en PHP?
- 10. PHP incluye vs include_once (velocidad)
- 11. Use Require_once() para incluir las variables de conexión de la base de datos correctamente
- 12. ¿Por qué require_once hace eco de todo el contenido del archivo?
- 13. ¿Hay alguna forma de establecer explícitamente el alcance de require_once() en global?
- 14. Advertencia: require_once(): No es seguro confiar en el timezone settingserror del sistema en PHP
- 15. J2ME VS Android VS iPhone VS Symbian VS Windows CE
- 16. TagSoup vs Jsoup vs HTML Analizador vs vs HotSax
- 17. 'método' vs. 'mensaje' vs. 'función' vs. '???'
- 18. ACE vs Boost vs Poco vs wxWidgets
- 19. VS 2008 vs VS 2008 Express
- 20. Atomikos vs JOTM vs Bitronix vs?
- 21. Acumular vs fold vs reducir vs compress
- 22. .NET vs ASP.NET vs CLR vs ASP
- 23. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - FIABILIDAD
- 24. método vs función vs procedimiento vs clase?
- 25. Rhino simulacro vs Typemock vs JustMock vs
- 26. inline vs __inline vs __inline__ vs __forceinline?
- 27. Exec vs vs ExecWait ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs vs ExecDos ExeCmd
- 28. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, ¿qué tienen en común?
- 29. Crystalspace vs. Irrlicht vs. .....?
- 30. NetSqlAzMan vs AzMan vs (?????)
Drupal es de código abierto, se puede hacer una verificación de cómo se escribe esta función – ajreal
@ajreal: Todavía es una pregunta legítima. Incluso la [página de manual de Drupal] (http://api.drupal.org/api/drupal/includes--module.inc/function/module_load_include/6) no da un caso definitivo para usarla en 'require_once'. De hecho, se formuló una pregunta similar en los comentarios en esa página, y la respuesta fue "es más Drupal-ish usarlo", que no es realmente una respuesta muy útil cuando estás tratando de averiguar qué es lo mejor. practicar en cualquier situación dada. – Spudley
@ajreal: Ahora lo que es, solo me pregunto si necesitas usar module_load_include si quieres incluir archivos dentro del mismo módulo. – Frederic