2009-05-20 22 views
6

Yani PHP'de OOP yapmam.Bir işlevin içinde bir nesne çağırın

İşte benim sorunum, bir işlevi çağıracağım bir nesne var ve bir arkayı geri çağırıyor. İşte kod burada. Bu bana

Önemli hata hata veriyor

$obj = new OBJ(); 

function go($url){ 
    $array = $obj->grabArray($url); 
    echo $array['hits']; 
} 

go('http://www.mysite.com/hello'); 

: Nesne olmayan bir

cevap

35

Bu bir OOP sorunu değil bir üye fonksiyonu grabArray() çağır, bir kapsam mesele. $ go, işlev go() içinde görünmez. Bir parametre olarak geçmesi gerekir, ya da var (önerilmez) küresel anahtar kelime

Önerilen yolu

$obj = new OBJ(); 

go('http://www.mysite.com/hello', $obj); 

function go($url, $object) 
{ 
    $array = $object->grabArray($url); 
    echo $array['hits']; 
} 

Önerilen şekilde değil

$obj = new OBJ(); 

go('http://www.mysite.com/hello'); 

function go($url) 
{ 
    global $obj; 
    $array = $object->grabArray($url); 
    echo $array['hits']; 
} 

ile işlevin kapsamı içine getirmek ya OOP bileşimi kavramına benzeyen başka bir çözüm - go() işlevini bir OBJ örneğini oluşturmaktan sorumlu kılabilirsiniz.

go('http://www.mysite.com/hello'); 

function go($url) 
{ 
    $obj = new OBJ(); 
    $array = $obj->grabArray($url); 
    echo $array['hits']; 
} 

Bu yepyeni OBJ örneği Eğer gitmek düzenlediği her zaman() oluşturmak istiyorum çünkü, ama, muhtemelen ideal değildir. Statik bir değişken

function go($url) 
{ 
    static $obj; 
    if (is_null($obj)) 
    { 
     $obj = new OBJ(); 
    } 
    $array = $obj->grabArray($url); 
    echo $array['hits']; 
} 

ile "önbelleğe alma" hareket içindeki OBJ örneği() tarafından çözeriz diye Peki başka yanı sıra her yerde OBJ senin örneğini kullanmak istemiyorsanız bu kompozisyon benzeri bir yaklaşım gerçekten sadece yararlıdır go() işlevinin içinde - eğer başka bir yerde kullanırsanız, o zaman parametre yaklaşımı en iyi seçimdir.

Her şey eldeki görev için doğru çözümü seçmekle ilgili!

+0

Harika çalışıyor. Teşekkür ederim! – Tim

+0

Üçüncü yönteme teşekkür ederim – doflamingo

İlgili konular