Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Niezrozumialy konstruktor obiektu, tylko posrednio dotyczy mvc ;)
Wolfie
post 17.02.2009, 15:57:40
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam

Probuje zrozumiec wzorczec mvc zawarty tutaj :
Wzorzec MVC

Ale wystrpuje tutaj niezrozumialy dla mnie sposob instancjacji obiektu klasy , mianowicie :

W przykladzie w linku wyzej mamy zdefiniowana klase DataAccess, tutaj wszystko zrozumialem.
Ale nastepnie w klasie ProductModel mamy cos takiego :

  1. <?php
  2. class ProductModel {
  3.    /**
  4.     * Private
  5.     * $dao an instance of the DataAccess class
  6.     */
  7.    var $dao;
  8.  
  9.    //! A constructor.
  10.    /**
  11.     * Constucts a new ProductModel object
  12.     * @param $dbobject an instance of the DataAccess class
  13.     */
  14.    function ProductModel (&$dao) {
  15.        $this->dao=& $dao;
  16. ?>


Jakim cudem parametr $dao jest instancja klasy DataAccess ? tak jak to jest napisane tutaj w komentarzu.
Tak samo dalej taki sam przypadek dla klasy ProductView:

  1. <?php
  2. class ProductView {
  3.    /**
  4.     * Private
  5.     * $model an instance of the ProductModel class
  6.     */
  7.    var $model;
  8.  
  9.    /**
  10.     * Private
  11.     * $output rendered HTML is stored here for display
  12.     */
  13.    var $output;
  14.  
  15.    //! A constructor.
  16.    /**
  17.     * Constucts a new ProductView object
  18.     * @param $model an instance of the ProductModel class
  19.     */
  20.    function ProductView (&$model) {
  21.        $this->model=& $model;
  22.    }
  23. ?>


Jak widzimy tutaj $model jest instancja klasy ProductModel.
Zupelnie tego nie rozumiem.
Go to the top of the page
+Quote Post
nospor
post 17.02.2009, 16:01:11
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jakim cudem parametr $dao jest instancja klasy DataAccess ?

A jakby napisali:
* $dao an instance of the AlaMaKota class
To bys strzelal ze jest klasy AlaMaKota?
To jest tylko komentarz, informujacy:
- nas czytajacych
- edytory podpowiadające
ze tu jest oczekiwany obiekt danej klasy. Ale mozemy tam wlozyc cokolwiek. I albo skrypt to obsluzy albo nie smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
revyag
post 17.02.2009, 16:03:03
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


@Wolfie, zobacz ten przykład to wyjaśnia:
  1. <?php
  2. $dao=& new DataAccess ('localhost','user','pass','dbname');
  3. $productModel=& new ProductModel($dao);
  4. $productController=& new ProductController($productModel,$_GET);
  5. echo $productController->display()
  6. ?>


Chyba nie za bardzo rozumiesz podstawy programowania i przekazywanie parametrów.


--------------------
-------------

------
Go to the top of the page
+Quote Post
Wolfie
post 17.02.2009, 16:04:00
Post #4





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Czyli rozumiem ze w miejsce komentarza powinien byc kod ktory tworzy obiekt klasy ?
Go to the top of the page
+Quote Post
nospor
post 17.02.2009, 16:06:27
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie, komentarz ma zostan nie ruszony.
A skad do klasy dojdzie obiekt DataAccess to revyag juz ci w kodzie pokazal


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wolfie
post 17.02.2009, 16:09:20
Post #6





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Z tego co mi sie wydaje to te komentarze sluza po to zeby zakomunikowac co sie dzieje w danym miejscu wiec np:

  1. <?php
  2. //! A constructor.
  3.    /**
  4.     * Constucts a new DataAccess object
  5.     * @param $host string hostname for dbserver
  6.     * @param $user string dbserver user
  7.     * @param $pass string dbserver user password
  8.     * @param $db string database name
  9.     */
  10.    function DataAccess ($host,$user,$pass,$db) {
  11.        $this->db=[url="http://www.php.net/mysql_pconnect"]mysql_pconnect[/url]($host,$user,$pass);
  12.        [url="http://www.php.net/mysql_select_db"]mysql_select_db[/url]($db,$this->db);
  13.    }
  14. ?>


mowi nam to co widac , wiec tak samo w pozostalych przypadkach komentarz wyzej mowi nam co sie dzieje nizej.
Czyz nie ?
Go to the top of the page
+Quote Post
nospor
post 17.02.2009, 16:11:44
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no tak, komentarze są po to, by opisywac sytuacje. Ale jak ich nie bedzie to nie ma to zadnego wplywu na skrypt.

Dodatkowo dzieki komentarzom porzadne edytory podpowiadają składnie.
Na podstawie komentarzy tworzone też są automatycznie dokumentacje.

Ale komentarz to komentarz i nie ma zadnego wplywu na kod.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
webdevil
post 17.02.2009, 16:17:11
Post #8





Grupa: Zarejestrowani
Postów: 82
Pomógł: 18
Dołączył: 2.02.2009

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


Cytat(Wolfie @ 17.02.2009, 16:09:20 ) *
Z tego co mi sie wydaje to te komentarze sluza po to zeby zakomunikowac co sie dzieje w danym miejscu wiec np:
mowi nam to co widac , wiec tak samo w pozostalych przypadkach komentarz wyzej mowi nam co sie dzieje nizej.
Czyz nie ?


ja bym to ujął inaczej - w tych wypadkach co pokazałeś komentarze @param mówią czym MAJĄ być przekazywane zmienne (np. instancją klasy DataAccess) a nie co się dzieje w danym miejscu...
Go to the top of the page
+Quote Post
Wolfie
post 17.02.2009, 16:19:22
Post #9





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


No tak to rozumiem ze komentarze nie maja wplywu na kod
Ale cos autor mial do przekazania
Wiec jezeli komentarz wyzej opisuje sytuacje ktora jest ponizej to

  1. <?php
  2. //! A constructor.
  3.    /**
  4.     * Constucts a new ProductView object
  5.     * @param $model an instance of the ProductModel class
  6.     */
  7.    function ProductView (&$model) {
  8.        $this->model=& $model;
  9.    }
  10. ?>


Ja w dalszym ciagu nie rozumiem tej kwestii ze zmienna $model jest instancja klasy ProductModel....
Go to the top of the page
+Quote Post
webdevil
post 17.02.2009, 16:25:05
Post #10





Grupa: Zarejestrowani
Postów: 82
Pomógł: 18
Dołączył: 2.02.2009

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


Cytat(Wolfie @ 17.02.2009, 16:19:22 ) *
zmienna $model jest instancja klasy ProductModel....


nie - nie jest! ona ma nią być. tak jak pisał revyag w swoim poście - Ty przy tworzeniu instancji klasy ProductView jako parametr masz podać właśnie instancję klasy ProductModel...
Go to the top of the page
+Quote Post
Wolfie
post 17.02.2009, 16:36:51
Post #11





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


A jakby to wygladalo w praktyce ? Bo nie jestem jeszcze mistrzem w programowaniu obiektowym..

$obiekt = new ProductViev($model);

Cos takiego ?
Go to the top of the page
+Quote Post
nospor
post 17.02.2009, 16:39:45
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




przeciez dostales juz kod od revyaga!!!!


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mike
post 17.02.2009, 16:41:37
Post #13





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Wolfie @ 17.02.2009, 16:36:51 ) *
Cos takiego ?
Dokładnie tak.

Cytat(nospor @ 17.02.2009, 16:39:45 ) *
przeciez dostales juz kod od revyaga!!!!
~nospor wiesz przecież, że tu ludzie czytają bez zastanowienia się. Po co się wysilać?
Go to the top of the page
+Quote Post
nospor
post 17.02.2009, 16:43:55
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A poto, by nie mowil ze bez ostrzezenia dostal ostrzezenie aaevil.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wolfie
post 17.02.2009, 16:49:44
Post #15





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


nie kapuje nic z tych komentarzy.

Nie wogole nie wysilam sie , probuje zrozumiec mvc od 5 dni , ale to wogole nie jest wysilek przeciez......

Tylko boje sie cokolwiek pisac o mvc bo i tak czytalem ze wszystkie posty o mvc beda zamkniete

Ten post edytował Wolfie 17.02.2009, 16:52:04
Go to the top of the page
+Quote Post
nospor
post 17.02.2009, 16:52:20
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Nie wogole nie wysilam sie , probuje zrozumiec mvc od 5 dni , ale to wogole nie jest wysilek przeciez......


sluchaj, dostajesz kod:
  1. <?php
  2. $dao=& new DataAccess ('localhost','user','pass','dbname');
  3. $productModel=& new ProductModel($dao);
  4. $productController=& new ProductController($productModel,$_GET);
  5. echo $productController->display();
  6. ?>

a ty jak gdyby nigdy nic z tekstem:
"A jak to bedzie wygladac z praktycznego punktu widzenia"

Naprawde nie widzisz, ze cos tu jest nie tak?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mike
post 17.02.2009, 16:52:49
Post #17





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Wolfie @ 17.02.2009, 16:49:44 ) *
Nie wogole nie wysilam sie , probuje zrozumiec mvc od 5 dni , ale to wogole nie jest wysilek przeciez......
Ty się lepiej zabierz za podstawy programowania obiektowego a nie za wzorce projektowe.
Nie rozumiesz prostych pojęć typu przekazanie instancji klasy jako argument funkcji.
Go to the top of the page
+Quote Post
Wolfie
post 17.02.2009, 16:54:22
Post #18





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Widze , to ze komentarze nie sa zgodne z tym co sie dzieje w kodzie smile.gif

Bo nigdzie nie ma obiektu klasy ProductView z parametrem $model lub obiektu klasy DataAccess z parametrem $dbobject

Trzeba bylo od razu po ludzku - Przekazanie instancji klasy jako parametru funkcji to akurat rozumiem smile.gif

Ten post edytował Wolfie 17.02.2009, 16:55:58
Go to the top of the page
+Quote Post
mike
post 17.02.2009, 16:59:25
Post #19





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Wolfie @ 17.02.2009, 16:54:22 ) *
Bo nigdzie nie ma obiektu klasy ProductView z parametrem $model lub obiektu klasy DataAccess z parametrem $dbobject
Mam zagadkę dla Ciebie ~Wolfie. Jaka jest różnica w deklaracjach następujących funkcji:
  1. <?php
  2.  
  3. function jakaśFunkcja($blabla) {
  4. }
  5.  
  6. function jakaśFunkcja($dupaBlada) {
  7. }
  8.  
  9. function jakaśFunkcja($viewModel) {
  10. }
  11.  
  12. function jakaśFunkcja($productController) {
  13. }
  14.  
  15. ?>

Odpowiedź: żadna.
Go to the top of the page
+Quote Post
Wolfie
post 17.02.2009, 17:01:54
Post #20





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


No to po co je wywolywac z roznym parametrem ?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 14.08.2025 - 09:19