Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łączenie argumentów funkcji
Levabul
post
Post #1





Grupa: Zarejestrowani
Postów: 197
Pomógł: 0
Dołączył: 11.07.2005

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


stworzyłem klase pack w której znajduje się metoda pack() i unpack(). Niestety niemoge sobie poradzić z prtzekazywaniem nieograniczonej ilości argumentów do funkcji pack. Przedstawiam sposób jak chciałem tego dokonać :
  1. <?php
  2.  
  3. class Pack {
  4.  
  5. public $pack;
  6.  
  7.  
  8. public function __construct($str = false) {
  9. if($str) {
  10. $this -> pack = $str;
  11. }
  12. }
  13.  
  14. public function pack() {
  15. foreach (func_get_args() as $arg) {
  16. $str .= $arg.", ";
  17. }
  18. $str = substr($str, 0, strlen($str)-1);
  19.  
  20. $this -> pack = pack($str);
  21. }
  22.  
  23. public function unpack($strFormat) {
  24. return unpack ($strFormat, $this -> pack);
  25. }
  26. }
  27.  
  28. ?>


Próbuje przy użyciu foreach" title="Zobacz w manualu php" target="_manual, func_get_args" title="Zobacz w manualu php" target="_manual połączyć kolejno pobierane argumenty i zapisać je w zmiennej oddzielając je ."," ale wtedy cała zmienna $str traktowana jest jako jeden argumen. Jak sobie z tym poradzić ?

Pozrawiam.

Ten post edytował Levabul 9.12.2005, 20:56:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bregovic
post
Post #2





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


Levabul: Nie rób sobie na złość, nie używaj eval(). Nie zrozumiałem że chcesz użyć argumentów do wywołania innej funkcji. W takim razie użyj call_user_func_array" title="Zobacz w manualu php" target="_manual():

  1. <?
  2.  
  3. class Pack
  4. {
  5. public $pack;
  6.  
  7. public function __construct($str = false)
  8. {
  9. if ($str)
  10. {
  11. $this -> pack = $str;
  12. }
  13. }
  14.  
  15. public function pack()
  16. {
  17. $args = $func_get_args();
  18. $this->pack = call_user_func_array('pack', $args);
  19. }
  20.  
  21. public function unpack ($strFormat)
  22. {
  23. return unpack ($strFormat, $this -> pack);
  24. }
  25. }
  26.  
  27. #przyklad
  28.  
  29. $paczka = new pack ();
  30. $paczka -> pack ("nvc*", 0x1234, 0x5678, 65, 66);
  31. echo $paczka -> pack;
  32.  
  33. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 14:51