Some addtional comments based on your updated question. This is in addition to the items listed above.
Consistent parameter typing
If you are going to use parameter typing, use it consistently. You use parameter typing in your systemUserLogin::constructor but you don't use it in systemUserAuthenticator::systemUserLoginValidation().
Scalar parameter types should be lowercase
In PHP you use string not String
Class name should start with a capital letter
PSR-1 coding standards state that class names should start with a capital letter
systemUserLogin should be SystemUserLogin, etc.
Always use curly braces for control structures
Although it is perfectly valid syntax to omit curly braces when a control structure only contains one line of code. But it is a best practice to always use them as they make the code more rreadable and prevent future errors. Future you or another developer may want to add a line to a control block and introduce a hard to find bug because they didn't realize the curly braces weren't there.
if ($userData) {
return $userData;
}
else {
return false;
}
Or here you could just use the ternary control structure:
return ($userData) ? $userData : false;
You should be taking parameter tpying further and use return type declarations as well.
PHP now offers return type declartions so you can enforce the type being returned by your code.