que - Usando espacios de nombres PHP
php 7 use namespace (3)
Los espacios de nombres son una forma de agrupar sus clases relacionadas en paquetes. Lo que usted describe podría ser puesto bajo un solo espacio de nombres como
<?php // people.php
namespace com/example/johnslibrary/people;
abstract class People {
}
y entonces
<?php // manager.php
namespace com/example/johnslibrary/people;
require_once ''path/to/People.php''; // can better use autoloading though
class Manager extends People {
}
porque un administrador es una subclase de personas, por lo que no hay muchas razones para ponerlas en su propio espacio de nombres. Son personas especializadas.
Si desea que los Administradores estén en su propio espacio de nombres, puede hacerlo, pero debe usar el nombre completo al usar la palabra clave extended, por ejemplo
<?php // manager.php
namespace com/example/johnslibrary/managers;
require_once ''path/to/People.php'';
class Manager extends /com/example/johnslibrary/people/People {
}
o importar primero la clase Gente
<?php // manager.php
namespace com/example/johnslibrary/managers;
use com/example/johnslibrary/People as People;
require_once ''path/to/People.php'';
class Manager extends People {
}
Consulte el Manual de PHP sobre espacios de nombres para obtener una amplia documentación.
He estado buscando sitios web para tratar de controlar el uso de los espacios de nombres de PHP, pero todos parecen ser bastante vagos, pero lo que están tratando de hacer es fácil de entender
Mi pregunta es: Tengo un archivo llamado people.php
y en él se define la clase llamada people
. Si creo otro archivo llamado managers.php
en la misma carpeta, puedo definir una clase llamada people
que amplíe la clase de people
original pero en el espacio de nombres de los managers
, si es así, tengo que "incluir" el people.php
original y si así que pongo la inclusión después de la escritura: namespace managers
?
Tengo una antigua clase de PHP y necesito usarla en un nuevo archivo PHP como por ejemplo: index.php
tiene que usar iClass.php
. Pero antes de usar el OLD iClass.php tengo que modificarlo como se muestra a continuación, para poder usarlo en index.php.
iClass.php:
namespace ic;
class iClass {
public static function callMeFromClass() {
echo ''OK - you have called me!'';
exit;
}
}
index.php
namespace inex;
require_once ''iClass.php'';
use ic/iClass;
iClass::callMeFromClass();
// people.php
<?php
namespace People;
class People {}
// managers.php
<?php
namespace Managers;
require_once __DIR__.''/people.php'';
class People extends /People/People {}