MVC

17 sierpnia 2011

W niedalekiej przyszłości mam w planach zajęcie się tematami wzorców projektowych i frameworków. Z obydwoma tematami związany jest wzorzec MVC. Będący z jednej strony właśnie wzorcem, a z drugiej podstawowym elementem konstrukcji wielu frameworków w tym najpopularniejszych: Zend Framework, KohanaPHP czy Symfony.

Model-View-Controller czyli Model-Widok-Kontroler jest architektonicznym wzorcem projektowym. Wzorzec ten dzieli strukturę aplikacji na trzy części:

Model
Zazwyczaj składa się z modułów zajmujących się logiką aplikacji. To właśnie one są odpowiedzialne za przetwarzania danych. W klasach modelu znajdują się wszelkiego rodzaju operacje na bazie danych. Jeżeli w systemie znajdują się zapytania SQL, powinny być umieszczone właśnie w modelu.
Widok
Jest warstwą prezentacji danych. Umożliwia interakcje użytkownika z aplikacją.
Kontroler
Odbiera dane wejściowe od użytkownika i na ich podstawie wywołuje odpowiednie modele. Dane z modeli wysyła do odpowiednich widoków.

Poszczególne części tego wzorca powinny mieć wyłączność na pełnienie swoich funkcji, z czym niektórzy programiści mają problem. Umieszczanie fragmentów widoku czy zapytań SQL w kontrolerze nie powinno mieć miejsca. Niestety nawet niektóre frameworki sprzyjają takiemu przemieszaniu funkcji poszczególnych elementów wzorca MVC.

Choć wzorzec MVC jest głównie wykorzystywany w aplikacjach pisanych obiektowo, to w uproszczonej postaci został wykorzystany w kursie „Zawodowy Webmaster” do budowy portalu społecznościowego. Rolę kontrolera pełni tam plik index.php, modelu – funkcje.php, a widoku pliki szablonów.

Łańcuch wywołań

13 sierpnia 2011

Często w kodzie programów pisanych obiektowo można napotkać konstrukcje typu:

$obiekt = new Klasa($a);
$obiekt->metoda1($a)->metoda2($b)->metoda3(c);

Jednak gdy napiszemy prostą klasę i spróbujemy wywołać jej metody w ten sposób, otrzymamy błąd. Można o tym się przekonać na poniższym przykładzie.

<?php
	class Kalkulator
	{
		private $a=null;
 
		public function __construct($n)
		{
			$this->a=$n;
		}
 
		public function dodaj($n)
		{
			$this->a+=$n;
		}
 
		public function odejmij($n)
		{
			$this->a-=$n;
		}
 
		public function pomnoz($n)
		{
			$this->a*=$n;
		}
 
		public function podziel($n)
		{
			$this->a/=$n;
		}
 
		public function wynik()
		{
			return $this->a;
		}
	}
 
	$t=new Kalkulator(12);
	echo $t->dodaj(8)->podziel(5)->odejmij(1)->pomnoz(3)->dodaj(2)->wynik();
?>

wygenerowany błąd to:

Fatal error: Call to a member function podziel() on a non-object in C:\xampp\htdocs\index.php on line 38

Błąd mówi o tym, że metoda podziel jest wywoływana na czymś, co nie jest obiektem. Metoda podziel jest wywoływana jako druga w łańcuchu wywołań. Z tego faktu płynie wniosek, że wcześniejsza metoda powinna dostarczyć kolejnej metodzie obiekt, na którym będzie mogła być wywołana. Mówiąc prościej, metoda dodaj powinna zwracać obiekt poleceniem return. Obecnie nie zwraca niczego.

Dopiszmy zatem na końcu tej metody polecenie return… Obiekt wewnątrz klasy jest wskazywany przez referencje $this, więc w ten właśnie sposób możemy zwrócić w tej metodzie obiekt: zapisując return $this.

Gotowa metoda powinna wyglądać tak:

	public function dodaj($n)
	{
		$this->a+=$n;
		return $this;
	}

