Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> $this->metoda1->pole1
marcus753
post 17.07.2014, 14:18:49
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


Witajcie czy jest możliwość przekazania do metody zmiennej w taki sposób: ?

  1. $this->post->name


w CI często jest spotykana konstrukcja typu:

  1. $this->load->library('upload');


w Laravelu mamy nawet:

  1. $user->posts()->withTrashed()->get();


Dzięki za pomoc wink.gif


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
Crozin
post 17.07.2014, 14:23:34
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jakiej zmiennej, do jakiej metody?
Go to the top of the page
+Quote Post
marcus753
post 17.07.2014, 14:28:43
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


np.

  1. class input{
  2.  
  3. $post['nazwa1'] = "test";
  4. $post['nazwa2'] = "test2";
  5.  
  6. public function get_post($nazwa){
  7. return $post[$nazwa];
  8. }
  9. }


tyl tylko że tera odwołuje się tak:

  1. $input->get_post('nazwa1');


a chciałbym:

  1. $input->get_post->nazwa1;


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
adbacz
post 17.07.2014, 14:36:00
Post #4





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Żeby tak zrobić, musiałbyś w publicznej właściwości "get_post" trzymać obiekt z publicznymi właściwościami generowanymi na poczekaniu z przychodzącego POSTa.... bez sensu;)

W CI jest tak zrobione, bo jest to "stara szkoła" programowania obiektowego. Już się tak nie programuje i nie powinieneś iść w te ślady. To co jest zrobione w Laravell, to jest przemyślana sktruktura obiektów, coś należy do czegoś i można to coś za pomocą tego czegoś pobrać (masło maślane wink.gif).

Napisz może gdzie chcesz tego użyć i w jakim kontekście, to zaproponujemy Ci jakieś bardziej "nowoczesne" i bardziej optymalne rozwiązanie problemu.

Ten post edytował adbacz 17.07.2014, 14:47:54
Go to the top of the page
+Quote Post
by_ikar
post 17.07.2014, 16:56:27
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


http://forum.php.pl/index.php?s=&showt...t&p=1114642
Go to the top of the page
+Quote Post
marcus753
post 17.07.2014, 17:10:38
Post #6





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


dzięki wielkie za pomoc wink.gif po prostu zmienna musi być obiektem wtedy możemy w nieskończoność używac konstrukcji
klasa->własciwosc->obiekt->wlasciwosc->obiekt....

Mam jeszcze pytanie o jedną rzecz, załóżmy że do klasy chciałbym dodawać dynamicznie pola i nigdy nie wiem jakie ostatecznie pola będzie miała ta klasa...

np. robie sobię klase post i w konstruktorze przypisuje wszystkie zmiennej ze zmiennej $_POST do klasy post

