Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem OOP
frytek92
post
Post #1





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 9.11.2007
Skąd: Goleniów

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


Witam ostatnio zaczełem uczyc sie programowania oop. I tutaj mam taka konstrukcje i nie mam pojecia czemu mi nie działa.

  1.  
  2. <?php
  3.  
  4. class new_object {
  5.  
  6. public $new_value;
  7.  
  8. function __construct(){
  9.  
  10. $object_value = $this -> new_value;
  11.  
  12. }
  13.  
  14. function echo_system(){
  15.  
  16. echo $object_value;
  17.  
  18. }
  19.  
  20. }
  21.  
  22. ?>
  23.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
-=Peter=-
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Cytat
zabawa z globalami wiem ze to nie jest nurt oop ale wazne ze dziala i to bardzo dobrze.

Oj, wstydziłbyś się pisać takie coś w forum o OOP oraz podawać taki zbereźny kod... (IMG:style_emoticons/default/tongue.gif) Jeśli już chcesz takie coś osiągnąć, to poczytaj o metodach magicznych __get() oraz __set(), one są rozwiązaniem Twojego problemu, a nie jakieś zmienne globalne...

Edit: jako iż mam dobry humor napiszę Ci uproszczone rozwiązanie Twojego problemu (pisane z palca):

  1. class Company{
  2. private $value;
  3. private $type;
  4. private $data = array();
  5.  
  6. public function __construct(){
  7. $this->wartosc = 'Wartosc';
  8. }
  9.  
  10. public function print(){
  11. return $this->wartosc;
  12. }
  13.  
  14. public function __get($name){
  15. return isset($this->data[$name]) ? $this->data[$name] : null;
  16. }
  17.  
  18. public function __set($name, $value){
  19. $this->data[$name] = $value;
  20. }
  21. }
  22.  
  23. $obj = new Company();
  24. echo $obj->print();


Powinno nawet działać bez metod magicznych __get i __set (ułomność php). Jednak najlepszym rozwiązaniem tego problemu będzie utworzenie odpowiednich składowych tej klasy. To składowe służą do tego celu, który chcesz osiągnąć, czyli przykładowo:

  1. class Company{
  2. private $wartosc;
  3.  
  4. public function __construct(){
  5. $this->wartosc = 'wartosc';
  6. }
  7.  
  8. public function getWartosc(){
  9. return $this->wartosc;
  10. }
  11. }


Ten post edytował -=Peter=- 16.08.2009, 15:23:53
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: 13.10.2025 - 19:08