[PHP] Pierwsza Klasa |
[PHP] Pierwsza Klasa |
9.12.2017, 15:15:58
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 25.08.2017 Ostrzeżenie: (0%) |
Witam, czy mógłby mi ktoś wyjaśnić dlaczego moja funkcja use_monster zwraca tylko pierwszą zmienną? Domyślam się, że błąd jest banalny, ale nigdzie nie mogę znaleźć rozwiązania a błędu nie wyrzuca mi żadnego.
|
|
|
9.12.2017, 15:19:12
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
A jak sobie wyobrażasz, żeby zwróciło Ci jednocześnie kilka wartości? Po przecinku?
-------------------- |
|
|
9.12.2017, 15:35:00
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
return wychodzi natychmiast z metody. Najlepiej zwróć tablicę.
Natomiast poczytaj trochę o PSR i zdecyduj się na jedno nazewnictwo, najlepiej camelCase. -------------------- |
|
|
9.12.2017, 21:44:45
Post
#4
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) |
Nazewnictwo to aż nie taki wielki problem (chociaż też są przyjęte pewne standardy). Zacznij lepiej od zapamiętywania pewnych przyjętych "nawyków" przy programowaniu obiektowym.
1. Do każdego pola powinna być przypisana metoda GET i SET. 2. Pola metody powinny być prywatne a dostęp do nich (poprzez metody GET i SET) niech będzie publiczne. 3.Metodę Create_monster wrzuć w konstruktor. 4. Odnośnie nazewnictwa: Nazwy pól, czyli hp, att nazywamy z _ na początku. Czyli $this->_mp Nazwy metod, czyli przykładowo jakis GET. Pierwsza litera jest mała, czyli getHp() Nazwa obiektu z dużej litery, czyli tak jak masz u siebie class Monster I tyle jak na początek :-) Odnośnie problemu - dostęp do tych danych, pobieraj wtedy kiedy ich potrzebujesz. I niestety nie możesz zrobić tego cztery razy pisząc return :-) |
|
|
9.12.2017, 22:02:44
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Torchę popłynąłeś...
1. Gettery i Settery (bo tak to się nawzyaw) nie są wymagane, a czasami wręcz nie potrzebne. 2. _ się nie używa do określania widoczności properties. Odnoścnie "nazewnictwa kodu" oraz tego co i jak polecam zapoznać się z http://www.php-fig.org/psr/psr-1/ http://www.php-fig.org/psr/psr-2/ |
|
|
10.12.2017, 01:32:08
Post
#6
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) |
"Troche.." on zatonął.
prefixów w postaci kresek się nie używa, akcesory nie są potrzebne zawsze, przykład Value obiect.. |
|
|
10.12.2017, 08:51:07
Post
#7
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) |
Tak trochę to nie ja "popłynąłem" co WY mnie nie zrozumieliście.
Po pierwsze: Nic nie pisałem o GETTERACH i SETTERACH. To, że użyłem nazwy GET i SET wynika tylko właśnie z tego, że w jakiś sposób trzeba zmienną w pewien sposób "zmodyfikować" i do tego służy metoda, którą nazwałem sobie SET (popatrzcie na przykład jaki podałem w nazewnictwie). Mój błąd, że nie napisałem poprawnie. Po drugie: Prefiks w postaci _ przed zmienną ma określać WIDOCZNOŚĆ Gdzie ja tak napisałem? Napisałem tylko, że pola powinny być prywatne a metody publiczne. Oczywiście taki znak przed zmienną pomaga w późniejszej identyfikacji zmiennej ale nigdzie nie napisałem, że _ zmienia widoczność. Ten post edytował leonpro778 10.12.2017, 09:18:37 |
|
|
10.12.2017, 10:58:42
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Czyli właśnie setter.
_ już od wielu lat się nie używa. I dobrze pyton napisał choć może skrótowo. -------------------- |
|
|
10.12.2017, 13:02:20
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) |
1. Obiekt tworzymy przez konstruktor a nie dodatkową metode. 2. Używamy normalnych nazw, bez żadnych skrótów które mogą wprowadzić w błąd. 3. Domyślnie każda właściwość powinna być prywatna Ten post edytował markuz 10.12.2017, 13:05:08 -------------------- |
|
|
10.12.2017, 13:14:36
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Tak trochę to nie ja "popłynąłem" co WY mnie nie zrozumieliście. Poczytałeś o dobrych nawykach, ale nie doczytałeś, że trzeba je stosować z głową. Getterów i setterów się używa tylko tam, gdzie są potrzebne. A z tym dolnym podkreśleniem to niektórzy mają taką zasadę, ale moim zdaniem jest idiotyczna. A już mówić o niej jak o jakiejś prawdzie objawionej to jakiś kosmos. Ten post edytował SmokAnalog 10.12.2017, 13:15:13 |
|
|
10.12.2017, 14:05:56
Post
#11
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) |
Poczytałeś o dobrych nawykach, ale nie doczytałeś, że trzeba je stosować z głową. Co jest błędnego w moim rozumowaniu? Getterów i setterów się używa tylko tam, gdzie są potrzebne. Wyjaśnijmy jedno, czym dla Ciebie jest: getAttack() { return $this->_att; } A z tym dolnym podkreśleniem to niektórzy mają taką zasadę, ale moim zdaniem jest idiotyczna. Framework Zend - tam długo stosowali taką zasadę. Czy ja wiem czy jest to taka idiotyczna zasada? A już mówić o niej jak o jakiejś prawdzie objawionej to jakiś kosmos. Heh, czy ja pisałem o jakiejś prawdzie objawionej? |
|
|
10.12.2017, 14:21:05
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Framework Zend - tam długo stosowali taką zasadę. Czy ja wiem czy jest to taka idiotyczna zasada? Skolo klucz z twojej wypowiedzi: STOSOWALI - czas przeszlyKiedys ludzie przez wieki zyli w jaskiniach.... Teraz mamy PSR ktore standaryzuje pewne rzeczy, ale zawsze znajdzie sie taki ktos jak ty, kto nie ma internetu a jak juz sie dorwie do modemu u kogos to szerzy herezje sprzed stu lat na lewo i prawo -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
10.12.2017, 14:38:01
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Wpisz sobie
W Netbeans wciśnij alt+insert - getter & setter. Masz wygenerowane wszystkie metody tylko że nazewnictwo leży. Podkreślenie owszem, stosowało się mocno w ZF1, tyle że gdybyś tak teraz oznaczał wszystko w ten sposób miałbyś potężne problemy np z hydratorem (który swoją drogą stosowałem praktycznie od jego wymyślenia również w projektach ZF1 i wymagało przemyślenia od nowa zwłaszcza nazw encji - modeli). Ten post edytował viking 10.12.2017, 14:38:47 -------------------- |
|
|
10.12.2017, 15:02:37
Post
#14
|
|
Grupa: Zarejestrowani Postów: 146 Pomógł: 19 Dołączył: 1.03.2012 Ostrzeżenie: (0%) |
Skolo klucz z twojej wypowiedzi: STOSOWALI - czas przeszly Kiedys ludzie przez wieki zyli w jaskiniach.... Dobra, zadałem sobie trudu aby odnaleźć ich bieżącą dokumentację: Cytat For variables that are declared with private or protected visibility, the first character of the variable name MAY be a single underscore. This is the only acceptable application of an underscore in a variable name, and is discouraged (as it makes refactoring to public visibility more difficult). Member variables declared with public visibility SHOULD NOT start with an underscore. Oooo, i w końcu dobry argument: Wpisz sobie
W Netbeans wciśnij alt+insert - getter & setter. Masz wygenerowane wszystkie metody tylko że nazewnictwo leży. Podkreślenie owszem, stosowało się mocno w ZF1, tyle że gdybyś tak teraz oznaczał wszystko w ten sposób miałbyś potężne problemy np z hydratorem (który swoją drogą stosowałem praktycznie od jego wymyślenia również w projektach ZF1 i wymagało przemyślenia od nowa zwłaszcza nazw encji - modeli). Masz rację z generowaniem nazw. Ja jednak używam PHPStorm Efekt podobny dlatego i tak nazwy sobie piszę praktycznie od podstaw. Odpiszę dokładnie wieczorem bo z t telefonu piszę i ciężko jak cholera. |
|
|
10.12.2017, 15:06:45
Post
#15
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Nie bardzo rozumiem, o czym ma swiadczyc ten wycinek z dokumetnacji. Przeciez wyraznie napisali ze sie z tego wycofuja. Trzymaja tylko jako relikt przeszlosci.
Dostales linki do PSR - z nimi sie zapoznaj bo to jest to co teraz obowiazuje -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 06:11 |