To samo należy zrobić z pozostałymi metodami, za którymi mogą być wywołane inne metody. W zasadzie w każdej metodzie publicznej, gdzie nie występuje jeszcze instrukcja return, lub nie zwraca ona żadnych istotnych informacji, możemy rozważyć zwracanie referencji $this. W przypadku klasy Kalkulator wyjątkiem jest jedynie metoda konstruktora, na której i tak nie da się wywołać kolejnych metod, gdyż wywołana jest ona podczas tworzenia obiektu.

Gotowy kod klasy Kalkulator powinien wyglądać następująco:

<?php
	class Test
	{
		private $a=null;
 
		public function __construct($n)
		{
			$this->a=$n;
		}
 
		public function dodaj($n)
		{
			$this->a+=$n;
			return $this;
		}
 
		public function odejmij($n)
		{
			$this->a-=$n;
			return $this;
		}
 
		public function pomnoz($n)
		{
			$this->a*=$n;
			return $this;
		}
 
		public function podziel($n)
		{
			$this->a/=$n;
			return $this;
		}
 
		public function wynik()
		{
			return $this->a;
		}
	}
 
	$t=new Test(12);
	echo $t->dodaj(8)->podziel(5)->odejmij(1)->pomnoz(3)->dodaj(2)->wynik();
?>

Efektem działania tego kodu będzie wyświetlenie liczby 11.

Jeżeli zainteresował Cię ten artykuł, z pewnością chciałbyś się dowiedzieć również jak i do czego stosować: polimorfizm, składowe statyczne, interfejsy, klasy i metody abstrakcyjne, klasy i metody finalne, przeciążanie pól i metod, oraz kilka innych technik. Zajrzyj do programowania obiektowego w PHP.

Jak efektywnie integrować płatności

5 sierpnia 2011

Dostałem w tym tygodniu aż trzy zapytania o integrowanie systemów płatności ze stroną www. Podobne wiadomości trafiały do mnie również i wcześniej, ale nigdy aż trzy w jednym tygodniu.

Dlaczego tyle z tym problemów?

Przecież firmy świadczące usługi realizacji płatności przez Internet udostępniają pełną dokumentację.

Okazuje się, że sprawa nie jest taka prosta. Dokumentacja jest dosyć sucha i uboga w praktyczne przykłady, a pewne kwestie naprawdę potrzebne, są zwyczajnie pominięte.

Formularze zintegrowane z płatnościami w najprostszej postaci działają w ten sposób, że wszystkie pola formularza wysyłane są do serwera płatności, a właściciel czy administrator strony dostaje tylko informację, że wpłynęła płatność na określoną kwotę. Jeżeli chcemy znać wszystkie dane użytkownika wpisywane do formularza na naszej stronie, musimy trochę pokombinować.

Poznaj moje rozwiązanie

Nie każdy chce kombinować sam, tym bardziej, że ktoś przed nim już coś pewnie wykombinował. Dlatego proponuję krótki, treściwy i praktyczny do bólu kurs, a w zasadzie dwa kursy dotyczące płatności. Są to:

  1. „Integracja systemu płatności Dotpay”
  2. „Integracja systemu płatności Platnosci.pl”

kanały płatności Dotpay

Bazy danych w aplikacjach internetowych III kolejne lekcje

1 sierpnia 2011

Dziś dodam kilka kolejnych lekcji. Jest tam dokończenie tworzenia tabel na potrzeby kolejnych lekcji. Łączenie tabel warunkiem WHERE oraz złączenia INNER JOIN i LEFT JOIN.

Myślę, że te tematy Cię zainteresują. Gdyby coś było dla Ciebie niejasne – na dole jest formularz w którym możesz zadawać pytania.

Dla większej wygody można powiększyć nagranie klikając ikonkę w prawym dolnym rogu filmu. Klip wymaga wtyczki Adobe Flash Player.

Jeżeli interesują Cię dalsze lekcje, zapraszam: Bazy danych w aplikacjach internetowych

Bazy danych w aplikacjach internetowych III

1 sierpnia 2011

Poniżej prezentuję pierwsze lekcje trzeciej części szkolenia „Bazy danych w aplikacjach internetowych”. Cała reszta będzie dostępna za około tydzień.

Pierwsze lekcje to w zasadzie powtórzenie z tworzenia projektu w DBDesigner i synchronizacji z bazą danych. Gdyby coś było dla Ciebie niejasne – na dole jest formularz w którym możesz zadawać pytania.

