Zacząłem dziś robić mojego IRCBota, na podstawie starego, ale w pełni obiektowy. Chodzi mi o to, aby można było dodawać moduły w czasie pracy, bez wyłączania bota. tylko, jako ja zawsze chcę wszystko udziwnić, więc postanowiłem go zrobić z obsługą wielu serwerów.. I tu jest problem - chcę zrobić tzn. handler to danego serwera, używany potem w funkcjach. narazie wykodziłem cos takiego:
  1. <?php
  2. class IRC {
  3.  
  4. public $serverInfo = array();
  5.  
  6. public function SetVariableServer($server,$nick="dworakexs_bot",$port=6667) {
  7. $this->serverInfo[$server] = array('address'=>$server,'port'=>$port,'nick'=>$nick,'connected'=>0);
  8. return $this->serverInfo[$server];
  9. }
  10.  
  11. public function SetVariableNick(&$sh/*Server Handler*/,$nick) {
  12. $sh["nick"] = $nick;
  13. var_dump($sh);
  14. }
  15.  
  16. public function SetServer($sh/*Server Handler*/) {
  17. $this->Connect($sh/*Server Handler*/);
  18. }
  19.  
  20. public function Connect($sh/*Server Handler*/) {
  21. /*Łączenie*/
  22. }
  23.  
  24. public function SetNick($sh/*Server Handler*/) {
  25. /*Zmiana nicku*/
  26. }
  27.  
  28. }
  29.  
  30. echo "Test\n";
  31. $IRC = new IRC;
  32. $quake = $IRC->SetVariableServer("irc.quakenet.org");
  33. $node = $IRC->SetVariableServer("irc.freenode.net");
  34. var_dump($IRC->serverInfo);
  35. echo "Test 2\n";
  36. $IRC->SetVariableNick($quake, "symbian");
  37. $IRC->SetVariableNick($node, "debian");
  38. $IRC->SetVariableNick($quake, "ubuntu");
  39. var_dump($IRC->serverInfo);
  40. ?>


Wszystko OK, żadnych błędów, ale nie zmienia nicka w tablicy $IRC->serverInfo, gdzie są pola address, port, nick, connected - funkcja SetVariableNick ma służyć za zmienianie nicku w tabeli, a SetNick za zmienianie na serwerze.
Mam małe pojęcie na temat OOP, cały czas się ucze. Spróbowałem też zastosować referencje, ale chyba coś robię żle. I jeszcze jedno pytanie - jak zastosować dynamiczne moduły?