When creating a new object in PHP, I get the following error message:
Fatal error: Call to private MyObject::__construct() from invalid context
I just create the new object and do not try to call the constructor explicitly. Does anyone know what's going on?
- creating a new object will always call the constructor.Lukman– Lukman2010-01-04 05:56:37 +00:00Commented Jan 4, 2010 at 5:56
3 Answers
Your MyObject class has a protected or private constructor, which means that the class cannot be instantiated. __construct() functions are always called when an object is instantiated, so trying to do something like $x = new MyObject() will cause a fatal error with a private construction function. (If you do not specifically declare a __construct() function, the parent constructor will be called).
Private constructors are often used in Singleton classes to prevent direct instantiation of an object. If it's not a class that you built, it might have a getInstance() function available (or something similar) to return an instance of itself.
5 Comments
Instead of $x = new MyObject() you could use
$x = MyObject::getInstance(); assuming that MyObject is a Singleton and getInstance() function is available.