Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> _toString w Collection
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Czytałem, że metoda __toString() jest maginczą. Wiem mniej więcej do czego służy. Wytłumaczcie mi dlaczego w poniższym przykładzie w momencie przy
  1. <?php
  2. print $objAdam;
  3. ?>
wykonywane jest __toString() obiektu Foo? Przecież w zmiennej $objAdam trzymane jest Collection..

  1. <?php
  2.  
  3. class Collection {
  4.  
  5.  private $_members = array(); // elementy kolekcji
  6.  
  7.  public function addItem($obj, $key = null) {
  8.  
  9. if($key) {
  10.  if(isset($this->_members[$key])) {
  11. echo "Klucz "$key" jest już zajęty!";
  12.  } else {
  13. $this->_members[$key] = $obj;
  14.  }
  15. } else {
  16.  $this->_members[] = $obj;
  17. }
  18.  }
  19.  
  20.  public function removeItem($key) {
  21.  
  22. if(isset($this->_members[$key])) {
  23.  unset($this->_members[$key]);
  24. } else {
  25.  echo "Błędny klucz "$key"!";
  26. }
  27.  }
  28.  
  29.  public function getItem($key) {
  30.  
  31.  
  32. if(isset($this->_members[$key])) {
  33.  return $this->_members[$key];
  34. } else {
  35.  echo "Błędny klucz "$key"!";
  36. }
  37.  }
  38. }  
  39.  
  40. class Foo {
  41.  private $_name;
  42.  private $_number;
  43.  
  44.  public function __construct($name, $number) {
  45. $this->_name = $name;
  46. $this->_number = $number;
  47.  }
  48.  
  49.  public function __toString() {
  50. return $this->_name . ' ma numer ' . $this->_number;
  51.  }
  52. }
  53.  
  54.  
  55.  
  56. $colFoo = new Collection();
  57. $colFoo->addItem(new Foo("Adam", 14), "adam");
  58. $colFoo->addItem(new Foo("Marek", 37), "marek");
  59. $colFoo->addItem(new Foo("Jacek", 49));
  60.  
  61. $objAdam = $colFoo->getItem("adam");
  62. print $objAdam; // wyświetla "Adam ma numer 14"
  63. $colFoo->removeItem("adam"); // usuwa obiekt 'adam'
  64.  
  65. try {
  66.  $colFoo->getItem("adam"); //zgłasza wyjątek KeyInvalidException
  67. } catch (KeyInvalidException $kie) {
  68.  print "Kolekcja nie zawiera elementu o kluczu 'adam'";
  69. }
  70. ?>
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Przecież w zmiennej $objAdam trzymane jest Collection..

Jestes pewien?

  1. <?php
  2. $colFoo->addItem(new Foo("Adam", 14), "adam");
  3. ....
  4. $objAdam = $colFoo->getItem("adam");
  5. print $objAdam; // to jest FOO
  6. ?>
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: 25.08.2025 - 08:44