Mam metoda, która uprościła wygląda następująco:
class Foo {
public function bar($id) {
// do stuff using $this, error occurs here
}
}
Wywołanie to tak działa świetnie:
$foo = new Foo();
$foo->bar(1);
Jednakże, jeśli zgłoszę go przy użyciu call_user_func_array()
coś takiego:
call_user_func_array(array("Foo", "bar"), array('id' => 1));
które powinien być równe, pojawia się następujący błąd:
Fatal error: Using $this when not in object context in
($this
jest niezdefiniowany)
dlaczego tak jest? Czy jest coś, czego mi brakuje? Jak mam to zrobić, aby nadal używać $this
w wywołanej metodzie?
Tylko dla rekordu istnieje druga pomyłka w jego kodzie 'array ('id '=> 1) 'powinien raczej być' tablica (1) 'sądząc po definicji" bar " – Mahn
Hah! Powinienem to przewidzieć, nie sądziłem, że to takie proste. Dzięki za tonę! Jeśli chodzi o twoją edycję: to literówka, napisał ten kod w oknie SO-ask :-). Dzięki jeszcze raz! – Zar