I found it over the weekend, after talking to a Java guru.
Apparently it's not a PHP problem at all, it's a fundamental "problem" with how OO is designed in the first place.
You can NEVER, at any time, declare an object property with a variant (function, etc.) as part of the definition (you can't with "static", "var" nor "global"). That can only be done either in the constructor or a class method.
So I fixed it by redefining the array as an empty array, only to re-redefine it within the constructor.
Phil