Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
Clase de PHP usando el mismo nombre que la función de rasgo

Tengo el siguiente código como muestra.

 trait sampletrait{ function hello(){ echo "hello from trait"; } } class client{ use sampletrait; function hello(){ echo "hello from class"; //From within here, how do I call traits hello() function also? } }

Podría poner todos los detalles de por qué esto es necesario, pero quiero mantener esta pregunta simple. Extender desde el cliente de clase no es la respuesta aquí debido a mi situación particular.

¿Es posible tener un rasgo que tenga el mismo nombre de función que la clase que lo usa, pero llame a la función de rasgos además de la función de clases?

Actualmente solo usará la función de clases (ya que parece anular los rasgos)

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puedes hacerlo de esta manera:

 class client{ use sampletrait { hello as protected sampletrait_hello; } function hello(){ $this->sampletrait_hello(); echo "hello from class"; } }

Editar: Vaya, olvidé $ esto-> (gracias JasonBoss)

Edición 2: acabo de investigar un poco sobre las funciones de rasgos de "cambio de nombre".

Si está cambiando el nombre de una función pero no sobrescribiendo otra (vea el ejemplo), ambas funciones existirán (php 7.1.4):

 trait T{ public function f(){ echo "T"; } } class C{ use T { f as public f2; } } $c = new C(); $c->f(); $c->f2();

Solo puedes cambiar la visibilidad:

 trait T{ public function f(){ echo "T"; } } class C{ use T { f as protected; } } $c->f();// Won't work
about 4 years ago · Santiago Trujillo Denunciar

0

Sí, también puede hacerlo de esta manera, puede usar funciones múltiples de un trait como este.

Pruebe este fragmento de código aquí

 <?php ini_set('display_errors', 1); trait sampletrait { function hello() { echo "hello from trait"; } } class client { use sampletrait { sampletrait::hello as trait_hello;//alias method } function hello() { $this->trait_hello(); echo "hello from class"; } }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda