Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem OOP
frytek92
post 16.08.2009, 09:50:00
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
marcinpruciak
post 16.08.2009, 10:01:58
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Nie działą, bo cała konstrukcja jest bez sensu i nie ma przekazanych wartości do konstruktora. 

Powinno to wyglądać tak:

  1. class new_object {
  2.  
  3. public $new_value;
  4.  
  5. function __construct($object_value){
  6.  
  7.  $this -> new_value = $object_value;
  8.  
  9. }
  10.  
  11. $object = new new_object($object_value);
  12.  
  13. echo $object->new_value;






--------------------
Go to the top of the page
+Quote Post
frytek92
post 16.08.2009, 10:34:43
Post #3





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

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


Chodzi mi o coś innego zeby w jednej funkcji zdefinowac zmienne ktore bede mógł używać w innych.


--------------------
Go to the top of the page
+Quote Post
Vielta
post 16.08.2009, 10:44:32
Post #4





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 9.04.2007
Skąd: Szczecin

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


  1. <?php
  2. class new_object {
  3. private $new_value;
  4.  
  5. public function __construct($new_value) {
  6. $this->new_value = $new_value;
  7. }
  8.  
  9. public function echo_system() {
  10. echo $this->new_value;
  11. }
  12. }

Takie coś?
Go to the top of the page
+Quote Post
frytek92
post 16.08.2009, 11:01:08
Post #5





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

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


Dokładnie mi chodzi zeby za pomoca __construct można było definować zmienne. A potem np przez inne metody je wyswietlać.

  1.  
  2. $object -> new_value = 'Witaj';
  3.  
  4. $object -> echo_system();
  5.  


--------------------
Go to the top of the page
+Quote Post
vokiel
post 16.08.2009, 12:34:10
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Raczej tak:

  1. $object = new new_object('Witaj');
  2. $object -> echo_system();


BTW Pierwszego posta "zaczełem"??


--------------------
Go to the top of the page
+Quote Post
frytek92
post 16.08.2009, 12:38:21
Post #7





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

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


Juz sobie poradzilem troche innego sposobu uzyłem smile.gif zabawa z globalami wiem ze to nie jest nurt oop ale wazne ze dziala i to bardzo dobrze.

chodzilo mi dokladnie o cos w stylu smile.gif :

  1.  
  2. class company_class {
  3.  
  4. public $new_value;
  5. public $new_type;
  6.  
  7. function __construct(){
  8.  
  9. global $new;
  10.  
  11. $new['value'] = 'Wartosc';
  12.  
  13.  
  14. }
  15.  
  16. function see_echo(){
  17.  
  18. echo $new['value'];
  19.  
  20. }
  21.  


Ten post edytował frytek92 16.08.2009, 12:39:55


--------------------
Go to the top of the page
+Quote Post
-=Peter=-
post 16.08.2009, 15:12:26
Post #8





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... 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
frytek92
post 17.08.2009, 06:43:00
Post #9





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

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


I oto mniej więcej mi chodziło każdemu z was daje po pochwale bo każdy mi w jakikolwiek sposób pomógł.

Pozdrawiam i uważam temat za zamknięty.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:12