2010-02-08 17 views
34

Estoy tratando de usar un método desde otro método en una clase. No tengo mucha experiencia en PHP5 OOP, busqué respuestas, pero no pude encontrar ninguna. Estoy tratando de usar getClientInfo() en sendRequest(), que está en la misma clase.llamando a un método desde otro método en la misma clase PHP

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); 
    } 
} 

Y me dice:

Fatal error: Call to undefined function getClientInfo()

También he intentado

parent::getClientInfo($db, $client); 

y

$this->getClientInfo($db, $client); 

en vano.

¿Alguna idea?

Respuesta

40

Es un método estático por lo que debe llamarlo con self::getClientInfo o DomainHandler::getClientInfo.

También: Es posible que desee leer sobre programación orientada a objetos, ya que parece que todavía no ha comprendido de qué se trata (no es solo poner funciones entre una clase Foo {y} y poner estática pública delante de ellas)

+3

Gracias! Sí, sé que sé muy poco sobre OOP completo (PHP5), pero desafortunadamente mi jefe no me dará un día libre para leer algo que él quiera arreglar ahora. :) Tbh, realmente no sé por qué tienes estática y público antes de un método. Pero llegaré allí. Gracias de nuevo por la ayuda. –

3

'yo' es la palabra clave que está buscando

que dijo, ¿puede explicar por qué necesita sus métodos a ser estático? "estático" es un estilo pobre y debe evitarse.

+1

No diría que 'estático' es un estilo pobre aunque estoy de acuerdo en este caso que podría no haberse usado correctamente. la estática tiene un lugar y, a veces, no hacer algo estático sería un mal estilo. Sin embargo, estoy de acuerdo con que muchas personas usan métodos estáticos erróneamente y usan clases solo como si usaras espacios de nombres C++ con solo métodos estáticos => _que_es un estilo incorrecto. – dbemerlin

17

está declarando las funciones que static y por lo tanto no están en contexto del objeto – se les puede llamar con DomainHandler::getClientInfo() o self::getClientInfo().

Si no necesita explícitamente que las funciones sean estáticas, puede soltar la palabra clave static y luego $this->getClientInfo() funcionará.

+0

y ¿qué pasa si él quiere que el método sea estático? – Natrium

+4

@Natrium, entonces él puede usar lo que sugerí primero. –

+2

lo siento, debe haber tenido arena en mis ojos ... – Natrium

Cuestiones relacionadas