In PHP, "traits" are a way to reuse code in classes, providing a mechanism for horizontal code reuse. "Traits" allow you to define methods that can be used in multiple classes independently of the class hierarchy. While PHP has native support for "traits", not all programming languages have the exact concept of "traits".
Rust, Scala, Ruby, Swift, and Kotlin all have similar concepts as PHP "traits". Keep in mind, they're not the only languages with these concepts. If you're caught up in the specific syntax of "no is-a", you might have a hard time applying what you know about PHP "traits" and how their concepts are implemented in other languages.
Rust has a concept called "traits" that are similar to interfaces or protocols in other languages. Traits in Rust allow you to define a set of methods that can be implemented by multiple types. Types can then implement those traits, providing a way to reuse code across different data types.
Scala supports a feature called "traits," which are similar to PHP traits. Traits in Scala allow you to define reusable pieces of code that can be mixed into classes using multiple inheritance. These traits can define methods and fields that are then available to the classes that mix them in.
Ruby has a feature called "modules" that provide a similar level of code reuse. Modules allow you to define a set of methods that can be mixed into classes using the "include" keyword. Classes that include a module gain access to its methods and can override them if needed.
Swift has a feature called "protocols" that is similar to interfaces in other languages and shares some similarities with PHP traits. Protocols define a set of methods and properties that can be adopted by classes, structs, or enums. Types can then adopt multiple protocols, allowing for code reuse across different types.
Kotlin provides a feature called "interfaces" that serves a similar purpose as traits. Interfaces in Kotlin define a set of methods and properties that can be implemented by classes. A class can implement multiple interfaces, allowing code reuse across different classes.
EDIT: I forgot to note the most important answer for the final part of your question. Other languages would essentially call this "object oriented method declaration".