Can I declare a method in an object as both a static and non-static method with the same name that calls the static method?
I want to create a class that has a static method “send” and a non-static method that calls the static function. For example:
class test {
private $text;
public static function instance() {
return new test();
}
public function setText($text) {
$this->text = $text;
return $this;
}
public function send() {
self::send($this->text);
}
public static function send($text) {
// send something
}
}
I want to be able to call the function on these two was
test::send("Hello World!");
and
test::instance()->setText("Hello World")->send();
is it possible?
You can do this, but it’s a bit tricky. You have to do it with overloading: the
__calland__callStaticmagic methods.This isn’t an ideal solution, as it makes your code harder to follow, but it will work, provided you have PHP >= 5.3.