[PHP]OOP - kilka pytań o sens i poprawność "mojego" kodu |
[PHP]OOP - kilka pytań o sens i poprawność "mojego" kodu |
5.01.2023, 10:17:43
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 482 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Cześć,
Przerobiłem na własne potrzeby kod z ksiązki ale nie do końca rozumiem, czy robię to logicznie. Generalnie to kod działa, ale sądzę, że mam tam zbędne kawałki. dodatkowo pytanie - czy to w ogóle tak powinno wyglądać? klasa PageDisplay:
Teraz w index.php mam wywołanie tej klasy i metod:
Moje pytania. 1. Uważam, że obiekt klasy PageDisplay jest zbędny. Skoro odwołuję się tylko do jej metod to przerobiłbym processRequest() , displayHeader($title) oraz displayFooter() na metody statyczne i w index.php odwoływałbym się do PageDisplay::processRequest Ma to sens? 2. Czy w $page = new PageDisplay($_SERVER['REQUEST_URI']); powinienem jako paramert podać właśnie REQUEST_URI? Właściwie tylko to działa.... 3. Jak mam się odwoływać do $_POST czy $_GET w reszcie kodu ? No bo już nie tradycyjnie if(isset($POST['add'])){ //add(); } skoro mamy taki zapis $this->post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); Trochę się w tym pogubiłem i potrzebuję naprowadzenia. Dzięki z góry. Ten post edytował sadistic_son 5.01.2023, 10:21:38 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
5.01.2023, 10:39:29
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
- Brakuje typowania
- jak zwykle nazwy zmiennych z 4 liter przyklady: $request i $this->request przeciez te zmiennej nazywaja sie tak samo a zawieraja zupelnie co innego albo to: $requestString = \explode("?", $request); przeciez explode zwraca tablice a ty zmienna nazwales string, jakby zawierala tekst. - case SUBDOMAIN."add-product": klasa nie powinna miec wiedzy o jakies tam stalej SUBDOMAIN - do GET/POST powinnienies miec oddzielna klase - i nie, unikaj metod statycznych - $this->request = empty($requestString) ? $request : $requestString[0]; explode zawsze zwraca tablice z przynjamniej jednym elementem wiec nigdy nie bedzie puste wiec twoj kod moze wygladac tak: $this->request = $requestString[0]; pomijajac rzecz jasna nazewnictwo o ktorym juzpisalem - no i badz konsekwentny, jak juz uzywasz glownego namespace dla explode, to uzywaj i dla empty czy tam innych metod z glownego namespace -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.01.2023, 10:47:40
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 482 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
- Brakuje typowania Ma być wszędzie? Do każdej zmiennej i metody? To chyba stosunkowo nowe podejście, bo jak zaczynałem przygodę z php w 2006 to wtedy było mówione, że w php tego robić nie trzeba. A przynajmniej tak pamiętam..- jak zwykle nazwy zmiennych z 4 liter Tylko $page, $get i $post mają mniej niż 5 liter (no i $this). To mam te 3 zmienne nazwać inaczej? Nie mówią same za siebie czym są?przyklady: $request i $this->request Nie rozumiem. Jak tworzę private $request; i używam go w metodzie jako parametru, to odwołując się do $this->request odwołuję się do innej zmiennej?przeciez te zmiennej nazywaja sie tak samo a zawieraja zupelnie co innego - $this->request = empty($requestString) ? $request : $requestString[0]; Ok, racja. Przepisałem to żywcem z książki, to widzę, że autor popełnił bubel.explode zawsze zwraca tablice z przynjamniej jednym elementem wiec nigdy nie bedzie puste wiec twoj kod moze wygladac tak: $this->request = $requestString[0]; - case SUBDOMAIN."add-product": Całą tą stonę mam w folderze, powiedzmy 'stronka'. Więc jej adres to localhost/stronka a po przeniesieniu na hosting będzie mójhosting.pl/stronka. Więc skoro korzystam z $_SERVER['REQUEST_URI'] to po wybraniu /add-product $_SERVER[REQUEST_URI'] zawiera /stronka/add-product. Jak inaczej w takim razie miałby wyglądać ten case skoro nie powinienem tam dodać SUBDOMAIN, które ma wartość '/stronka/' ?klasa nie powinna miec wiedzy o jakies tam stalej SUBDOMAIN - do GET/POST powinnienies miec oddzielna klase Dobra, się zrobi.- i nie, unikaj metod statycznych Dlaczego? To zła praktyka? Mam zawsze tworzyć obiekt?A moje pytania 2 i 3 ? -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
5.01.2023, 11:13:45
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
Cytat Ma być wszędzie? Do każdej zmiennej i metody? To chyba stosunkowo nowe podejście, bo jak zaczynałem przygodę z php w 2006 to wtedy było mówione, że w php tego robić nie trzeba. A przynajmniej tak pamiętam.. Przez 17 lat BARDZO wiele sie zmienilo. Naprawde nie kieruj sie tym co ciebie wtedy uczono. Sam caly czas powtarzasz ze chcesz sie uczyc dobrych praktyk itp a ciagle mu z toba walczyc o to samo Cytat Tylko $page, $get i $post mają mniej niż 5 liter (no i $this). To mam te 3 zmienne nazwać inaczej? Nie mówią same za siebie czym są? A czy ja cos mowilem o tych zmiennych? przeciez wyraznie napisalem co jest zle Cytat Nie rozumiem. Jak tworzę private $request; i używam go w metodzie jako parametru, to odwołując się do $this->request odwołuję się do innej zmiennej? No teraz ja nie kumam. Gdzie cos takiego napisalem? Cytat Całą tą stonę mam w folderze, powiedzmy 'stronka'. Więc jej adres to localhost/stronka a po przeniesieniu na hosting będzie mójhosting.pl/stronka. Więc skoro korzystam z $_SERVER['REQUEST_URI'] to po wybraniu /add-product $_SERVER[REQUEST_URI'] zawiera /stronka/add-product. Jak inaczej w takim razie miałby wyglądać ten case skoro nie powinienem tam dodać SUBDOMAIN, które ma wartość '/stronka/' ? To powinno byc przekazane w konstruktorze PAgeDisplay. Generalne zadne klasy nie powinny wiedziec co sie dzieje poza nimi, czyli nie powinny miedzy innymi znac jakie sa stale w twojej aplikacji. Klasa to zamkniety twor, jesli cos potrzebuje to dostaje to w konstruktorze Cytat Dlaczego? To zła praktyka? Mam zawsze tworzyć obiekt? Tak, zla praktyka. Naprawde wyjatkowo sie zdarza ze musisz uzyc metody statycznej. Ja osobiscie tylko raz jej uzylem w jednym projekcie. Cytat A moje pytania 2 i 3 ? Nie kumam pytania 2 a na 3 chyba ci juz odpowiedzialem przeciez. Cytat Całą tą stonę mam w folderze, powiedzmy 'stronka'. Więc jej adres to localhost/stronka a po przeniesieniu na hosting będzie mójhosting.pl/stronka. Więc skoro korzystam z $_SERVER['REQUEST_URI'] to po wybraniu /add-product $_SERVER[REQUEST_URI'] zawiera /stronka/add-product. Jak inaczej w takim razie miałby wyglądać ten case skoro nie powinienem tam dodać SUBDOMAIN, które ma wartość '/stronka/' ? yy... ze jak? Co ma folder w ktorym znajduje sie twoja strona do adresu URL? No zdecydowanie cos zle robisz -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.01.2023, 11:15:54
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 482 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Tak, chcę się uczyć nowych dobrych praktyk. Ale jak coś zapamiętałem inaczej, a nie dowiedziałem się jeszcze że obecnie wygląda inaczej to dopytuję, nie kłócę się Ok, czyli typujemy zmienne. Kurde, sporo zmieniania kodu przede mną Chyba zostawię to na koniec, na dopieszczanie kodu jak już wszystko będzie działać.
przyklady: $request i $this->request Ten fragment zrozumiałem, że $request oraz $this->request zawierają co innego, czyli to inne zmienne. Nie to miałes na myśli? Więc co?przeciez te zmiennej nazywaja sie tak samo a zawieraja zupelnie co innego To powinno byc przekazane w konstruktorze PAgeDisplay. Generalne zadne klasy nie powinny wiedziec co sie dzieje poza nimi, czyli nie powinny miedzy innymi znac jakie sa stale w twojej aplikacji. Klasa to zamkniety twor, jesli cos potrzebuje to dostaje to w konstruktorze A ok, czaję. Czyli tak?
Co do pytania 2 to... Konstrukcja switch w klasie PageDisplay zakłada, że zostanie zaincludowane coś w zależności od tego co user kliknie, wpisze itd. Czyli założyłem, że jak wpisze strona.pl/stronka/add-product no to go przeniesie na stronę dodawania produkctu. W tym wypadku zczytuję z $_SERVER['REQUEST_URI'] to co user wpisał w pasku adresu, lub czy kliknął w link do tego adresu. Ale kiedy naciśnie on submit w formularzu przenoszącym do stronka.pl/stronka i prześle dane $_POSTem czy $_GETem (GET nie planuję używać) to jakoś muszę wychwycić, że np został naciśnięty submit i że wypełnił input. Stąd moje pytanie jak to w OOP realizować. Czy w switchu, w konkretnym case powinienem mieć jeszcze zwykłe if(isset($_POST['submit'] && $_POST['inputText'])) ? I z ostatnim zdaniem wiąże się moje 3. pytanie. Skoro mam utworzyć oddzielną klasę do obsługi post i get (nazwijmy ją requestProcessor) to mam się potem tak odwoływać do danych przesłanych z formularza? Dobrze rozumuję? Moje pytania mogą być pokrętne bo w OOP czuję się trochę jak dziecko we mgle. Ten post edytował sadistic_son 5.01.2023, 11:19:37 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
5.01.2023, 11:22:17
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
Cytat Ale jak coś zapamiętałem inaczej, a nie dowiedziałem się jeszcze że obecnie wygląda inaczej to dopytuję, nie kłócę się Sek w tym ze ci juz przynajmniej 3 raz o tym mowimy, wiec nie mow ze nie widziales I nie, nie czekaj do konca, tylko poprawiaj na biezaco Cytat Ten fragment zrozumiałem, że $request oraz $this->request zawierają co innego, czyli to inne zmienne. Nie to miałes na myśli? Więc co? No wlasnie to mialem na mysli. Skoro zawieraja co innego to czemu tak samo sie nazywaja? Cytat $this->subdomain = SUBDOMAIN; No nie. Wyraznie mowie ma byc przekazane w konstuktorze a nie ustawione w konstruktorze.... Konstruktor to nadal klasa i konstuktor nie wie ze instnieje stala SUBDOMAIN. public function __construct($request, $subdomain) { // (...) $this->subdomain = $subdomain; } Ale jak juz pisalem w czesniej, cos masz zwalone, patrz ten komment: "yy... ze jak? Co ma folder w ktorym znajduje sie twoja strona do adresu URL? No zdecydowanie cos zle robisz" Cytat Co do pytania 2 to... Konstrukcja switch w klasie PageDisplay zakłada, że dostanie zaincludowane coś w zależności od tego co user kliknie, wpisze itd. Czyli założyłem, że jak wpisze strona.pl/stronka/add-product no to go przeniesie na stronę dodawania produkctu. W tym wypadku zczytuję z $_SERVER['REQUEST_URI'] to co user wpisał w pasku adresu, lub czy kliknął w link do tego adresu. Ale kiedy naciśnie on submit w formularzu przenoszącym do stronka.pl/stronka i prześle dane $_POSTem czy $_GETem (GET nie planuję używać) to jakoś muszę wychwycić, że np został naciśnięty submit i że wypełnił input. Stąd moje pytanie jak to w OOP realizować. Czy w switchu, w konkretnym case powinienem mieć jeszcze zwykłe if(isset($_POST['submit'] && $_POST['inputText'])) ? I z ostatnim zdaniem wiąże się moje 3. pytanie. Skoro mam utworzyć oddzielną klasę do obsługi post i get (nazwijmy ją requestProcessor) to mam się potem tak odwoływać do danych przesłanych z formularza? REQUEST_URI zawiera ten "url", wiec ok. Ten "url" istnieje zarowno jak przeyslasz get i post wiec w czym problem? Klase powinienes nazwac Request, jak to sie nazywa w kazdym normalnym FW. Klasa ta powinna ci zwracac twoje REQUEST_URI jak rowniez POST i GET. Moze tez miec metode isPost() ktore bedzie ci zwracala ci info czy to idzie get czy post itd -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.01.2023, 11:56:51
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 482 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
No wlasnie to mialem na mysli. Skoro zawieraja co innego to czemu tak samo sie nazywaja? Ej no weź mnie pobij, ale teraz nie rozumiem. Albo ciebie, albo w ogóle rozminąłem się z jakimś sporym fragmentem traktującym o OOP.Zmienne (1), (2) i (3) nie zawierają tego samego? (1) i (2) tak, tak? Jak rozumiem mówisz, że (1,2) i (3) nie zawierają tego samego? Tak? Dobrze teraz rozumiem? Jesli tak to to wywraca moje pojmowanie... No nie. Wyraznie mowie ma byc przekazane w konstuktorze a nie ustawione w konstruktorze.... Ok, już czaję. Thx.(...) REQUEST_URI zawiera ten "url", wiec ok. Ten "url" istnieje zarowno jak przeyslasz get i post wiec w czym problem? Ok, tak zrobię. Do wyczyszczenia post z syfu od usera używam filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);Klase powinienes nazwac Request, jak to sie nazywa w kazdym normalnym FW. Klasa ta powinna ci zwracac twoje REQUEST_URI jak rowniez POST i GET. Moze tez miec metode isPost() ktore bedzie ci zwracala ci info czy to idzie get czy post itd Czy do $_SERVER['REQUEST_URI'] oraz $_SERVER['HTTP_HOST'] też mam użyć FILTER_SANITIZE_STRING ? Zakładam też że nie filter_input_array bo to są stringi. Czy całą $_SERVER potraktować tym filter_input_array ? "yy... ze jak? Co ma folder w ktorym znajduje sie twoja strona do adresu URL? No zdecydowanie cos zle robisz" Mam hosting o adresie stronka.plW nim mam foldery strona1 i strona2. W każdym z tych folderów index.php do obsługi zupełnie innych stron. Strona1 to forum budowlane a strona2 to portal o świnkach morskich No więc stronka.pl/strona1 to zupełnie co innego od stronka.pl/strona2 prawda? A więc mam w config.php: A w formularzu: Ten post edytował sadistic_son 5.01.2023, 11:57:13 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
5.01.2023, 12:04:03
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
A dlaczego tych oddzielnych stronek nie wstawisz jako oddzielne subdomeny? Dla bezpieczeństwa i czytelności nie powinny być nawet dostępne publiczne, a zakładam że przy takiej strukturze są.
Popatrz sobie też na jakieś przykładowe klasy np https://github.com/laminas/laminas-http/tree/2.19.x/src https://github.com/illuminate/http -------------------- |
|
|
5.01.2023, 12:14:13
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
ja mowie o $request przekazanej w konstuktorze i o $this->request ( private $request;).
Ok, w wszczegolnym przypadku beda mialy to samo, ale generalnie $reqiest zawiera twoje URI a $this->request tylko kawalek. Wiec $reqiest w konstuktorze powinno sie nazywac $uri a $this->reqiest powinno sie nazywac no nie wiem $this->shortUri ROzumiesz oczym teraz mowie? Cytat Ok, tak zrobię. Do wyczyszczenia post z syfu od usera używam filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); Nie powinno sie uzywac globalnie takich funkcji. Czasami, a w zadsadzie bardzo czesto, chcesz wkladac do bazy dokladnie to co user ci wpisal a nie wyfiltrowane. Filtrujesz tylko wtedy kiedy potrzeba. Takie globalne robienie wszystkiego to syf w kodzie. Cytat Czy do $_SERVER['REQUEST_URI'] oraz $_SERVER['HTTP_HOST'] też mam użyć FILTER_SANITIZE_STRING ? Zakładam też że nie filter_input_array bo to są stringi. Czy całą $_SERVER potraktować tym filter_input_array ? Patrz wyzej Cytat Mam hosting o adresie stronka.pl W nim mam foldery strona1 i strona2. W każdym z tych folderów index.php do obsługi zupełnie innych stron. Strona1 to forum budowlane a strona2 to portal o świnkach morskich smile.gif No więc stronka.pl/strona1 to zupełnie co innego od stronka.pl/strona2 prawda? No i wlasnie masz zle. Kazda stronka powinna miec swoja konfiguracje, swoja domene/subdomene (jak to napisal viking) i jej katalog powinieni byc ustawony jako katalog startowy. Wowczas twoj URI zawsze wyglada tak samo -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.01.2023, 12:29:34
Post
#10
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) |
Ej no weź mnie pobij, ale teraz nie rozumiem. Albo ciebie, albo w ogóle rozminąłem się z jakimś sporym fragmentem traktującym o OOP. Ludzie... Ile zapytań odnośnie jednego requesta... chodzi o to że w posiadając tak samo nazwane zmienne będziesz się mylić odnośnie ich stosowania... Przeczytałem nową lekturę i też zauważyłem że mam duże braki... już wiem co muszę nadrobić... https://itporady.pl/php-mysql/nowosci-w-php-82 -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
5.01.2023, 12:31:49
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 482 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
ja mowie o $request przekazanej w konstuktorze i o $this->request ( private $request;). Ok, w wszczegolnym przypadku beda mialy to samo, ale generalnie $reqiest zawiera twoje URI a $this->request tylko kawalek. Wiec $reqiest w konstuktorze powinno sie nazywac $uri a $this->reqiest powinno sie nazywac no nie wiem $this->shortUri ROzumiesz oczym teraz mowie? Tak , terqz juz rozumiem. $request w konstruktorze już nie jest tym samym co $this->request skoro zostało potraktowane $this->request = $requestArray[0]; więc powinno nazywać się inaczej. Dzięki. Nie powinno sie uzywac globalnie takich funkcji. Czasami, a w zadsadzie bardzo czesto, chcesz wkladac do bazy dokladnie to co user ci wpisal a nie wyfiltrowane. Filtrujesz tylko wtedy kiedy potrzeba. Takie globalne robienie wszystkiego to syf w kodzie. Dobra, to jak zabiorę się za zczytywanie danych z formularzy i przetwarzanie ich to się zagłębie w temat, i pewnie pojawią się kolejne tematy w tej sprawie No i wlasnie masz zle. Kazda stronka powinna miec swoja konfiguracje, swoja domene/subdomene (jak to napisal viking) i jej katalog powinieni byc ustawony jako katalog startowy. Wowczas twoj URI zawsze wyglada tak samo Fak, to o tym nawet nie wiedziałem. Nigdy sobie tym głowy nie zaprzątałem, bo w sumie nie uważałem nawet za potrzebne, skoro po moich stronkach latają tylko nieobeznani znajomi, lub ewentualnie to jakieś wizytówki small biznesów, bez formularzy nawet. Ale trzeba będzie to wszystko kiedys poprawić żeby było po bożemu. Dzięki nospor i viking za pomoc. EDIT: Z artykułu podanego przez Johnasa to jest ciekawe: Wersja PHP 8.1 wprowadziła modyfikator readonly do właściwości klas. Wersja PHP 8.2 wprowadza ten modyfikator do oznaczenia klasy, dzięki czemu można skrócić zapis i nie oznaczać po kolei wszystkich właściwości klas jako readonly.
Wersja w PHP 8.2 może wyglądać następująco:
Ten post edytował sadistic_son 5.01.2023, 12:35:32 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
5.01.2023, 12:57:55
Post
#12
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) |
EDIT: Z artykułu podanego przez Johnasa to jest ciekawe: Wersja PHP 8.1 wprowadziła modyfikator readonly do właściwości klas. Wersja PHP 8.2 wprowadza ten modyfikator do oznaczenia klasy, dzięki czemu można skrócić zapis i nie oznaczać po kolei wszystkich właściwości klas jako readonly.
Wersja w PHP 8.2 może wyglądać następująco:
tak, ale chyba również powinieneś określać typ zwracanych danych. Dla przykładu:
Edit: Na 100% źle to napisałem, bo sam nie mam teraz przykładu Ten post edytował Johnas 5.01.2023, 13:02:24 -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
5.01.2023, 13:30:02
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 482 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Ale to co ja wekleiłem to jest żywcem z tej strony co podałeś
-------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
5.01.2023, 13:30:38
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6297 Dołączył: 27.12.2004 |
Cytat Edit: Na 100% źle to napisałem, bo sam nie mam teraz przykładu Dla konstruktora nie okresla sie typu zwracanych danyc, a dla Sadistica juz pisalem o typowaniu zarowno parametrow jak i zwracanych typow -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.01.2023, 19:01:20
Post
#15
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) |
Ale to co ja wekleiłem to jest żywcem z tej strony co podałeś Wiem, ja chciałem naprowadzić Ciebie na to o czym mówił nospor Dla konstruktora nie okresla sie typu zwracanych danyc, a dla Sadistica juz pisalem o typowaniu zarowno parametrow jak i zwracanych typow wiem, dlatego też próbowałem napisać funkcję przykładową, ale siedzę w bibliotece bo nie ładuje mi macbooka i nie mam tutaj phpstorma - on doskonale podpowiada jak powinna być napisana składnia klasy -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
5.01.2023, 19:19:51
Post
#16
|
|
Grupa: Zarejestrowani Postów: 344 Pomógł: 70 Dołączył: 15.07.2014 Ostrzeżenie: (0%) |
(...) nie mam tutaj phpstorma - on doskonale podpowiada jak powinna być napisana składnia klasy OMG xDDD co my, jako programiści, byśmy zrobili bez inteligentnego IDE xDDD Takie rzeczy powinieneś sam wiedzieć, a nie bazować na podpowiedzi programu, w którym pracujesz. |
|
|
5.01.2023, 19:42:59
Post
#17
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) |
OMG xDDD co my, jako programiści, byśmy zrobili bez inteligentnego IDE xDDD Takie rzeczy powinieneś sam wiedzieć, a nie bazować na podpowiedzi programu, w którym pracujesz. Dzięki za radę, teraz już wiem że powinienem wiedzieć -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 23:08 |