Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CI/OOP - Pola klasy a dane wysyłane do widoku
Forum PHP.pl > Forum > PHP
adbacz
Pracuję od dłuzszego czasu z CodeIgniter-em i zagłębiam się coraz bardziej w OOP. Napisałem sobie małą klasę, do tego model i kilka widoków (jak to MVC) i teraz moje pytanie. Czy wysyłać (za pomocą klasy CI) dane do widoku tworzac nowe zmienne czy może niektóre dane używać w polach klasy?

Zastanawia mnie co jest szybsze dla skryptu i wygodniejsze dla programisty. Do tej pory wysyłałem wszystko do widoku za pomocą klasy CI, która tworzy nowe zmienne dostepne w widoku, ale wydaje mi się, że używanie pól klasy jest lepszym wyjściem bo nie trzeba nic na nowo tworzyć i definiować ponieważ te pola są od razu dostępne na poziomie widoku.

Prosiłbym o zdanie starszych programistów, czy mój tok myślenia jest dobry?


PS. @Do moderacji: Nie wiedziałem gdzie dać temat, czy tu czy do Framework-ów, więc jeśli zły to prosze o przeniesienie.

Wpadłem na jeszcze jeden pomysł. Zamiast używać wielu pól danej klasy, na początku kazdej klasy zdefiniować puste pole np, $ViewData = array(); i podczas działania skryptu, dodawać kolejne wartości pod dany indeks. W taki sposób nie musiałbym zupełnie nic wysyłać do widoku, automatycznie wszystkie publiczne pola klasy byłyby tam widoczne a klasa odpowiedzialna za wysyłanie danych do widoku i wywoływanie widoku nie musiała by tworzyc nowych zmiennych co wg mnie zwiekszyłoby troszeczkę szybkość w większych, bardziej rozbudowanych skryptach.

Co Wy na to?
szok
Rób tak jak pisze dokumentacja.
Wtedy będzie to szybko i wydajnie pracowało.

Jak będziesz korzystał z pól klasy która jest kontrolerem to przy każdej akcji (metody) będziesz ustawiał te dane, albo nie potrzebnie zajmował pamieć skryptu, bo np: przy usuwaniu czegoś, nie potrzebujesz danych do wyświetlenia.
adbacz
Na początku skryptu ustawiam puste pole w którym jest pusta tablica:
  1. var $aViewData = array();

A do tego dopiero później przypisuje pod odpowiedni inteks jakieś dane. Wg mnie to nie jest jakies zbędne zajmowanie pamięci, pole wypełnia sie dopiero gdy w kontrolerze dojdzie do zapisania w nim jakiś informacji.

  1. //jakis skrypt
  2. $this->aViewData['option_one'] = 'jakies_dane';
  3. //Dalszy skrypt
  4. $this->aViewData['db_results'] = array();
  5. $this->aViewData['db_results'] = $this->model->pobierz_dane(); //Dane pobrane z bazy danych
  6. //I może coś jeszcze
  7. $this->load->view('nazwa/widoku'); //Tutaj tylko podaje nazwę widoku, nie podaję tablicy z danymi, które mam przesłąć bo one jjuż są zamieszczone w polu klasy $this->aViewData


Kiedyś gdzieś czytałem, że początkujący programiści zbyt często używają nowych zmiennych, których tak na prawdę nie musiałoby w danym miejscu być a co troszke obciąza skrypt/serwer. No więc idąc takim tokiem myślenia i wiedząc, że 95% metod wywoływanych w moich skryptach to akcje w których wyświetlam jakieś dane pomyślałem, że użycie jednego pola klasy nie jest czymś nadzwyczajnym a być może troszkę zaoszczędzę na tworzeniu zmiennych w widokach bo czasami jest tak, że do widoku przesyłałem dużo różnych wiadomości i tworzyło się średnio 15 różnych zmiennych w tym tablice ;/

Co masz na myśli pisząc o usuwaniu czegoś? Chodzi Ci o metodę która nie wyświetla nic tylko pośrednikiem w wymianie danych, po czym przekierowuje na inną?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.