I am working on PHP code.
Here is the sample code to explain my problem:
class Foo {
public function fun1() {
echo 'non-static';
}
public static function fun2() {
echo "static" ;
//self::fun1();
//Foo::fun1();
}
}
How can I call the non-static method from the static method ?
Note: Both functions are used throughout the site, which is not known. I can't make any changes in the static/non-static nature of them.
Asnwer selcted as correct solves problem. There is a valid use case (Design Pattern) where class with static member function needs to call non-static member function and before that this static members should also instantiate singleton using constructor a constructor.
Case: For example, I am implementing Swoole HTTP Request event providing it a call-back as a Class with static member. Static Member does two things; it creates Singleton Object of the class by doing initialization in class constructor, and second this static members does is to call a non-static method 'run()' to handle Request (by bridging with Phalcon). Hence, static class without constructor and non-static call will not work for me.
You must create a new object inside the static method to access non-static methods inside that class:
The result would be
non-static
Later edit: As seen an interest in passing variables to the constructor I will post an updated version of the class:
The result would be
foo - bar
The main difference would be that you can call static methods for a class without having to instantiate an object of that class. So, in your static method try
But I don't see how this would make any sense in any context.