![]() ![]() |
Post
#11281
|
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%)
|
To by było dopiero bez sensu, że "tu tak, a tam inaczej". Jak tak bardzo chcecie się obronić przed tym, to proponuję użyć metody magicznej __set i za każdym razem sprawdzać czy jest taka własność obiektu :-)
|
|
|
|
Post
#11282
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#11283
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
pyro i reszta taki wywód robicie na ten temat, a każdy zapomniał z was poco wgl jest wymagane deklarowanie właściwości w php, tu chodzi o ich zasięg.
Twój przykład daje możliwość przypisania ale właściwość ta z automaty staje się publiczna, a że public można pomijać w php to i samą deklarację można (IMG:style_emoticons/default/wink.gif) http://ideone.com/1d5x6j Przykład, celowo skasowałem public przy metodzie (IMG:style_emoticons/default/biggrin.gif) Ten post edytował com 17.02.2016, 20:30:53 |
|
|
|
Post
#11284
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
pyro i reszta taki wywód robicie na ten temat, a każdy zapomniał z was poco wgl jest wymagane deklarowanie właściwości w php, tu chodzi o ich zasięg. Twój przykład daje możliwość przypisania ale właściwość ta z automaty staje się publiczna, a że public można pomijać w php to i samą deklarację można (IMG:style_emoticons/default/wink.gif) http://ideone.com/1d5x6j Przykład, celowo skasowałem public przy metodzie (IMG:style_emoticons/default/biggrin.gif) @com, tu nie chodzi o widoczność takich właściwości, bo to że są one domyślnie publiczne nie wiem czy ktokolwiek miał jakieś wątpliwości. Tu chodzi o szczelność oprogramowania. Wyobraź sobie np. taką sytuację:
I teraz szukaj przyczyny błędu w kodzie tego typu, ale bardziej złożonym. Jak byś dostał błąd, to byś od razu wiedział co jest nie tak. Pomijam już kwestie typu podpowiadania przez IDE, etc... (EDIT: zresztą mój IDE w przeciwieństwie do PHP traktuje taki kod ostrzeżeniem i prawidłowo (IMG:style_emoticons/default/wink.gif) ) Zresztą temat zdaje się rozwinął ze względu na to, że ktoś napisał, że to przez dynamiczne typowanie PHP, co okazało się nie do końca prawdą ze względu na w/w opis. Ten post edytował pyro 17.02.2016, 21:03:43 |
|
|
|
Post
#11285
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
@up, owszem to IDE nie przepuści, zresztą getery setery większość można wyklikać, ale php się tego nie czepia własnie ze względu na to, że ktoś kiedyś założył iż pójdą na rękę programista i public można po dziś dzień pomijać, choć tego się nie robi ze względu na większa czytelność (IMG:style_emoticons/default/smile.gif) Twój przykład jest dobrym przykładem tego iż te założenie było złe, ale nikt sie teraz nad tym nie zastanawia bo mało kto tego używa (IMG:style_emoticons/default/smile.gif)
Taki błąd może się zdarzyć jak ktoś klepie w notatniku, czyli w miarę rzadko (IMG:style_emoticons/default/biggrin.gif) Ale faktem jest że PHP ma różne takie kwiatki (IMG:style_emoticons/default/wink.gif) http://stackoverflow.com/questions/8163877...rk-in-php-5-3-x (IMG:style_emoticons/default/biggrin.gif) http://ideone.com/FAIsVR Jeszcze lepiej (IMG:style_emoticons/default/biggrin.gif) Ten post edytował com 17.02.2016, 21:15:43 |
|
|
|
Post
#11286
|
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%)
|
...
I teraz szukaj przyczyny błędu w kodzie tego typu, ale bardziej złożonym. Jak byś dostał błąd, to byś od razu wiedział co jest nie tak. ... Sytuacja analogiczna z kodem nieobiektowym: Skoro tam powinien rzucać błąd, to tu też? Ja nie twierdzę, że to jest super i tak powinno być, ale dla mnie to logiczne, że konsekwentność jest zachowana. Powoli PHP wprowadza mechanizmy takie "scalar type declarations" (PHP7), więc wszystko zmierza do większej kontroli. Może za parę będziemy musieli deklarować wszystko w PHP? Kto wie :-) |
|
|
|
Post
#11287
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
redeemer akurat w tym wypadku to absurd, a tam faktycznie by się przydało, bo jak to potem kontrolować jak przez błąd programisty wypuścisz sobie jakiś public na świat, z danymi np chronionymi itp. a w Twoim przypadku kto mi broni zrobić zmienna $name = 'xxx'; oraz w warunku $nme = 'yyy';
co do "scalar type declarations" nie miał wyjścia jak mu pod nosem wyrósł hack (IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#11288
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
@redeemer, jak wyżej.
Nie wiem czemu próbujesz sprowadzić zmienne i właściwości do bycia tym samym. Pomimo, że obu przypisujesz wartości są to dwie różne rzeczy. Dlaczego właściwościom mogę ustawić widoczność public/protected/private, a zmiennym nie? No właśnie, bo to dwie różne rzeczy. |
|
|
|
Post
#11289
|
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%)
|
IIRC z punktu widzenia PHP właściwość to zmienna (+zend_property_info(?)), ale głowy nie dam, a w kod mi się nie chce teraz patrzeć :-)
|
|
|
|
Post
#11290
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
To może powiem inaczej, odpowiadając na przykład który podałeś
Sytuacja analogiczna z kodem nieobiektowym:
Nie jest to analogiczny przykład, bo w tym przypadku interpreter nie ma możliwości przewidzieć, czy deklaracja zmiennej $nme to wynik błędu czy celowego działania, a w tym przykładzie z klasą, który ja podałem jest taka możliwość - brak zadeklarowania zmiennej, której przypisujesz wartość byłaby przyczyną powstania błędu. Zresztą jak napisałem wyżej nawet IDE wtedy pluje ostrzeżeniem, co sprawia że taka funkcjonalność nawet już tak jakby jest, tylko niestety jedynie od strony IDE (IMG:style_emoticons/default/wink.gif) (w Twoim przykładzie nie pluje ostrzeżeniem, bo nie ma powodu) . Dość jednoznacznie to wskazuje, że taka funkcjonalność byłaby nie kosmicznym wymysłem, a sensowną implementacją języka. Ten post edytował pyro 17.02.2016, 22:04:44 |
|
|
|
Post
#11291
|
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%)
|
Zgoda, analogia nietrafiona.
... (w Twoim przykładzie nie pluje ostrzeżeniem, bo nie ma powodu) ... A nie powinno wypluć "unused variable"? :-) Ps. Mój poprzedni przykład z __set był na wyrost bo za manualem "__set() is run when writing data to inaccessible properties". Wystarczy więc:
|
|
|
|
Post
#11292
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
No tak, ale musiałbyś to robić ręcznie za każdym razem, a sęk w tym, żeby język był szczelny samoistnie (IMG:style_emoticons/default/wink.gif)
|
|
|
|
Post
#11293
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
oj wyczuwam posypało by się masę kodów (IMG:style_emoticons/default/biggrin.gif) przez moment to działało według stack w 5.3 (IMG:style_emoticons/default/biggrin.gif)
ale to chyba nie prawda bo nie udało mi się odtworzyć (IMG:style_emoticons/default/biggrin.gif) |
|
|
|
Post
#11294
|
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 10 Dołączył: 17.03.2012 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#11295
|
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%)
|
Jak się nazywała technika, w której dajmy na to obrazki mające float left czy display inline-block ustawiały się ładnie w rzędach, nawet jeśli jeden obrazek miał większą wysokość to inne nie były przesuwane do nowego wiersza tylko ładnie "wskakiwały" na wolne miejsce? Widziałem kiedyś nazwę tego, tutoriale ale nie mogę skojarzyć.
Ten post edytował Fred1485 24.02.2016, 19:18:27 |
|
|
|
Post
#11296
|
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%)
|
|
|
|
|
Post
#11297
|
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%)
|
Dokładnie, dzięki wielkie.
|
|
|
|
Post
#11298
|
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%)
|
|
|
|
|
Post
#11299
|
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%)
|
Co poniektórzy puryści na pewno by się na Twój kod oburzyli, zauważając, że istnieje ArrayObject (IMG:style_emoticons/default/nerdsmiley.png)
|
|
|
|
Post
#11300
|
|
|
Grupa: Zarejestrowani Postów: 425 Pomógł: 6 Dołączył: 7.08.2012 Ostrzeżenie: (0%)
|
Od kilku dni analizuję cały silnik www.quikr.com, i jestem pełen podziwu dla tego projektu jest tam tak dużo rozwiązań że nie ogarniam (IMG:style_emoticons/default/wink.gif)
Ten post edytował ZenekN 25.02.2016, 11:56:00 |
|
|
|
![]() ![]() |
|
Aktualny czas: 14.06.2026 - 04:14 |