Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] FIFO na pliku
Forum PHP.pl > Forum > Przedszkole
Fantazyn
  1. <?php
  2. class fifo_queue //wymaga php5
  3. {
  4.  
  5.  var  
  6.  $plik = 'kolejka.txt'; //sciezka do pliku dla kolejki, domyslnie jest to 'kolejka.txt'
  7.  
  8.  
  9.  function __construct() //konstruktor, opcjonalnie pierwszy parametr bedzie nazwa pliku dla fifo
  10.  {
  11. $liczba = func_num_args();
  12.  
  13. if ($liczba >= 1) {
  14. $tab = func_get_args();
  15. $this -> plik = $tab[0];  
  16. }
  17.  } //konstruktor
  18.  
  19.  function nowa()  //tworzy nowy plik do przechowywania kolejki
  20.  { 
  21. file_put_contents($this->plik,'');
  22. echo "Utworzono kolejke \n";
  23. return true;
  24.  } //nowa
  25.  
  26.  function usun() //usuwa kolejke razem z plikiem, zwraca true, gdy sie powiedzie
  27.  {
  28.  return (unlink($this->plik) ? true : false);
  29.  } //usun
  30.  
  31.  function dolacz($dana) //umieszcza w kolejce $dana
  32.  { 
  33. $dana = $dana."r\n"; 
  34. file_put_contents($this->plik,$dana,FILE_APPEND);
  35. echo "Dodano do kolejki: ".$dana;
  36. return true;
  37.  } //dolacz
  38.  
  39.  function odlacz() //zwraca i usuwa pierwszy element kolejki, inaczej zwraca false
  40.  {
  41. if($this->jest_pusta()) 
  42. {
  43. return false;
  44. }
  45. else 
  46. {
  47. $top = $this->element(1);
  48. $tab_plik=file($this->plik);
  49. for($i=1;$i<count($tab_plik);$i++)
  50. {
  51. $tab[$i-1]=$tab_plik[$i];
  52. }
  53. file_put_contents($this->plik,$tab);
  54. return $top;
  55. }
  56.  } //odlacz
  57.  
  58.  function wyswietl() //pokazuje wszystkie elementy kolejki
  59.  {
  60. readfile($this->plik);
  61. return true;
  62.  } //wyswietl
  63.  
  64.  function wyswietl2() //pokazuje wszystkie elementy kolejki wraz z indeksami od 1
  65.  {
  66. $tab=file($this->plik);
  67. for ($i=0;$i<count($tab);$i++)
  68. {
  69. echo ($i+1)." : ".$tab[$i];
  70. }
  71. return true;
  72.  } //wyswietl2
  73.  
  74.  
  75.  function jest_pusta() //sprawcza czy kolejka jest pusta
  76.  {
  77.  return (($this->liczba() == 0) ? true : false);
  78.  } //jest_pusta
  79.  
  80.  
  81.  
  82.  function liczba() //liczba elementow w kolejce 
  83.  {
  84.  return count(file($this->plik));
  85.  } //liczba
  86.  
  87.  function element($numer) //zwraca element kolejki o numerze $numer; numeracja od elementu jeden
  88.  {
  89.  if (!(is_int($numer))) {
  90.  echo "Numer elementu nie jest typu integer!\n";
  91.  exit;
  92.  }
  93.  $liczba=$this->liczba();
  94.  if ($liczba == 0) {echo "Kolejka jest pusta!\n";}
  95.  else 
  96.  {
  97.  if ($numer > $liczba) {echo "Nie ma takiego elementu w kolejce\n";} 
  98.  else 
  99.  {
  100.  $tab = file($this->plik);
  101.  return $tab[$numer-1];
  102.  }
  103.  
  104.  }
  105.  } //element
  106.  
  107. } //class fifo_queue
  108. ?>


Mam pytanie: mam tą klasę na lua.pl i wszystkie komunikaty wyświetla mi w jednej linijce (ignoruje moje znaki \n, a nawet \r\n)... dlaczego?
Uwagi dotyczące klasy też mile widziane (miło by było gdyby były także podpowiedzi jak poprawić : P).
Pozdrawiam.
Edit: no, tak : ), dziękuję qrees : ).
qrees
Zapewne dlatego, że przeglądarki ignorują końce linii (podobnie jak tabulatory i wiele spacji pod rząd). Aby przejść do nowej linii używaj <br/>.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.