Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny]Jak zrozumieć Yii?
Forum PHP.pl > Forum > PHP > Frameworki
Bejkrools
Witam, programuję troszkę w PHP i zacząłem zastanawiać się nad pracą programisty ale po pierwszej odpowiedzi na moje CV załamałem ręce. Miałem rozwiązać jakieś zadanko z Yii więc niestety samo PHP nie wystarczy, ale do rzeczy.

Kupiłem sobie książkę (żeby jakoś zacząć, bo dokumentacja do mnie nie przemawiała) YiiFramework z Heliona. Po pierwsze książka zawiera mnóstwo błędów (które wyłapałem znając trochę PHP). Zamiast jednak cokolwiek sobie rozjaśnić, pojawiło się znacznie więcej pytań. Zadam kilka z nich, może któreś z Was będzie mogło mi wyjaśnić.

1. Pomóżcie mi zrozumieć na czym polega MVC. Zawsze wszystko robiłem w plikach php według podstron mojej, ewentualnie pliku z funkcjami. Nie potrafię logicznie ogarnąć tego MVC chociaż bardzo chcę. Nie po co jest, bo to w teorii wiem.

2. Czym się różni -> od =>?

3. Czym jest $this i czemu występuje np. w kontrolerze ("$this->render(...)) chociaż nigdzie go nie definiuje?

4. Co oznacza np. echo CHtml::submitButton('Dodaj') - działanie rozumiem, ale ten podwójny dwukropek mnie zastanawia.
wujek2009
4. podwójny dwukropek oznacza odwołanie się to funkcji statycznej np. masz klase
  1. class Chtml
  2. {
  3. public static function wyswietlCzas()
  4. {
  5. return time();
  6. }
  7. }


więc: Chtml::wyswietlCzas() - zwyczajne odwoływanie się do funkcji bez tworzenia instancji nowej klasy (czyli np. $helper = new Chtml; $helper->wyswietlCzas())

3. "$this" operuje wewnątrz danych klas oraz klas dziedziczących - odwołuje się do danych funkcji, itd. np.
  1. class News
  2. {
  3. public function getCzas()
  4. {
  5. return time();
  6. }
  7.  
  8. public function wyswietlCzas()
  9. {
  10. return date('d.m.Y', $this->getCzas());
  11. }
  12. }


pracuje wewnątrz klasy "News", która akurat z nikim nie dziedziczy, itd - więc w funkcji wyswietlCzas odwołuje się do INNEJ funkcji Z TEJ SAMEJ KLASY.

2. to pytanie jest wciąż z kategorii klas? pierwsze to zwyczajny "separator", który będzie odwoływał się do innych klas (patrz pkt wyżej, $this->getCzas())[/b] - wiadmo jak jest funkcja statyczna to nie odwołasz się w ten sposób. Druga opcja to bardziej w tej chwili kojarzy mi się przy tablicach array - lub w warunkach IF aby porównać czy cena jest większa bądź równa smile.gif podaj konkretny przykład, który Cie nurtuje.
semafor1985
Cytat(wujek2009 @ 21.03.2014, 06:46:57 ) *
- lub w warunkach IF aby porównać czy cena jest większa bądź równa


"większa bądź równa" >= wink.gif
freemp3
Na początek proponuję zaznajomić się z klasami i ogólnie obiektowością w PHP, dopiero jak to ogarniesz zacznij uczyć się MVC. W innym przypadku nie ogarniesz tego, a jeśli nawet to zajmie Ci to o wiele więcej czasu.
Turson
Cytat
Witam, programuję troszkę w PHP i zacząłem zastanawiać się nad pracą programisty ale po pierwszej odpowiedzi na moje CV załamałem ręce. Miałem rozwiązać jakieś zadanko z Yii więc niestety samo PHP nie wystarczy, ale do rzeczy.

Chyba w wymaganiach pracy było o Yii bo inaczej sobie nie wyobrażam, że ot tak rzucili Yii smile.gif

Cytat
1. Pomóżcie mi zrozumieć na czym polega MVC. Zawsze wszystko robiłem w plikach php według podstron mojej, ewentualnie pliku z funkcjami. Nie potrafię logicznie ogarnąć tego MVC chociaż bardzo chcę. Nie po co jest, bo to w teorii wiem.

Nie jest takie trudne jak się wydaje, ale nie chcę się wymądrzać, bo sam miałem taki sam problem na początku. Tutaj tłumaczyć ci co to MVC po raz enty nie będziemy.
Temat nie ma nic wspólnego z Yii

Cytat
2. Czym się różni -> od =>?

Koledzy wyżej nie zrozumieli. => jest używane w tablicach (podstawy)
  1. $tablica = array('indeks'=>'wartosc');
pyro
Cytat(Bejkrools @ 20.03.2014, 23:42:34 ) *
Witam, programuję troszkę w PHP i zacząłem zastanawiać się nad pracą programisty ale po pierwszej odpowiedzi na moje CV załamałem ręce. Miałem rozwiązać jakieś zadanko z Yii więc niestety samo PHP nie wystarczy, ale do rzeczy.


Na ten moment nie polecam Ci szukania pracy, bo pytania są ewidentnie na etapie "kupiłem książkę i zacząłem się uczyć". Może gdzieś się załapiesz na praktyki, ale generalnie lepiej się czegoś nauczyć najpierw.

Cytat(Bakerools)
1. Pomóżcie mi zrozumieć na czym polega MVC. Zawsze wszystko robiłem w plikach php według podstron mojej, ewentualnie pliku z funkcjami. Nie potrafię logicznie ogarnąć tego MVC chociaż bardzo chcę. Nie po co jest, bo to w teorii wiem.


Kwestia MVC to jest właśnie "po co to jest". Więc zaryzykuję stwierdzenie, że jednak nie wiesz po co on jest wink.gif . Nie będę się rozpisywał na jego temat, bo pisane o nim było już milion razy, ale jako radę dam zastosowanie w praktyce.

Cytat(Bakerools)
2. Czym się różni -> od =>?


Cytat(Turson @ 21.03.2014, 08:34:15 ) *
Koledzy wyżej nie zrozumieli. => jest używane w tablicach (podstawy)
  1. $tablica = array('indeks'=>'wartosc');


"->" służy odwołaniom do metod / pól obiektu. Natomiast "=>" służy ogólnie do odwołań klucz => wartość. Tak jak powiedział @Turson stosowane raczej w tablicach, ale nie tylko przy ich definiowaniu, ale np. pętli foreach.

Cytat(Bakerools)
3. Czym jest $this i czemu występuje np. w kontrolerze ("$this->render(...)) chociaż nigdzie go nie definiuje?


Bo dziedziczy go z innej klasy?

Cytat(Bakerools)
4. Co oznacza np. echo CHtml::submitButton('Dodaj') - działanie rozumiem, ale ten podwójny dwukropek mnie zastanawia.


To jest operator odwołań statycznych, ma fajną nazwę (uwaga, pewnie popełnię literówkę): PAAMAYIM NEKUDOTAYIM.

Powodzenia.
aniolekx
Po twoich pytaniach wnioskuje ze nawet podstaw nie znasz.
szok
Bez wiedzy na temat OOP w PHP niema szans abyś mógł poprawnie programować w jakimkolwiek frameworku PHP.
Po 1.
https://www.google.pl/search?q=PHP+OOP&...91&ie=UTF-8
Po 2.
http://pl.phptherightway.com/

Chcesz zostać dobrym programistą PHP? Proponuje przeczytać dość dokładnie tę prezentację i zastosować się do nich:
http://netsand.pl/phpowac/#entry

smile.gif
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.