Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][oop] Zmienne w klasie. Czym się różnią?
luis2luis
post 11.07.2019, 08:39:44
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Witam.

Uczę się dopiero programowania obiektowego. Już sobie radze, ale czasami trafiam na niejasne elementy.
Analizuje pewną gotową klase i mam taki kawałek kodu:


  1.  
  2. <?
  3. class AuthDataV1
  4. {
  5.  
  6. public $login = 'test';
  7. public $masterFid = 'test';
  8. public $password = 'test';
  9.  
  10. function __construct($cfg) {
  11.  
  12. $this->login = $cfg['dostawa_dpd_fid'];
  13. $this->masterFid = $cfg['dostawa_dpd_login'];
  14. $this->password = $cfg['dostawa_dpd_pass'];
  15.  
  16. }
  17. };
  18.  
  19. $authData = new AuthDataV1($cfg);
  20.  
  21. ....
  22.  
  23. ?>
  24.  


Na początku są podane zmienne public .. następnie w metodzie Construct znowu mamy je zdefiniowane. Te pierwsze to zmienne testowe, jak nie podam swoich docelowych poprzez $cfg wtedy zmienne testowe są tylko brane pod uwagę?
Troche niejasne jest to dla mnie. Mam ciągle problem ze sposobami definiowania zmiennych w klasach.


Go to the top of the page
+Quote Post
viking
post 11.07.2019, 09:10:47
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Akurat ten przykład jest bardzo słaby, choćby dlatego że jak którykolwiek z kluczy tablicy będzie pusty to poleci ostrzeżenie. Nie ma typowania więc $cfg może równie dobrze być stringiem.

  1. <?php
  2. class AuthDataV1
  3. {
  4.  
  5. public $login;
  6. public $masterFid;
  7. public $password;
  8.  
  9. public function __construct(array $cfg)
  10. {
  11. $this->login = $cfg['dostawa_dpd_fid'] ?? 'test';
  12. $this->masterFid = $cfg['dostawa_dpd_login'] ?? 'test';
  13. $this->password = $cfg['dostawa_dpd_pass'] ?? 'test';
  14.  
  15. }
  16. }
  17.  
  18. $cfg['dostawa_dpd_fid'] = 1;
  19. $authData = new AuthDataV1($cfg);
  20.  
  21. echo $authData->login;
  22. echo $authData->password;


Ten post edytował viking 11.07.2019, 09:11:20


--------------------
Go to the top of the page
+Quote Post
luis2luis
post 11.07.2019, 09:54:57
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Cytat(viking @ 11.07.2019, 10:10:47 ) *
Akurat ten przykład jest bardzo słaby, choćby dlatego że jak którykolwiek z kluczy tablicy będzie pusty to poleci ostrzeżenie. Nie ma typowania więc $cfg może równie dobrze być stringiem.


Jest to wycinek ze specyfikacji kuriera DPD. Wg mnie ten kod również był słaby. Ale ze względu że nie mam doświadczenia w OOP, brakowało pewności siebie.

Twój kod jest dużo dużo lepszy smile.gif


------------- EDIT --------------
czy ten kawałek kodu:
  1. $this->login = $cfg['dostawa_dpd_fid'] questionmark.gif 'test';


nie powinien wyglądac tak? :

  1. $this->login = (!empty($cfg['dostawa_dpd_fid']) ? $cfg['dostawa_dpd_fid'] : 'test');


Ten post edytował luis2luis 11.07.2019, 10:46:08
Go to the top of the page
+Quote Post
nospor
post 11.07.2019, 13:37:25
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
nie powinien wyglądac tak? :
Jak nie uzywasz php7 to tak, musisz sie bawic w takie potworki co pokazales.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
luis2luis
post 11.07.2019, 13:58:53
Post #5





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Cytat(nospor @ 11.07.2019, 14:37:25 ) *
Jak nie uzywasz php7 to tak, musisz sie bawic w takie potworki co pokazales.

ok fajnie. Myśle, że jeszcze przez pewien czas bede tak robił żeby zachować wsteczną zgodność.

Chociaż sprawa dosyć dziwna, byłem pewien że mam na serwerze najnowszą wersje php 7.xxx


------------------ EDIT --------------

Jak się okazało na serwerze było ustawione php 5.6 ohmy.gif Dałem na 7,2 i wszystko gra.


Czy jest gdzieś fajnie opisane jakie jeszcze skróty tego typu są dostępne w php 7? Czytałem o nowościach w php 7, ale nigdzie nie widziałem o tym info.

Ten post edytował luis2luis 11.07.2019, 14:08:53
Go to the top of the page
+Quote Post
viking
post 11.07.2019, 14:03:59
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


7 miesięcy temu zakończyło się wsparcie dla 7.1, za 4 miesiące koniec dla 7.2. A ty się zastanawiasz nad jakąś dziwną wsteczną zgodnością.


--------------------
Go to the top of the page
+Quote Post
luis2luis
post 11.07.2019, 14:23:18
Post #7





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 25.11.2015

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


Cytat(viking @ 11.07.2019, 15:03:59 ) *
7 miesięcy temu zakończyło się wsparcie dla 7.1, za 4 miesiące koniec dla 7.2. A ty się zastanawiasz nad jakąś dziwną wsteczną zgodnością.



Racja, robię wg najnowszych metod i tyle.
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: 29.03.2024 - 08:18