coś w stylu:

  1.  
  2. class Post{
  3.  
  4. public function dodaj(){
  5.  
  6. foreach ($_POST as $name => $value){
  7.  
  8. private $this->$name = $value;
  9.  
  10. }
  11. }
  12.  


niestety ze zdefiniowanym dostępem private już nie działa ;(

I pytanie klucz czy coś takiego jest poprawne z punktu widzenia OOP ?

Piszę teraz klasę Input która ma mi zarządzać wszystkimi plikami jakie odbieram od użytkownika i chciałbym zrobić sobie podklasy File, POST, GET, SERVER oraz klasy cookie i session

Ten post edytował marcus753 17.07.2014, 17:19:11


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
by_ikar
post 17.07.2014, 20:08:44
Post #7





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Tylko pytanie po co? Pamiętam twoje tematy o laravel. No więc tam już masz to wszystko out of box. I w wielu innych FW również. Jaki jest cel tego co tutaj robisz tak w skrócie?
Go to the top of the page
+Quote Post
marcus753
post 17.07.2014, 23:36:09
Post #8





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


Dzięki za zainteresowanie ikar Lkingsmiley.png

Po co ? temat rzeka, setki razy wałkowany. Swoją przygodę z frameworkami zaczynałem od codeignitera, potem przerzuciłem się na laravela którego cały czas się uczę ale podstawy myślę że udało mi się opanować. Teraz zapoznaje się z symfony przy którym zrozumiałem co to znaczy porządny framework a w planach mam jeszcze zapoznanie się z silexem choć to jedynie okrojona wersja symfony więc cudów się nie spodziewam…

Przez to skakanie myślę że do frameworków nabrałem pewnego dystansu - przestałem je obdarzać uczuciami są dla mnie jedynie narzędziami a co z tym się wiążę dostrzegam ich pewne wady. Symfony nadaje się do dużych projektów ale spróbujcie zainstalować go na serwerze wirtualnym kupionym na allegro za 5zł (już widzę ten uśmieszek na waszych ustach wink.gif ) - to jak strzelanie z armaty do komara. Codeigniter jest bardzo fajny ale projekt powoli umiera… Laravel choć seksowny jest w Polsce stosunkowo mało znany,mniejszy od symfony nadal dosyć duży, zresztą 3/4 kodu zostało pobrane z innych frameworków więc to raczej zbiór bibliotek z małymi dodatkami - do tego jakoś mnie do siebie nie przekonał… z innych możliwości mamy kohane która umiera, yii gdzie na drugą wersję czekamy i czekamy i nic… falcona szybki ale również na ołówku go nie postawimy.

Szukam czegoś pokroju codeignitera - z małymi zmianami: ma się szybko ładować, uwzględniać nową architekturę, ma być jasny, przejrzysty, dawać mi białe płutno gotowe do pracy, uniwersalny - działać na każdym serwerze i dawać użytkownikowi możliwość wywalenia połowy plików jeśli z nich nie korzysta. Jestem frontend developerem i myślę że podobnie jak 90% użytkowników potrzebuje zaledwie kilku funkcjonalności: sesje,cooki,bazadanych,mvc i możliwość prostego pisania bibliotek rozszerzających (jeśli coś będę potrzebował to sobie to albo napiszę albo skopiuję) - to wszystko.

Z różnych baz danych nie korzystam więc po co mi zapytania ORM które niekiedy potrafią być dłuższe od czytelnego kodu SQL, system szablonów - czytelny ale to jest tylko bajer nakładka, zresztą twiga mogę sobie doinstalować i tak mógłbym wymieniać.

Prosty przykład: w laravelu ktoś chciał zrobić logowanie z uwzględnieniem emaila lub loginu + hasła w SQL to jedna linijka ale nie tu trzeba było robić specjalną funkcję która oszukuje domyślny panel, kolejna sprawa: $table->rememberToken(); załóżmy że nie chcę tego mieć i co ? kicha muszę to mieć takie pole w tabeli koniec kropka.

Niestety nie znalazłem nic ciekawego co spełniało by moje kryteria. CI był najbliżej z nich ale nadal nieco za duży np. wstawianie buziek i uśmieszków - po cholerę to potrzebne ?

Na razie piszę swoje biblioteki tak głównie w celach edukacyjnych potem spróbuje to jakoś skleić mvc jeśli nic z tego nie będzie ok zostawię temat ale może akurat uda mi się stworzyć coś praktycznego z czego będę korzystał i na czym będę zarabiał. Do tej pory byłem wstanie się obejść bez ffw więc pisząc swój ubogi i poszatkowany ale dostosowany do moich potrzeb fw raczej źle na tym nie wyjdę.


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
nrm
post 18.07.2014, 01:16:38
Post #9





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


Cytat(marcus753 @ 17.07.2014, 23:36:09 ) *
Prosty przykład: w laravelu ktoś chciał zrobić logowanie z uwzględnieniem emaila lub loginu + hasła w SQL to jedna linijka ale nie tu trzeba było robić specjalną funkcję która oszukuje domyślny panel

yyy, że co?

Cytat(marcus753 @ 17.07.2014, 23:36:09 ) *
kolejna sprawa: $table->rememberToken(); załóżmy że nie chcę tego mieć i co ? kicha muszę to mieć takie pole w tabeli koniec kropka.

Nie musisz bo:
1. w ogóle NIE musisz korzystać z Laravelowego AUTHa
2. a jak chcesz już korzystać to możesz podmienić implementacje na swoją. Ja tak zrobiłem z sesjami.


--------------------
Go to the top of the page
+Quote Post
marcus753
post 18.07.2014, 06:53:35
Post #10





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


Cytat(nrm @ 18.07.2014, 02:16:38 ) *
yyy, że co?


na przykład coś takiego:
  1. $field = filter_var($usernameinput, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
  2.  
  3. if (Auth::attempt(array($field => $usernameinput, 'password' => $password), true)) {
  4. // ...
  5. }


Cytat(nrm @ 18.07.2014, 02:16:38 ) *
Nie musisz bo:
1. w ogóle NIE musisz korzystać z Laravelowego AUTHa
2. a jak chcesz już korzystać to możesz podmienić implementacje na swoją. Ja tak zrobiłem z sesjami.


Otóż to tyle że coraz częściej dochodzę do wniosku że: z logowania wbudowanego nie korzystam, paginacje mam połączoną z wyszukiwaniem więc też nie korzystam, migracje ciekawe ale importuje/eksportuje plik co jest łatwiejsze więc nie korzystam? I jak tak podsumuje z czego korzystam to nagle okazuje się że pół frameworka jest zbędne wink.gif

Walidacja formularzy ? ja formularze waliduje ajaxem i znowu trzeba pisać coś swojego? tak naprawdę laravel nie daje mi nic więcej oprócz samego szkieletu i 20 MB plików gdzie w CI miałem zaledwie 4 MB a robił to samo, u siebie pewnie będę miał < 1MB a uzyskam ten sam efekt więc może dobrze było by napisać sobie taki zwykły szkielet a przy okazji się czegoś nauczyć - skoro go nie ma na rynku wink.gif

Ten post edytował marcus753 18.07.2014, 06:55:37


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
by_ikar
post 18.07.2014, 12:54:31
Post #11





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Formularze możesz sprawdzać javascriptem tylko w celu nie przeładowywania strony, bo tak czy inaczej po stronie PHP zawsze powinieneś filtrować dane. Podstawowa zasada - nigdy nie ufaj użytkownikowi, oraz nigdy nie myśl że użytkownik jest na tyle głupi żeby ci nie zapodać sqlinjection.

No tak, ale do takich małych rzeczy, nadają się komponenty symfony. Sam na potrzeby mojego znajomego u którego jak aplikacja ma powyżej 1mb alokowanej pamięci, to przy większym ruchu wywala mu out of memory (100k UU dziennie). Dlatego napisałem żebyś powiedział co chcesz na tym zdziałać. Symfony to nie tylko FW ale reużywalne komponenty, bierzesz taki routing, httpfoundation, httpkernel, classloader, dispatcher i już masz "swojego" frameworka. Dorzucasz do tego debug i masz obsługę błędów. Do tego dorabiasz trochę swojej logiki i gotowe. A masz już tam gotowych wiele rzeczy, masz routing, masz dispatchera, masz request+response i obsługę sesji (różnych). Czyli w sumie prawie to samo co silex. Masz jakieś podstawowe rzeczy, jak request, czy response, czy obsługę błędów i z resztą robisz co chcesz. Potrzebujesz ORM? No to sobie go integrujesz. Nie potrzebujesz? No to napisz sobie jakąś prostą klasę do łączenia z bazą, albo użyj po prostu PDO. Pisanie wszystkiego całkowicie od nowa IMO mija się z celem. Ja już to przechodziłem, i mogę ci powiedzieć że to się w ogóle nie kalkuluje. Super, zyskasz na 10 plikach mniej (przeważnie interfejsach), ale na prędkości wczytywania aplikacji czy ilości alokowanej pamięci zyskasz jakieś 10-15%. No chyba że napiszesz to bardzo ubogo, to wtedy rezultaty może będą lepsze, ale i możliwości również będą mniejsze. Poważnie, zainteresuj się komponentami symfony, bo to jest na prawdę bardzo dobry kod, który jest już przetestowany, który na bieżąco ma wprowadzane poprawki, nad którym siedzi więcej niż 1 osoba.
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.06.2025 - 02:43