¿CodeIgniter admite Namespace?Espacio de nombres en PHP CodeIgniter Framework
Respuesta
Los espacios de nombres son compatibles con php y no con el framework (codeigniter en su caso). Si utiliza espacios de nombres versión PHP debe ser> = 5.3.0 CodeIgniter espacios de nombres de uso dosen`t porque está escrito para apoyar PHP 4.
Aquí hay una solución alternativa encontrada: http://porquero.blogspot.com/2012/03/codeigniter-hmvc-namespaces-part-1.html –
Cómo conseguir espacios de nombres para trabajar en CodeIgniter
realidad , puede hacer que los espacios de nombres funcionen junto con las rutas relativas en sus modelos de aplicaciones. Esta modificación hace que los modelos de carga mucho más fácil y también le permite tener las interfaces ...
Añadir esto al final de su application/config/config.php
spl_autoload_extensions('.php'); // Only Autoload PHP Files
spl_autoload_register(function($classname){
if(strpos($classname,'\\') !== false){
// Namespaced Classes
$classfile = strtolower(str_replace('\\','/',$classname));
if($classname[0] !== '/'){
$classfile = APPPATH.'models/'.$classfile.'.php';
}
require($classfile);
} else if(strpos($classname,'interface') !== false){
// Interfaces
strtolower($classname);
require('application/interfaces/'.$classname.'.php');
}
});
Ejemplo namespaced Clase:
<?php
// File: application/models/foo/bar.php
namespace foo;
class Bar extends \CI_Model implements \Awesome_interface {
public $foobar;
public function __construct() {
return parent::__construct();
}
public function getFoobar() {
return $this->foobar;
}
public function setFoobar($val) {
$this->foobar = $val;
}
}
Ejemplo de instancias de clase en su código en algún lugar:
NOTA IMPORTANTE: NO USE CONSTRUIDO EN CI_Loader (Ej: $ this-> load-> model();)
// This will Autoload Your Namespaced Class
$example = new foo\Bar();
o, alternativamente, en la parte superior de su clase PHP (por ejemplo: controlador, otro modelo), se puede hacer esto ...
<?php
...
use foo\Bar as FooBar;
...
// Then you can just do this
$example = new FooBar();
Ejemplo de interfaz:
<?php
// File: application/interfaces/awesome_interface.php
interface Awesome_interface {
public function getFoobar();
}
después de un par de cambios en las clases de métodos 'spl_autoload_register' cargadas sin error. Thx –
De nada. –
@TimothyPerez ¿Hay alguna otra manera de cargar bibliotecas que tengan espacio de nombre en CodeIgniter 3? – sam
Puede consultar esto: yidas/codeigniter-psr4-autoload
Th e define lib app
como raíz de la aplicación CI de manera que cada clases de aplicación podrían ser cargados con PSR-4 espacio de nombres:
\app\libraries\MemberService::auth();
\app\helpers\ArrayHelper::indexBy($input);
\app\widgets\StatWidget::run();
class Blog_model extends app\core\BaseModel {}
class Car_model implements app\contracts\CarInterface {}
Código de ejemplo para la definición de una clase:
<?php
namespace app\helpers;
class ArrayHelper
{
public static function indexBy($input) {}
}
- 1. Restablecer un espacio de nombres en PHP?
- 2. Framework de CodeIgniter PHP en el proyecto comercial
- 3. ¿Cómo puedo mostrar imágenes con el framework php de Codeigniter?
- 4. PHP, nueva clase de variable en el espacio de nombres
- 5. Autenticación REST en PHP (CodeIgniter)
- 6. ¿Debería el espacio de nombres funciones globales en PHP?
- 7. Espacio de nombres PHP con nombre de clase dinámico
- 8. PHP DOM XML - Crear múltiples atributos de espacio de nombres?
- 9. PHP Framework Overhead
- 10. ¿Hay un atajo de espacio de nombres PHP para esto?
- 11. :: sin espacio de nombres
- 12. PHP: Los espacios de nombres en un único archivo con un espacio de nombres global
- 13. JavaScript Espacio de nombres
- 14. Incapaz espacio de nombres complemento con los PHP SimpleXML
- 15. Espacio de nombres de System.Data.OracleClient suspendido?
- 16. cómo usar el espacio de nombres Yii
- 17. Regla de espacio de nombres
- 18. problemas de espacio de nombres
- 19. WCF y espacio de nombres System.Configuration
- 20. PHPUnit getMock() con espacio de nombres
- 21. Constante de espacio de nombres en C#
- 22. Aliasing de espacio de nombres en F #?
- 23. Función de espacio de nombres en jQuery
- 24. Problema de espacio de nombres en C++
- 25. SelectSingleNode sin espacio de nombres
- 26. Manejando modelos de espacio de nombres (clases) en el espacio de nombres
- 27. "plantillas" un espacio de nombres
- 28. Anónimo Espacio de nombres ambigüedad
- 29. C++ Espacio de nombres pregunta
- 30. Indefinido CLR espacio de nombres
Una mejor pregunta es ¿por qué las necesita? En general, código de "espacio de nombres" con prefijos o sufijos. Por ejemplo, $ this-> user_lib o $ this-> user_m significa que no chocarás con nada más. REALMENTE me gustaría que CI admita Controller_Foo, pero eso no sucederá pronto: -/ –