Cargando archivos de proveedores en CakePHP 2.0
cakephp-2.0 (3)
Actualmente estoy actualizando uno de nuestros proyectos a CakePHP 2.0. Lamentablemente, la "primera línea" de código crea problemas, y no puedo encontrar una solución a ese problema.
En CakePHP 1.3 tuve una App::import("Vendor", "facebook");
declaración justo antes de que se AppController
clase AppController
. El archivo al que se hace referencia se encuentra en /app/vendors/facebook/facebook.php
(y se incluye a sí mismo el archivo base_facebook.php
).
Intenté muchas formas diferentes de incluir el archivo ahora en CakePHP 2.0 de acuerdo con el nombre de archivo y la carga de clases que se describen aquí: Nombrar archivos y cargar cargas en clase en CakePHP 2.0
Cambié el nombre de la ruta a la app/Vendor/Facebook/Facebook.php
, o a la app/Vendor/Facebook/facebook.php
, y traté de seguir los siguientes métodos:
App::uses("Facebook", "Vendor/Facebook");
App::uses("Facebook", "Facebook");
App::uses("Facebook", "Vendor/Facebook/Facebook.php");
App::uses("Facebook", "Vendor");
¿Alguien ha encontrado una forma de referenciar un archivo de proveedor todavía? Debido a la carga diferida, los métodos anteriores no disparan un error / advertencia, por lo que es un poco molesto depurar esto ...
Asuma que su archivo de proveedor está ubicado /app/vendors/facebook/facebook.php
aquí.
La siguiente línea debería hacer lo mismo que App :: import () en la versión anterior de CakePHP
require_once(ROOT . DS . ''app'' . DS .''Vendor'' . DS . ''facebook'' . DS . ''src'' . DS . ''facebook.php'');
$facebookApi = new facebook();
La documentación de Cake sugiere utilizar App :: uses () including-files-with-app-import
Sin embargo, también indica si tienes un complemento no estándar para usar App :: Import ()
App::import(''Vendor'', ''phpQuery'', array(''file'' => ''bariew/phpquery/phpQuery/phpQuery.php''));
Los vendedores no pueden cargarse usando App::uses()
en CakePHP, esto es porque CakePHP no puede esperar que las bibliotecas externas sigan los mismos estándares con respecto a la asignación de nombres de carpetas y archivos. Aún puede usar App::import(''Vendor'', ...)
como lo hizo en la versión 1.3 del framework.
Ahora, usar App::import()
para vendedores es algo tonto, si lo piensas bien. Es solo un contenedor costoso, prolijo y muy tonto para require_once()
.
En 2.0, realmente alentamos a las personas a utilizar require o require_once para sus bibliotecas de proveedores. Puede obtener la ubicación de la carpeta del proveedor usando App::path(''Vendor'')
o simplemente APP . ''Vendor'' . DS
APP . ''Vendor'' . DS
APP . ''Vendor'' . DS
.