2010-02-08 25 views
34

aynı PHP sınıfta başka bir yöntemle bir yöntemi çağırmak. PHP5 OOP'ta fazla tecrübem yok ve cevaplar için etrafa baktım ama bulamadım. Ben aynı sınıfta olan sendRequest() içinde getClientInfo() kullanmaya çalışıyorum.Bir sınıfa başka bir yöntemle içinden bir yöntemi kullanmaya çalışıyorum

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

Ve bana söyler:

Fatal error: Call to undefined function getClientInfo()

Ben de boşuna

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

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

ve

denedim.

Herhangi bir fikrin var mı? Eğer self::getClientInfo veya DomainHandler::getClientInfo ile aramak zorunda

cevap

40

Bu statik bir metod.

Ayrıca: Nesne yönelimli programlamayı okumak isteyebilirsiniz, çünkü gerçekten neyi anladığınızı anlayamadınız (yalnızca bir foo sınıfı arasında işlevler koymak değil, aynı zamanda bunların önünde genel durağanlık koymak değil).)

+3

teşekkürler! Evet ben tam OOP (PHP5) hakkında çok az şey bildiğini biliyorum, ama ne yazık patronum o şimdi sabit istediği şey üzerinde okumam bir gün izin vermeyecektir. :) Tbh, bir yöntemden önce neden statik ve halka açık olduğunu bilmiyorum? Ama oraya gideceğim. Yardım için tekrar teşekkürler. –

3

'self' dedin

aradığınız anahtar kelime statik olmak için yöntemler ihtiyaç neden açıklayabilir, nedir? "Statik" zayıf bir stil ve kaçınılmalıdır.

+1

Ben doğru Kullanılmamalıydı olabileceğini bu durumda katılıyorum satışlardaki 'statik' fakir tarzı olduğunu söyleyemem. Statik bir yeri vardır ve bazen statik bir şey yapmamak kötü bir tarz olur. Pek çok insanın statik yöntemleri yanlış kullanmasına ve C++ ad alanlarını yalnızca statik yöntemlerle kullanacağınız gibi kullanacağına katılıyorum => _that_ bad style. – dbemerlin

17

Sen static gibi işlevleri bildiriyorlar ve dolayısıyla onlar DomainHandler::getClientInfo() veya self::getClientInfo() onlara ulaşabilmesi nesne bağlamında – değildir.

Statik olmaya yönelik işlevlere açıkça gereksinim duymuyorsanız, static anahtar sözcüğünü bırakıp $this->getClientInfo() çalışacaktır.

+0

ve ya yöntemin statik olmasını istiyorsa? – Natrium

+4

@Natrium, o zaman ilk önce önerdiğim şeyi kullanabilir. –

+2

üzgün, 'gözlerimi vardı kum ve ... – Natrium

İlgili konular