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!
Harika çalışıyor. Teşekkür ederim! – Tim
Üçüncü yönteme teşekkür ederim – doflamingo