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
Levabul
post
Post #2





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

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


Niestety nadal niedziała (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Wywala się error
Cytat
Warning: pack() [function.pack]: Type n: too few arguments in E:\Programy\WebServ\httpd-users\ss\include.php on line 16

Czyli tak jakby funkcja pack() niezwracała uwagi na przecinki podczas rozdzielania zmiennej $data na poszczegulne argumenty. Oto kod:
  1. <?php
  2. class Pack {
  3.  
  4. public $pack;
  5.  
  6.  
  7. public function __construct($str = false) {
  8. if($str) {
  9. $this -> pack = $str;
  10. }
  11. }
  12.  
  13. public function pack($data) {
  14. $data = func_get_args ();
  15. $data = join (",",$data);
  16. $this -> pack = pack ($data);
  17. }
  18.  
  19. public function unpack ($strFormat) {
  20. return unpack ($strFormat, $this -> pack);
  21. }
  22. }
  23.  
  24. #przyklad
  25.  
  26. $paczka = new pack ();
  27. $paczka -> pack ("nvc*", 0x1234, 0x5678, 65, 66);
  28.  
  29. ?>


Ten post edytował Levabul 10.12.2005, 14:37:04
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: 15.10.2025 - 00:40