Plan prezentacji Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie http://artemis.wszib.edu.pl/~polak/ Wyrażenia Sekcje Bloki Dr inż. Stanisław Polak 1 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 2 Przedmiot: Internet i jego zastosowanie System ów OPT Open Power Template Rodzaj biblioteki programistycznej stosowanej w aplikacjach WWW do osadzania danych w ach prezentacyjnych Kontrowersje Wzajemna niekompatybilność Trudności w opanowaniu Utrudnianie pracy Zalety Lepsza organizacja kodu Usprawnienie pracy w większych zespołach projektowych Poprawienie przenośności kodu System ów PHP5 Niektóre właściwości: Składnia XML Obsługa XML i XHTML Obsługa formatu HTML Tryb dziwactw (Quirks mode) Zaawansowany OOP Komponenty Rozszerzalność Obsługa nagłówków HTTP Wsparcie gzip Dr inż. Stanisław Polak 3 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 4 Przedmiot: Internet i jego zastosowanie
Przykładowy Przykładowy 1 <?php 2 require(./ lib /Opl /Base.php ) ; 3 Opl_Loader : : setdirectory(./ lib / ) ; 4 Opl_Loader : : register ( ) ; 5 // r e q u i r e (. / o p l. phar ) ; 6 // r e q u i r e (. / opt. phar ) ; 7 8 try 9 { 10 $tpl = new Opt_Class ; 11 $tpl >sourcedir =./ templates / ; 12 $tpl >compiledir =./ templates_c / ; 13 $tpl >contenttype = Opt_Output_Http : : XHTML ; 14 $tpl >charset = utf -8 ; 15 $tpl >setup ( ) ; 16 17 $view = new Opt View( template.tpl ) ; 18 $view->hello = Hello, world! ; 19 20 $out = new Opt Output Http ; 21 $out >setcontenttype ( ) ; 22 $out >render( $view ) ; 23 } 24 catch ( Opt_Exception $exception ) 25 { 26 Opt_Error_Handler ( $exception ) ; 27 } 28?> 1 <? xml v e r s i o n=" 1.0 "?> 2 <opt : r o o t> 3 <opt:prolog /> 4 <opt:dtd template="xhtml10transitional"/> 5 <html> 6 <head> 7 <title>mój pierwszy OPT</ title> 8 </ head> 9 <body> 10 <p>mój pierwszy OPT</p> 11 <p>wiadomo ś ć ze u : {$hello}</p> 12 </ body> 13 </ html> 14 </ opt : r o o t> templates/template.tpl Dr inż. Stanisław Polak 5 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 6 Przedmiot: Internet i jego zastosowanie Tryby kompilatora Sekcja CDATA XML HTML Quirks 1 <? xml v e r s i o n=" 1.0 " encoding="utf -8" standalone="no"?> 2 <opt : r o o t> 3 <opt : p r o l o g /> 4 <opt : dtd template=" xhtml10transitional " /> 5 <html xmlns="http :// www.w3.org /1999/ xhtml " xml : lang="pl" lang=" pl"> 6 <head> 7 <meta http e q u i v=" Content - Type " content=" text / html ; charset= UTF -8" /> 8 <title>{$title}</ title> 9 </ head> 10 <body> 11... 12 <opt:section name=" content "> 13 <opt:include from=" content "/> 14 </opt:section> 15... 16 <li opt : s e c t i o n=" menu "> 17 <opt:attribute name=" class " if=" $menu. important "> important</opt:attribute> 18 <a parse:href=" $menu. url ">{$menu. tytul}</a> 19 </li> 20... 21 </ body> 22 </ html> 23 </ opt : r o o t> tryb XML 1 <script type="text / javascript "> 2 <opt:literal> 3 <! [ CDATA[ 4 document. w r i t e ( H e l l o my f r i e n d, do you need { $ h e l l o } o r ] ]>{$hello}<! [ CDATA [? ) ; 5 ] ]> 6 </opt:literal> 7 </ script> 1 <script type="text / javascript "> 2 <! [ CDATA[ 3 document. w r i t e ( H e l l o my f r i e n d, do you need { $ h e l l o } o r ]]> H e l l o, w o r l d! 4 ] ]> 5 </ script> <![CDATA[? ) ; nieprawidłowy kod wynikowy JS 1 <script type="text / javascript "> 2 <! [ CDATA[ 3 document. w r i t e ( H e l l o my f r i e n d, do you need { $ h e l l o } o r H e l l o, w o r l d? ) ; 4 ] ]> 5 </ script> prawidłowy kod wynikowy JS Dr inż. Stanisław Polak 7 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 8 Przedmiot: Internet i jego zastosowanie
Prolog dokumentu oraz DTD Encje 1 <? xml v e r s i o n=" 1.0 " s t a n d a l o n e=" yes "?> 2 <opt : r o o t> 3 <opt:prolog s t a n d a l o n e="no"/> 4 <opt:dtd t e m p l a t e="xhtml - strict "/> 5 <html> 6 <head> 7 </ head> 8 9 <! t h e t e m p l a t e > 10 </ html> 11 </ opt : r o o t> 1... 2 <opt:dtd> 3 <! [ CDATA[<! DOCTYPE h i [ 4 <!ELEMENT h i (#PCDATA)> 5 ]>]]> 6 </opt:dtd> 7... wewnętrzne DTD XML & & < < > > " ' Unicode ( �xB8... ) HTML ( &Acute;... ) gdy w skrypcie: $tpl->htmlentities = true; OPT &lb; { &rb; } definiowane przez użytkownika wyświetl encję: u:entity( Acute ) wyświetl encję: &Acute; Dr inż. Stanisław Polak 9 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 10 Przedmiot: Internet i jego zastosowanie Wyrażenia Wyrażenia Zmienne 1 <p>wyra ż enie jako czę ś ć tekstu statycznego : {$zmienna}</ para> 2 <p {$zmienna}>w taki sposób nie można umieszcza ć wyra żeń.</p> 3 <p class="{ $zmienna }">W taki sposób nie można umieszcza ć wyra żeń.</p> 4 <p parse : class=" $zmienna ">Wyra ż enie jako warto ś ć atrybutu znacznika.</p> 5 <opt : i f t e s t=" $zmienna ">Wyra ż enie jako warto ś ć atrybutu instrukcji OPT.</ opt : i f> 1 <p>zmienna lokalna {$zmienna}</p> 2 {@zmienna=1} 3 <p>zmienna globalna {@zmienna}</p> 4 <p>zmienna j ę zykowa : {$formularz@nazwa pola}: <input type=" text " name=" name " /></p> 5 <p>{count($osoba)} parametr ów opisuje osob ę :</p> 6 <p>imi ę : {$osoba.imie}</p> 7 <p>nazwisko : {$osoba.nazwisko}</p> 8 <p>wiek : {$osoba.wiek}</p> Zmienne specjalne: $sys lub $opt $sys.version $sys.const.name $global $this Dr inż. Stanisław Polak 11 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 12 Przedmiot: Internet i jego zastosowanie
Wyrażenia Wartości Wyrażenia Operatory liczby całkowite w kodzie dziesiątkowym: 1, -9 w kodzie szesnastkowym: 0x3abc5, -0x3ABC5 liczby rzeczywiste: 3.14 łańcuchy znakowe przykładowy tekst zawierający apostrof \ oraz ukośnik \\ slowo1 neq slowo2 wartości specjalne: true, false, null postać tekstowa @a is $b $a ~ $b postać symboliczna $a === $b Dr inż. Stanisław Polak 13 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 14 Przedmiot: Internet i jego zastosowanie Wyrażenia Funkcje Wyrażenia Lewe apostrofy 1 funkcja ( ) 2 3 funkcja ( $argument ) 4 5 funkcja ( 5 ) 6 7 funkcja ( $argument1, $argument2 ) 8 9 funkcja ( $a + $b, $c + $d ) 10 11 funkcja ( $argument1, other_function ( $argument1 ) ) 12 13 $a is funkcja ( $argument ) // p r z y p i s z z m i e n n e j a wynik wywo ł a n i a f u n k c j i przykładowe wywołanie 1... 2 function mybacktickhandler ( $string ) 3 { 4 return strtoupper ( $string ) ; 5 } // end mybacktickhandler ( ) ; 6 7 $tpl >backticks = mybacktickhandler ; 8... 2 {@hello = abc } 3 {@hello} <! wypisze s i ę ABC > 4 </ body> Dr inż. Stanisław Polak 15 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 16 Przedmiot: Internet i jego zastosowanie
Wyrażenia Obiekty Obsługiwane cechy OOP dostęp do pól oraz metod obiektu dostęp do statycznych pól oraz metod zarejestrowanych klas tworzenie nowych obiektów zarejestrowanych klas klonowanie obiektów 1 $tpl = new Opt_Class ; 2 //... 3 $tpl >basicoop = true ; 4 $tpl >advancedoop = true ; //wł ą cz moż liwo ś ć tworzenia nowych obiekt ów z a r e j e s t r o w a n y c h k l a s 5 6 // gdy zamierzamy tworzy ć obiekty i bę dziemy odwo ł ywać s i ę do statycznych sk ł a d n i k ów k l a s 7 $tpl >register ( Opt_Class : : PHP_CLASS, nazwaklasyszablonu, rzeczywistanazwaklasyphp ) ; 8 //.. 9 $tpl >setup ( ) ; Wyrażenia HTML escaping 1 <p p a r s e : style=" $foo ">Text</p> 2 <! zak ł adamy ż e $foo = <div>bar</ div> 3 <! gdy escaping j e s t wył ą czony > 4 <p style="<div >bar </ div >">Text</p> 5 <! gdy escaping j e s t wł ą czony > 6 <p style="<div >bar < ;/ div >">Text</p> Kontrola escaping: 1. dyrektywa escape w części konfiguracyjnej u OPT 2. atrybut escape elementu opt:root lub opt:extend w bieżącym ie 3. modyfikatory e: lub d: w bieżącym wyrażeniu 1 <opt : r o o t escape="no"> 2 <p>this expression will not be escaped : {$variable}</p> 3 <p>this expression will be escaped : {e : $variable}</p> 4 </ opt : r o o t> 1 $object : : method ( ) 2 $object is new classname ( argumenty konstruktora ) Dr inż. Stanisław Polak 17 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 18 Przedmiot: Internet i jego zastosowanie Sekcje Instrukcja opt:section 1 $list = array ( ) ; 2 $list [ ] = array ( id => 1, 3 name => Produkt 1, 4 description => Opis produktu 1 ) ; 5 $list [ ] = array ( id => 2, 6 name => Produkt 2, 7 description => Opis produktu 2 ) ; 8 $view > products =$list ; 1 <table> 2 <tr> 3 <th>#</th> 4 <th>nazwa</th> 5 <th>opis</th> 6 </tr> 7 <opt:section name=" products "> 8 <tr> 9 <td>{$products.id}</td> 10 <td>{$products. name}</td> 11 <td>{$products. description}</td> 12 </tr> 13 </opt:section> 14 </ table> # Nazwa Opis 1 Produkt 1 Opis produktu 1 2 Produkt 2 Opis produktu 2 Sekcje Instrukcja opt:show 2 <opt:show name=" products "> 3 <table> 4 <tr> 5 <th>#</th> 6 <th>name</th> 7 <th>description</th> 8 </tr> 9 <opt : s e c t i o n> 10 <tr> 11 <td>{$products. id}</td> 12 <td>{$products. name}</td> 13 <td>{$products. description}</td> 14 </tr> 15 </ opt : s e c t i o n> 16 </ table> 17 <opt:showelse> 18 <p>brak produktow.</p> 19 </opt:showelse> 20 </opt:show> 21 </ body> Zmienna $sys.section.nazwasekcji Dr inż. Stanisław Polak 19 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 20 Przedmiot: Internet i jego zastosowanie
Sekcje Instrukcja opt:tree Sekcje Instrukcja opt:grid 1 $tree = array ( 2 array ( nazwa => Element 1, depth => 0), 3 array ( nazwa => Element 1.1, depth => 1), 4 array ( nazwa => Element 1.2, depth => 1), 5 array ( nazwa => Element 1.2.1, depth => 2), 6 array ( nazwa => Element 2, depth => 0) 7 ) ; 8 $view >tree=$tree ; 1 $elements = array ( 2 array ( nazwa => Element 1 ), 3 array ( nazwa => Element 2 ), 4 array ( nazwa => Element 3 ), 5 array ( nazwa => Element 4 ), 6 array ( nazwa => Element 5 ) 7 ) ; 8 $view >elements=$elements ; 2 <opt:tree name=" tree "> 3 <opt:list><ul><opt:content/></ul></opt:list> 4 <opt:node><li>{$tree. nazwa} <opt:content/></li ></opt:node> 5 <opt : t r e e e l s e><p>brak danych do wy ś wietlenia.</p></ opt : t r e e e l s e> 6 </opt:tree> 7 </ body> 1. Element 1 1. Element 1.1 2. Element 1.2 1. Element 1.2.1 2. Element 2 1 <table border="1"> 2 <opt:grid name=" elements " cols="3"> 3 <tr> 4 <opt:item> 5 <td>{$elements. nazwa}</td> 6 </opt:item> 7 <opt:emptyitem> 8 <td>  ;</td> 9 </opt:emptyitem> 10 </tr> 11 </opt:grid> 12 </ table> Element 1 Element 2 Element 3 Element 4 Element 5 Dr inż. Stanisław Polak 21 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 22 Przedmiot: Internet i jego zastosowanie Bloki Definiowanie logiki bloku Bloki Instrukcja opt:block 1 class columnblock implements Opt_Block_Interface{ 2 private $_view ; 3 private $_link ; 4 5 public function construct ( $link = null ){ 6 $this >_link = $link ; 7 } // end c o n s t r u c t ( ) ; 8 9 public function setview ( Opt_View $view ){ 10 $this >_view = $view ; 11 } // end s e t O p t I n s t a n c e ( ) ; 12 13 public function onopen ( Array $attributes ){ 14 $link = isset ( $attributes [ link ] )? $attributes [ link ] : $this >_link ; 15 echo <a href =". $link. "> ; 16 return true ; 17 } // end onopen ( ) ; 18 19 public function onclose ( ) { 20 echo </a> ; 21 } // end o n C l o s e ( ) ; 22 23 public function onsingle ( Array $attributes ){} 24 } // end columnblock ; 25... 26 $view >columns = array ( 27 array ( title => Kolumna 1, block => new columnblock ( 1. html ) ), 28... 29 ) ; 2 <table border = 1 > 3 <tr> 4 <opt : s e c t i o n name=" columns "> 5 <td><opt:block from=" $columns. block ">{columns. title}</opt:block></td> 6 </ opt : s e c t i o n> 7 </tr> 8 </ table> 9 </ body> 2 <table border = 1 > 3 <tr> 4 <td><a href="1. html ">Kolumna 1</a></td> 5... 6 </tr> 7 </ table> 8 </ body> dokument wynikowy Dr inż. Stanisław Polak 23 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 24 Przedmiot: Internet i jego zastosowanie
Komponenty Źródła Szkielet komponentu Źródła 1 <opt:myinput d a t a s o u r c e=" $fielddata "> 2 <com:div> 3 <p>{$sys. component. title} <span opt : i f="$sys.component. description ">{$sys. component. description}</ span></p> 4 <opt:display /> 5 6 <opt:onevent name=" error "> 7 <p class=" error ">{$sys. component. errormessage}</p> 8 </opt:onevent> 9 </com:div> 10 </opt:myinput> Invenzzia Group. Open Power Template 2.0. http://static.invenzzia.org/docs/opt/2_0/book/en/. Wikipedia. http://pl.wikipedia.org/. 1 class myinputcomponent implements Opt Component Interface { 2... 3 } 4... 5 $tpl >register( Opt_Class : : OPT_COMPONENT, opt:myinput, myinputcomponent ) ; Dr inż. Stanisław Polak 25 Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak 26 Przedmiot: Internet i jego zastosowanie