calling a method from another method in same PHP class
Solution 1
It's a static method so you have to call it with self::getClientInfo
or DomainHandler::getClientInfo
.
Also: You might want to read up on object oriented programming since it looks like you have not yet understood what it's really about (it's not just putting functions between a class Foo { and } and putting public static in front of them)
Solution 2
You are declaring the functions as static and hence they are not in object context – you can call them with DomainHandler::getClientInfo()
or self::getClientInfo()
.
If you don't explicitly need the functions to be static, you can drop the static
keyword and then $this->getClientInfo()
will work.
Solution 3
'self' is the keyword you're looking for
that said, can you explain why you need your methods to be static? "static" is poor style and should be avoided.
Comments
-
Constant Meiring over 3 years
I'm trying to use a method from within another method in a class. I don't have much experience in PHP5 OOP, and I looked around for answers, but couldn't find any. I'm trying to use getClientInfo() in sendRequest(), which is in the same class.
class DomainHandler { public static function getClientInfo($db, $client_id) { //Do stuff } public static function sendRequest($details) { require_once('MySQL.class.php'); $db = new MySQL; getClientInfo($db, $client); } }
And it tells me:
Fatal error: Call to undefined function getClientInfo()
I've also tried
parent::getClientInfo($db, $client);
and
$this->getClientInfo($db, $client);
to no avail.
Any ideas?
-
Natrium about 14 yearsand what if he wants the method to be static?
-
Tatu Ulmanen about 14 years@Natrium, then he can use what I suggested first.
-
Morfildur about 14 yearsI wouldn't say that 'static' is poor style eventhough i agree in this case that it might not have been used correctly. static has a place and sometimes not making something static would be bad style. I agree though that many people use static methods wrongly and use classes only like you would use C++ namespaces with only static methods => that is bad style.
-
Constant Meiring about 14 yearsThanks! Yes I know I know very little about full OOP (PHP5), but unfortunately my boss won't give me a day off to read up on something he wants fixed now. :) Tbh, I don't really know why you have static and public before a method?? But I'll get there. Thanks again for the help.
-
tread over 9 years
Using $this when not in object context
is what results from the later statement