Dla większej wygody można powiększyć nagranie klikając ikonkę w prawym dolnym rogu filmu. Klip wymaga wtyczki Adobe Flash Player.

Jeżeli interesują Cię dalsze lekcje, zapraszam: Bazy danych w aplikacjach internetowych

W UTF-8 możesz nawet…

22 lipca 2011

UTF-8 stał się standardem kodowania znaków na stronie. Wsparcie wielu programów i duże możliwości to znaczące atuty tego kodowania. Ale czy wszyscy z nich korzystają? Przyznam się, że sam rzadko używam wszystkich dobrodziejstw UTF-8, ale postanowiłem to zmienić. Przy okazji dzielę się tym z Tobą.

Czym zatem są te dobrodziejstwa? To możliwość używania znaków, które mogą bardzo ułatwić pisanie różnych treści. Jednak należy uważać na czcionki, których używamy i przeglądarki, chociaż z tymi drugimi nie powinno być raczej problemów. Natomiast w przypadku używania nietypowych krojów pisma, należy uważnie przetestować efekt końcowy. Podane tu sposoby wstawiania znaków odnoszą się do pisania w systemie Windows. Podczas pisania w niektórych programach w tym w przeglądarkach internetowych może się okazać, że niektóre kody znaków są skrótami różnych funkcji tych programów np. wpisanie ” uruchamia przejście do wcześniejszej strony w Firefoxie. Taki znak należy wpisać w innym programie i skopiować we właściwe miejsce.

W większości przypadków twórcy stron w miejsce myślnika wstawiają znak „minus”. UTF-8 pozwala na wpisanie myślników o dwóch różnych długościach: — dłuższego i – krótszego. Przy tym krótszy jest zazwyczaj dłuższy od znaku „minus”. Dłuższy myślnik wpisujemy kombinacją klawiszy Alt+0151. Używamy przy tym lewego przycisku Alt i klawiatury numerycznej. Krótki myślnik to Alt+0150, wielokropek to Alt+0133, cudzysłów podwójny otwierający to Alt+0132, cudzysłów podwójny zamykający to Alt+0148, cudzysłów pojedynczy otwierający to Alt+0130, cudzysłów pojedynczy zamykający to Alt+0146, cudzysłów francuski otwierający (przydatny to umieszczania cytatu w cytacie) to Alt+0171, a cudzysłów francuski zamykający to Alt+0187. Jest jeszcze spacja, której nie można przełamać wpisuje się ją w postaci encji: &#8199; – przydatna za np. spójnikami, które nie powinny znajdować się na końcu linii. Całość przedstawia poniższa tabelka.

kod efekt
Alt+0151
Alt+0150
Alt+0133
Alt+0132
Alt+0148
Alt+0130
Alt+0146
Alt+0171 «
Alt+0187 »
&#8199; niełamliwa spacja

Kto już widział Twoją stronę…

18 lipca 2011

Właśnie przed chwilą wpadłem na pomysł! Pokażę strony uczestników moich kursów na swojej stronie www.serwan.pl. Korzyści dla autorów tych stron:

  • pokażesz swoją stronę WWW ludziom
  • odwiedzą ją nowi użytkownicy
  • zyskasz promocję
  • zyskasz dodatkowy link do swojej strony

Na ile jesteś zainteresowany/zainteresowana? – napisz swoją opinię w komentarzach.

A jeśli jeszcze nie potrafisz robić profesjonalnych stron WWW – nauczę Cię krok po kroku w trakcie kursu „Zawodowy Webmaster”

Bazy danych w aplikacjach internetowych II lekcja 40.

14 lipca 2011

Poniżej prezentuję jedną z lekcji drugiej części szkolenia „Bazy danych w aplikacjach internetowych”. Niedługo zapraszam na trzecią część. Link do formularza zamówienia znajduje się pod filmem.

To nagranie omawia dosyć nową funkcję skryptu PhpMyAdmin. Nie przypadkowo wybrałem właśnie tę lekcję. Oprócz tego, że omawiam w niej jedną z zakładek skryptu PhpMyAdmin, to prezentuje ona możliwości języka HTML5, a ściślej rzecz ujmując obiektu canvas. Gdyby coś było dla Ciebie niejasne – na dole jest formularz w którym możesz zadawać pytania.

