Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Funkcja __call(), do czego tak właściwie ?
Szymciosek
post
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

Ostrzeżenie: (0%)
-----


Witam,
tak jak w temacie, do czego to służy w praktyce ? Na razie jedyne co mi się wydaje z przykładu to to, że jeśli wywoływanej funkcji nie ma w klasie, to jest generowana informacja z funkcji __call, która może mi pokazać co chce wywołać i z jakimi parametrami.

Bazuje na takim przykładzie
  1. <?php
  2. class Caller {
  3. private $x = array('a', 'b', 'c', 'd', 'e');
  4.  
  5. public function __call($method, $args) {
  6. print "Method $method called:\n";
  7. var_dump($args);
  8. print '<br />';
  9. return $this->x;
  10. }
  11. }
  12.  
  13. $foo = new Caller();
  14. $a = $foo->test(1, 2, 3, 4, 5);
  15. ?>


Co do przykładu to jeszcze jest taka kwestia, do czego tutaj jest ten private $x i czemu jest zrobione $a = foo->test(1,2,3,4,5);

Ten post edytował Szymciosek 4.05.2012, 17:06:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
BlackDante
post
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 6
Dołączył: 20.06.2009

Ostrzeżenie: (0%)
-----


metoda __call jest metodą magiczną, która jak sam napisałeś odpala się wtedy kiedy próbujesz wywołać funkcję nie znajdującą się w klasie. do czego się to może przydać... taki przykład na szybko:

  1. class children extends human
  2. {
  3.  
  4. public function __construct()
  5. {
  6. // do something
  7. }
  8.  
  9. public function __call($method,$arg)
  10. {
  11. try
  12. {
  13. parent::$method($arg);
  14. }
  15. catch(Exeception $e)
  16. {
  17. die("Error: ".$e);
  18. }
  19. }
  20.  
  21. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 20:54