38

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?

3 Answers 3

43

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)

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! 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.
20

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.

3 Comments

and what if he wants the method to be static?
@Natrium, then he can use what I suggested first.
Using $this when not in object context is what results from the later statement
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.

1 Comment

I 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.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.