Dla większej wygody można powiększyć nagranie klikając ikonkę w prawym dolnym rogu filmu. Klip wymaga wtyczki Adobe Flash Player.

Jeżeli interesują Cię pozostałe lekcje, zapraszam: Bazy danych w aplikacjach internetowych

Bazy danych w aplikacjach internetowych II

2 czerwca 2011

Poniżej prezentuję pierwsze lekcje drugiej części szkolenia „Bazy danych w aplikacjach internetowych”. Cała reszta będzie dostępna w połowie czerwca. Link do formularza zamówienia znajduje się pod filmem.

Tematem tych lekcji są relacje między tabelami. Zagadnienie bardzo istotne i myślę, że ciekawe. Gdyby coś było dla Ciebie niejasne – na dole jest formularz w którym możesz zadawać pytania.

Dla większej wygody można powiększyć nagranie klikając ikonkę w prawym dolnym rogu filmu. Klip wymaga wtyczki Adobe Flash Player.

Jeżeli interesują Cię dalsze lekcje, zapraszam: Bazy danych w aplikacjach internetowych

Kolejny sposób zarabiania na robieniu stron

30 maja 2011

Niedawno trafiłem na serwisem, który umożliwia zarabianie pieniędzy na posiadaniu własnej strony www. Wystarczy, że masz zadbaną stronę z sensowną treścią, zgłaszasz się do tego portalu i sprzedajesz linki na swojej stronie. Czyli pośredniczysz w wymianie informacji pomiędzy różnymi stronami.

Jakie to mają być informacje? Wybierz sobie temat np.:

  • na którym się znasz, bo działasz w nim zawodowo, czyli pisz o swojej pracy. O problemach, które w niej rozwiązujesz, o wyzwaniach i jak sobie z nimi radzisz. O nowych ustawach, przepisach, które dotyczą Ciebie i ludzi wykonujących pracę taką jak Ty.
  • pisz o swoim hobby, umieszczaj na jego temat zdjęcia czy filmiki. Pisz o swoich odkryciach, doświadczeniach, sukcesach związanych z Twoim hobby
  • jeśli lubisz czytać – pisz recenzje książek
  • możesz pisać recenzje filmów czy gier komputerowych
  • pisz o swoich doświadczeniach w różnych życiowych sprawach
  • komentuj otaczającą Cię rzeczywistość

Generalizując – jak w prosty sposób zarobić pieniądze na stronie www:

  1. wybierasz sobie dziedzinę życia, o której możesz i chcesz pisać
  2. robisz estetyczną stronkę WWW
  3. umieszczasz teksty na swojej stronie i regularnie (1-2 razy w tygodniu) dodajesz nowe
  4. rejestrujesz się na giełdzie linków tekstowych i zaczynasz zarabiać.

Proszę pamiętaj, że zarabianie na stronie WWW wymaga również pracy, tak jak w każdym sposobie zarabiania. Ale rezultaty tej pracy mogą przynieść Ci pieniądze i być może nawet w dłuższym okresie czasu zastąpić Twoją pracę na etacie, czy dać Ci satysfakcjonujące źródło dodatkowego dochodu.

Możesz też polecać ten serwis i otrzymywać dodatkowe pieniądze – prowizję od zarobków osób zarejestrowanych z Twego polecenia

I tu zaczyna się moja propozycja. Ponieważ zależy mi byś mógł sprawnie wykonać swoje strony, postanowiłem Ci pomóc w zamian za rejestracje z mojego polecenia, udostępnię Ci szkolenie „Zawodowy Webmaster” w wyjątkowo atrakcyjnej cenie. Zarejestruj się na giełdzie linków tekstowych prolink.pl klikając na ten link: http://prolink.pl. Po potwierdzeniu rejestracji wyślij wiadomość o temacie prolink na adres trener@serwan.pl. W zamian dostaniesz dostęp do szkolenia Zawodowy Webmaster za 470 zł lub z dostępem miesięcznym za 57 zł przez 10 miesięcy. Moja oferta ważna jest do jutra do godziny 21.00. 20 pierwszych osób dostanie gratis dostęp do szkolenia „Jak profesjonalnie ciąć layout na stronę WWW”