Reputation: 35684
public function __construct($input = null) {
if (empty($input)){
return false;
}
and then there's some constructor code...
what I would like to do is for the class to not initialize if I pass an empty variable
$classinstance = new myClass(); I want $classinstance to be empty (or false)
I think this is not possible like this, What's an easy way to accomplish a similar result?
Upvotes: 3
Views: 679
Reputation: 43804
You could make private the normal constructor (so it can't be used from outside the object, like you would if you were making a Singleton) and create a Factory Method.
class MyClass {
private function __construct($input) {
// do normal stuff here
}
public static function factory($input = null) {
if (empty($input)){
return null;
} else {
return new MyClass($input);
}
}
}
Then you would instantiate a class like this:
$myClass = MyClass::factory($theInput);
(EDIT: now assuming you're only trying to support PHP5)
Upvotes: 5
Reputation: 1954
I believe you are correct. A print_r of your new object will show it returns an object.
You could make it throw an exception, but that's unlikely to be the style you want.
+1 on factory methods already posted. Those factory methods might also be like:
public static function newCreate( $a ) { return ( !$a ) ? false : new foo( $a ); }
I like factory methods :-)
Upvotes: 0
Reputation: 27563
You could use a factory method to create the object:
private function __construct($input = null) {
}
public static function create($input = null) {
if (empty($input)) {
return false;
}
return new MyObject($input);
}
Upvotes: 1