Ver Mensaje Individual
  #22 (permalink)  
Antiguo 29/06/2012, 06:35
salomon26
 
Fecha de Ingreso: mayo-2012
Ubicación: En mi casa
Mensajes: 22
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: ¿Desaconsejado el uso de variables globales?

Cita:
Iniciado por GatorV Ver Mensaje
Precisamente, si vas a usar inyección de dependencias es mejor usar un contenedor, eso es un hecho.

Por otro lado para evitar el uso de globales podrías usar un registro, aunque como te digo no es lo mejor ya que es casi lo mismo a usar globales.

Respecto al setup me refería a un bootstrap, todo depende del patrón de diseño que estés usando pero en algún lado debes de hacerlo, sí vas a usar paginas "planas" pues tendrías que hacerlo de forma más manual, por ejemplo:

autos.php
Código PHP:
Ver original
  1. namespace App;
  2.  
  3. class Autos {
  4.        private $security;
  5.        private $core;
  6.  
  7.        public function setSecurity($security) {
  8.                $this->security = $security;
  9.        }
  10.  
  11.        public function setCore($core) {
  12.                $this->core = $core;
  13.        }
  14.  
  15.        public function getAutos($fecha) {
  16.               $fecha = $this->security->clean($fecha);
  17.  
  18.               return array();
  19.        }
  20. }

common.php
Código PHP:
Ver original
  1. <?php
  2. // register autoloader
  3. set_include_path(get_include_path().PATH_SEPARATOR.'/path/a/tus/clases');
  4.  
  5. $Core = new App\Core();
  6. $Security = new App\Security();

listadoAutos.php:
Código PHP:
Ver original
  1. <?php
  2. include('common.php');
  3.  
  4. $autos = new App\Autos();
  5. $autos->setCore($Core);
  6. $autos->setSecurity($Security);
  7. $fecha = isset($_GET['fecha']) ? $_GET['fecha'] : date('Y-m-d');
  8. foreach ($autos->getAutos($fecha) as $auto) {
  9.          echo $auto;
  10. }

Claro todo esto es suponiendo algo más plano, todo depende de que patrón de diseño tengas, y que tengas bien organizadas tus clases en namespaces como debe de ser
Bien, gracias. Voy a realizar algunas pruebas. ¿A qué te refieres con páginas "planas"? No tengo un patrón de diseño claro todavía, pero estoy ideando algo.

Edito: spl_autoload_register() me está dando problemas de la forma que pusiste, de la forma que yo puse al principio (de php.net) sí se incluye bien, las clases las tengo en la dirección: carpeta public "/inc/clases/user.class.php" (utilizo xamp) ¿Cómo debería ir?

Edito de nuevo: Al llamar a una función desde una clase a otra, da el error: "Call to a member function mifuncion() on a non-object"... En el index llamo a una función, si en la función retorno algo sin necesidad de llamar a otra clase (un 'Hola mundo'), aparece. Pero si en el return pongo la función de otra clase (return $this->user->getHola();), aparece eso. Está la función para definir $this->user en la clase y lo demás que he visto en tu anterior respuesta. ¿La clase no está cargando a otra clase? Aunque hice un include y aparecía "redeclared", por lo tanto creo que la carga.

Última edición por salomon26; 29/06/2012 a las 08:44 Razón: Una pregunta más