While I'm led to believe its likely just a design choice, is there any advantage to initializing properties in PHP to an explicit null?
As a force of habit I find myself doing:
// ...
protected $_foo = null;
protected $_bar = null;
protected $_baz = null;
// ...
Of course, under circumstances where actual data is intended to be present at object instantiation, there is purpose:
// ...
protected $_array = array('a', 'b', 'c');
protected $_boolean = true;
// ...
Is omission of a null initialization value completely functionally equivalent to inclusion of a null initialization? Are there any other caveats? Also, unless a property is type-checked before any assignments would be made, initialization to an empty array seems like similar situation (and I find myself doing that constantly)
PHP 7.4 introduced a new feature called "typed properties" which adds the existing PHP type system to class properties. This means that you can now enforce which types a property has without having to encapsulate it in an object.
Typed properties are a very useful feature, however, typed properties without a default value have a new state: uninitialized. And if they're accessed before being initialised, you'll run into a Typed property must not be accessed before initialization error.
So the correct answer to OPs question if you're using PHP 7.4+ is yes, it does matter whether or not you explicitly initialise your class variables and the following two lines are not equivalent any more:
protected int $_foo = null;
protected int $_foo; // The default value in PHP 7.4+ is now uninitialized, not NULL
Further reading (no relation): https://madewithlove.com/typed-property-must-not-be-accessed-before-initialization/
Yes,
protected $_foo = null;
protected $_foo;
are completely equivalents.
As for me great choise is 
null, if it will null by defaultIt helps you to see default values quickly, helps code be self-documenting
Don't initialize array by array() seems to be bad idea because you can't use some function (ex. array_push, array_map)
is omission of a null initialization value completely functionally equivalent to inclusion of a null initialization?
yes
initialization to an empty array seems like similar situation
no. You can try foreach ($this->arr) (or something else) and that variable should be initialized with array to avoid notice.
Properties are implicitly initialized to NULL, there is no advantage to do this explicitly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With