Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

155
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda