2012-08-03 16 views
16

Me pregunto si en la situación en la que extiendo una clase que ya tiene 'use' palabra clave encima para usar un espacio de nombres específico, ¿necesito agregar otro 'uso' sobre la clase heredada para usar el mismo espacio de nombres? Situación como esta:PHP: ¿La extensión de clase necesita otro 'uso' para llamar al espacio de nombres?

namespace Core; 

use System\Plugin; 

class Front extends Application { } 

y ahora en el controlador, que se llama directamente sin el espacio de nombres (usando ruta completa):

use System\Plugin; 

class PageController extends Front { } 

o sería trabajar sin 'uso', así y me permitirá para usar el espacio de nombres System \ Plugin:

class PageController extends Front { } 

?

Respuesta

18

No, necesita la instrucción "use" en ambos archivos. El uso es una palabra clave de nivel de archivo y no se ve afectada por la herencia.

Vea el scoping rules for importing y la pequeña caja que describe lo que dije al final de la página del manual.

+0

Obviamente si dentro de la clase Front he creado una instancia de un objeto dentro del espacio de nombres del complemento, entonces puedo usarlo sin el 'uso de System \ Plugin' en la clase heredada. –

+0

Por supuesto, y no siempre necesita una declaración de uso tampoco. Usar el espacio de nombres completamente calificado también funciona. – Lusitanian

+6

Sería bueno (es decir, DRYer) si las clases pudieran heredar declaraciones 'use' de las clases principales – hohner

Cuestiones relacionadas