Jak wspomniano w poprzednim rozdziale, tworzenie aplikacji modularnej wymaga dodatkowych prac projektowych i podjęcia odpowiednich decyzji, ale w...
Serwis znalezionych hasełOdnośniki
- Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
- Przykładowo, poniższe wyrażenie:Dim targetNumber As Integer = CType("12", Integer)jest odpowiednikiem następującego wyrażenia:Dim...
- Analiza ta wyjania nam rwnie, dlaczego poziom produkcji odpowiadajcy naturalnej stopie bezrobocia jest rwnoznaczny z potencjalnym poziomem produkcji danego...
- A ktokolwiek si komu o pewny dug zapisa, y do Grodu firma inscriptione [mocnym zapisem] odpowiada si podda dobrowolnie, bd przed mierci, abo iu y po mierci...
- odpowiednich warunkw do zapewnienia "wolnej gospodarki", poza tym pastwo nie powinno ingerowa w spoeczno-ekonomiczneprocesy, ktrymi sterowa powinny siy...
- Czemu więc płakała? Obawiał się jednak, Ŝe jeśli będzie próbował nalegać, tylko - Nie musi mi pani od razu odpowiadać –uspokoił ją...
- Pani Hunter regularnie co miesic wystawiaa czeki za swj pobyt w klinice; bez mrugnicia wasnorcznie wpisywaa odpowiednie sumy, mimo e czasami nawet...
- – Nie złapią nas, moja piękna – odpowiedział Gabriel z udawaną brytyjską powagą...
- Chrystusa i Samarytank - naturalnie przy studni - Malczewski malowa trzykrotnie, ale adne z tych uj nie odpowiada, jak podkrela Kazimierz Wyka, przekazowi...
- Zadajecie sobie pytanie: “Jak możemy to uczynić?” Odpowiadam wam: “Tak samo jak [czyni] to Bóg, kochający nawet tego, który Go znieważa...
- Operacje wejścia-wyjścia Zmienne typu int, double i char są zmiennymi arytmetycznymi, przystosowanymi odpowiednio do przechowywania...
Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
W książce A Methodology for Client/Server and Web Application Development Roger Fournier sugeruje, że wspólne fragmenty lub moduły aplikacji zawsze powinny być najpierw projektowane, tworzone i testowane a następnie udostępniane dla całej korporacji. Komponenty te powinny zawierać nie tylko moduły kodu, ale również procedury przechowywane w bazie danych, wyzwalacze i zdalne procedury (Fournier, 1998).
W kolejnych częściach zostanie opisane kilka metod implementacji tych metod. Dodatkowo w tym
rozdziale jak również w rozdziale 14 „Witryny oparte o szablony”, dołączone są kompletne przykłady
zastosowania tych technik. Niektóre przykłady w kolejnych częściach pokazują techniki jakich należy unikać.
Oddzielenie i integracja przy użyciu wbudowanych funkcji
PHP
Ponieważ PHP zawiera bogaty zestaw funkcji i narzędzi, oddzielenie modułów kodu od modułów
interfejsu może być zrealizowane bezpośrednio przy pomocy narzędzi języka. Część ta opisuje kilka sposobów zrealizowania tego zadania.
Motywacja
Pierwszą motywacją dla oddzielenia elementów HTML od kodu jest umożliwienie ponownego
wykorzystania kodu oraz jego łatwiejszej konserwacji. W wszystkich przykładach umieszczonych do tej pory w książce, HTML i PHP były wymieszane w celu otrzymania krótkich i prostych przykładów. W przypadku
tworzenia kodu prawdziwego kodu technika ta jest niewygodna i powoduje powstanie trudnych do analizy skryptów. Dla przykładu, skrypt z wydruku 12.1 zawiera fragment strony WWW ze zintegrowanym kodem PHP i HTML.
Wydruk 12.1. PHP i HTML w jednym skrypcie
<?php
if ( $aShowForm == True ) {
?>
<p>
<font face="Arial" size="3">
<b>
<?php
print( $aQuestion );
?>
</b>
<form action="response.php3" method="POST">
<?php if (!empty( $UserID )) { ?>
<input type="Hidden" name="UserID" value="<?php print($aUserID );
?>">
<?php } ?>
<?php if ($aQuestionID != -1 ) { ?>
<input type="Hidden" name="QuestionID"
value="<?php print($aQuestionID ); ?>">
<?php } ?>
<ul>
<font face="Arial" size="2">
<!--wyświetl możliwe odpowiedzi-->
<?php
if ( $aQuestionID != -1 )
{
if ($aSortOrd != 0 ) //Sortowanie alfabetyczne
{
$aSQL = "SELECT * FROM Answers WHERE (QuestionID=$aQuestionID)
ORDER BY Text";
}
else
{
$aSQL = "SELECT * FROM Answers WHERE (QuestionID=$aQuestionID)";
}
$aDB->SetSQL( $aSQL );
Rozdział 12 – Oddzielanie kodu HTML od PHP
146
Oprócz tego, że przykład jest niekompletny, Wydruk 12.1 pokazuje jak skomplikowana może stać się
strona HTML z wbudowanym PHP. Nawet pomocą edytorów wyróżniających składnię, zlokalizowanie bloków
kodu może być trudne.
Problemy z utrzymaniem tego typu skryptów wykraczają jednak poza podstawowe problemy z
czytelnością kodu. Równie trudno jest wprowadzać zmiany zarówno do kodu, jak i wyglądu strony bez
wpływania na inne elementy. Na przykład, załóżmy, że projektanci uaktualnią wygląd przycisków nawigacji i muszą być one umieszczone w witrynie. Odpowiedź na pytanie kto powinien wprowadzić zmiany jest trudna, ponieważ projektanci mogą nie mieć wystarczająco dużo doświadczenia, aby nie popsuć kodu podczas
wprowadzania zmian, a programiści mogą być zmuszeni uaktualniać fragmenty kodu jedynie w celu zmiany wyglądu. W obu przypadkach wynikiem są opóźnienia w projekcie. Można tego uniknąć stosując lepsze praktyki projektowe.
Jeżeli twoja firma zamierza dostarczać wysokiej jakości i łatwe do konserwacji aplikacje WWW,
tworzenie stron za pomocą przedstawionej metody nie powinno być stosowane. Dodatkowo, jeżeli
zainwestowano w projekt interfejsu, nie należy tego marnować tworząc aplikację utrudniającą wprowadzanie prostych zmian. Teraz zostaną zademonstrowane dostępne w PHP metody integrowania oddzielnych modułów kodu i projektu.
Implementacja
Najprostsza metodą integracji osobnych modułów jest wykorzystanie funkcji PHP include() lub
require(). Metoda ta wymaga umieszczenia elementów projektu HTML w osobnych plikach, które są używane przez moduły kodu PHP w czasie ich wykonywania. Na przykład na wydruku 12.2 i 12.3 umieszczone są
fragmenty projektu strony rozdzielonej na nagłówek i stopkę. Na wydruku 12.4 pokazano sposób integracji tych segmentów z dynamicznie tworzonym fragmentem strony.
Wydruk 12.2. Fragment z nagłówkiem HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Nowe książki wydawnictwa Helion</title>
</head>
<body>