The return type HasModule is a trait, and thus cannot be used for type-hinting in PHP. Maybe consider adding an interface and use that for type-hinting?
In PHP traits cannot be used for type-hinting as they do not define a well-defined
structure. This is because any class that uses a trait can rename that trait’s methods.
If you would like to return an object that has a guaranteed set of methods, you
could create a companion interface that lists these methods explicitly.
The string literal This property does not exists. does not require double quotes, as per coding-style, please use single quotes.
PHP provides two ways to mark string literals. Either with single quotes 'literal' or with
double quotes "literal". The difference between these is that string literals in double quotes
may contain variables with are evaluated at run-time as well as escape sequences.
String literals in single quotes on the other hand are evaluated very literally and the only two
characters that needs escaping in the literal are the single quote itself (\') and the
backslash (\\). Every other character is displayed as is.
Double quoted string literals may contain other variables or more complex escape sequences.
<?php$singleQuoted='Value';$doubleQuoted="\tSingle is $singleQuoted";print$doubleQuoted;
will print an indented: SingleisValue
If your string literal does not contain variables or escape sequences, it should be defined
using single quotes to make that fact clear.
For more information on PHP string literals and available escape sequences see the PHP core
documentation.
In PHP traits cannot be used for type-hinting as they do not define a well-defined structure. This is because any class that uses a trait can rename that trait’s methods.
If you would like to return an object that has a guaranteed set of methods, you could create a companion interface that lists these methods explicitly.