Some constructors return values (e.g. empty strings) if the object can not be initialized properly. This is not possible, they should throw an exception instead. Reference
General Notes
Type Hinting - a common concept of wordpress core developers for function I/O in the past was: "shit in shit out". Type hints can be used to lightweightly hint the type functions do accept of a parameter. next to no type this can be array or object, read more.
scandir - scandir can be used instead the known opendir() / readdir() operations we currently have in.
foreach - can use references now. that will help to reduce code where in php iteration needed to differ between array or object (post data, comment data and the like). Do not forget to unset iterating value variable in case of reference after the foreach-loop. (#16684)
__construct and __destruct - faux and faulty PHP 4 workarounds can be removed. check all default classes constructors and destructors therefore. #10861
wp_clone() - function not needed any longer (#16813)
stripos() - native function can be applied everyhwere now. #11176
compat functions - some - most certainly even all of them can be removed now. #16918
curly string syntax - better support of classes in {$} (PHP docs).
mysqli - the usage of mysqli instead of mysql is strongly* recommended.
microtime - get as float parameter available since PHP 5 (>= 5.0.0) @see timer_start()
(array) casting - array casts are partially overused in core code and prevent usage of the SPL/Iterators.
mkdir() - allows the creation of nested directories specified in the pathname since PHP 5 (>= 5.0.0) (mkdir()). @see wp_mkdir_p() and WP_Filesystem_Direct. #14928
str_replace() - has a $count parameter now. #16903
E_RECOVERABLE_ERROR is available since PHP 5.2.0 #16920
Static class method Callback Pseudo type support - "::" for static functions now as "class::method" instead of array('class', 'method'). (As of PHP 5.2.3).