calling a method from another method in same PHP class

60,857

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.

Share:
60,857
Constant Meiring
Author by

Constant Meiring

Rails, Phoenix, EmberJS and some other things.

Updated on July 31, 2020

Comments

  • Constant Meiring
    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
    Natrium about 14 years
    and what if he wants the method to be static?
  • Tatu Ulmanen
    Tatu Ulmanen about 14 years
    @Natrium, then he can use what I suggested first.
  • Morfildur
    Morfildur about 14 years
    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.
  • Constant Meiring
    Constant Meiring about 14 years
    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.
  • tread
    tread over 9 years
    Using $this when not in object context is what results from the later statement