Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]MVC początki
Forum PHP.pl > Forum > Przedszkole
RybkaNati
Witam, zwracam się z prośbą o pomoc. Nie mam problemów ze zrobieniem strony w php, ale zawsze robiłam to proceduralnie. Próbuje od kilku dni przerzucić się na Obiektowe PHP i chyba nie za dobrze mi idzie. Nie chce korzystać z bardzo rozbudowanych Frameworków, bo robię strony zazwyczaj dla własnego użytku i nie jest to nic skomplikowanego - więc po co mi tak duża platforma. Chce stworzyć coś dla siebie z możliwością ewentualnej rozbudowy w przyszłości. Doczytałam że wzór projektowy MVC jest specjalnie dla takich projektów. Zaznajomiłam się z kilkoma tekstami chodź nie są chyba dla mnie aż tak oczywiste... po tych przejściach próbuje stworzyć sobie coś takiego:

index.php
  1. <?php
  2. class Controller {
  3. public function aktualnosci() {
  4. $this->model = new Model();
  5. $this->model->aktualnosci();
  6. $this->view = new View();
  7. $this->view->aktualnosci();
  8. }
  9. }
  10.  
  11. class Model {
  12. public function aktualnosci() {
  13. $this->zmienna = 'OK';
  14. }
  15. }
  16.  
  17. class View {
  18. public function aktualnosci() {
  19. require 'views/aktualnosci.php';
  20. }
  21. }
  22.  
  23. $controller = new Controller();
  24. $controller->aktualnosci();
  25. ?>

Na razie Controller i Model i View prezentuje w jednym pliku

views/aktualnosci.php
  1. <hr />
  2. <?php echo $this->zmienna ?>


Pytanie brzmi czy o to chodzi w MVC(oczywiście controller, model i views będą w osobnych plikach) i czy albo jak przekazać z Model zmienne do View?

Dziękuje z góry za pomoc, ale dla mnie za bardzo to nie jest oczywiste sad.gif
memory
Ogólnie złą ścieżkę nauki wybrałeś. Wybierz jakiś mini framework silex , spawnframework i twórz smile.gif 3 razy szybciej pojmiesz zarys niż sam byś klepał swój własny twór
!*!
Cytat(RybkaNati @ 8.02.2014, 16:18:55 ) *
Pytanie brzmi czy o to chodzi w MVC(oczywiście controller, model i views będą w osobnych plikach) i czy albo jak przekazać z Model zmienne do View?


Tak, o to chodzi i takie są ogólne założenia. A jak przekazać dane do widoku np. jako parametr metody w formie tablicy.
RybkaNati
Cytat(memory @ 8.02.2014, 16:35:01 ) *
Ogólnie złą ścieżkę nauki wybrałeś. Wybierz jakiś mini framework silex , spawnframework i twórz smile.gif 3 razy szybciej pojmiesz zarys niż sam byś klepał swój własny twór

Właśnie sprawdzam spawnframework i zobaczę co z tego będzie, ale już na wstępie widzę na ich stronie że dla małych i średnich stron... a jaką ja mam pewność, że moja strona ne będzie musiała się bardzo rozrosnąć? I co wtedy?

Cytat(!*! @ 8.02.2014, 16:39:57 ) *
Tak, o to chodzi i takie są ogólne założenia. A jak przekazać dane do widoku np. jako parametr metody w formie tablicy.

A mogę prosić o przykład bo już kombinowałam na kilka sposobów i... bez efektów. sad.gif
!*!
Cytat(RybkaNati @ 8.02.2014, 17:24:31 ) *
Właśnie sprawdzam spawnframework i zobaczę co z tego będzie, ale już na wstępie widzę na ich stronie że dla małych i średnich stron... a jaką ja mam pewność, że moja strona ne będzie musiała się bardzo rozrosnąć? I co wtedy?


A mogę prosić o przykład bo już kombinowałam na kilka sposobów i... bez efektów. sad.gif


Nie ma FW dla małych, średnich czy dużych stron, są tylko te napisane optymalnie lub te w których panuje burdel przez co są przerośnięte.

Jak przestanie Ci odpowiadać jakiś FW to zmieniasz go na inny lub starasz się nagiąć jego możliwości.

przykład... a jak przekazujesz parametry do metody? wink.gif

  1. $theme = array('title' => $this->daneZmodelu());
  2.  
  3. $view = new View($theme);
  4. //lub
  5. $view->showNews($theme);
RybkaNati
Kurde coś przy-tępawa jestem chyba.... lub nie ogarniam za bardzo tego. dane mają pochodzić z Model
  1. <?php
  2. class Model {
  3. public function aktualnosci() {
  4. //np.
  5. //$zmienna = 'OK';
  6. //lub
  7. //$tablica = array('title' => 'Moja tablica z tytułem');
  8. }
  9. }
  10. ?>

Jak taką zmienną utworzyć lub tablicę w Modelu a potem w Controller przesłać do Widoku?

  1. <?php
  2. class Controller {
  3. public function aktualnosci() {
  4. //? $model = new Model();
  5. //? $model->aktualnosci();
  6.  
  7. $view = new View();
  8. $view->aktualnosci();
  9. }
  10. }
  11. ?>


a potem jak w samym View tę zmienna wyświetlić?

  1. <?php
  2. <p><?php echo $tablica['title'] ?></p>
  3. <p><?php echo $zmienna ?></p>
  4. ?>
Turson
Działasz na jakimś frameworku czy własny tworzysz? Z twojego kodu nie wiadomo.

Zasada działania jest taka. Powiedzmy, że chcesz pobrać z bazy coś.

Model -> metoda pobierania rekordów z bazy. Zwracasz tablicę. Np. metoda getAllNews() zwraca $rows
Kontroler -> robi instancję modelu i przekazuje go do widoku
Widok -> z odebranych danych z kontrolera np. pokazuje wszystkie newsy. $model->getAllNews()
RybkaNati
To jest własne rozwiązanie i potrzebuje jak wyżej przesłać dane z Modelu (zmienna i tablica) poprzez Controller do Widoku i odczytać go w Widoku. Mam z tym problem gdyż dopiero ogarniam temat Obiektowego PHP. Nie chce za bardzo gotowych rozwiązań, gdyż jako kobieta wole mieć nad wszystkim kontrolę. Poza tym wszyscy tłumaczą się, że lepiej z jakiego Frameworka niż pisać coś od nowa a przecież pisząc strukturalnie robiłam to cały czas! Plusem własnego rozwiązania MVC będzie dla meni to że classy będę miała już gotowe. Proszę więc o pomoc w rozwiązaniu tego jak dla mnie trudnego problemu... abym mogła próbować dalej i uczyć się na własnych metodach i błędach.
!*!
Może to Ci pomoże http://ferrante.pl/frontend/php/wzorzec-mvc-w-php/ lub http://phpedia.pl/wiki/MVC
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.