You can't pass `null` to method which has definition `addJoinObject(Join $join)`.
You will get fatal error `Catchable fatal error:  Argument 1 passed to addJoinObject()
must be an instance of Join, null given`.
So it doesn't make sense to check for `null` again inside of method - such code will never execute.

If in method definition you strictly declare what type parameter should have then the only way to allow pass `null` is to declare it like this `addJoinObject(Join $join = null)`.

http://php.net/manual/en/language.oop5.typehinting.php
> PHP 5 introduces type hinting. Functions are now able to force parameters to be objects (by specifying the name of the class in the function prototype), interfaces, arrays (since PHP 5.1) or callable (since PHP 5.4). *However, if NULL is used as the default parameter value, it will be allowed as an argument for any later call*.