luk Wed Feb 27 19:04:05 2002 EDT
Added files:
/phpdoc/cs/appendices commandline.xml debugger.xml history.xml
migration.xml
Log:
Index: phpdoc/cs/appendices/commandline.xml
+++ phpdoc/cs/appendices/commandline.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<!--
TODO:
The command line options not in the
list, but in the -h output below:
-e, -z
It would be best to document these, and
collect more info about -c and -d!
-->
<appendix id="commandline">
<title>Pou�it� PHP z p��kazov� ��dky</title>
<para>
Mo�nosti PHP p�i spou�t�n� z p��kazov� ��dky p�in�ej� mnoho u�itku,
pokud chcete ladit nebo testovat va�e nastaven� PHP, hod� se v�ak
i pro p��pady, kdy byste r�di pou�ili PHP pro jin� ��ely ne� WWW
skriptov�n�.
</para>
<para>
Uv�domte si, �e m��ete v�dy sm�rovat v�stup programu PHP do vn�j��ho
souboru pomoc� znaku >, tak�e <literal>php -q test.php >
test.html</literal> vytiskne v�stup <filename>test.php</filename>
bez HTTP hlavi�ek do <filename>test.html</filename> ve stejn�m adres��i.
</para>
<para>
Mo�nosti p��kazov� ��dky m��ete vyu��vat pouze tehdy, m�te-li (spustiteln�)
program PHP. Pokud jste zkompilovali pouze modul do serveru a nem�te na
po��ta�i ��dnou CGI verzi, nem��ete p��kazovou ��dku pou��vat.
Pro u�ivatele Windows je v bin�rn�m bal��ku jak serverov� modul, tak
spustiteln� soubor nazvan� <filename>php.exe</filename>.
</para>
<para>
Tento seznem voleb pro p��kazovou ��dku je konzistentn� s PHP 4.0.6.
Aktu�ln� seznam v�etn� jedno��dkov�ch popis� m��ete z�skat pomoc� parametru
<literal>-h</literal>. V�stup <literal>php -h</literal> by m�l vypadat
p�ibli�n� takto:
<screen>
<![CDATA[
Usage: php [-q] [-h] [-s [-v] [-i] [-f <file>] | {<file> [args...]}
-q Quiet-mode. Suppress HTTP Header output.
-s Display colour syntax highlighted source.
-f <file> Parse <file>. Implies `-q'
-v Version number
-C Do not chdir to the script's directory
-c <path> Look for php.ini file in this directory
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-z <file> Load Zend extension <file>.
-l Syntax check only (lint)
-m Show compiled in modules
-i PHP information
-h This help
]]>
</screen>
</para>
<para>
Zde uv�d�me n�kter� z nejd�le�it�j��ch voleb s detailn�m vysv�tlen�m.
</para>
<para>
<table>
<title>Volby pro p��kazovou ��dku</title>
<tgroup cols="2">
<thead>
<row>
<entry>Volba</entry>
<entry>Popis</entry>
</row>
</thead>
<tbody>
<row>
<entry>-q</entry>
<entry>
Potla�� v�stup HTTP hlavi�ek. Norm�ln� PHP tiskne HTTP hlavi�ky
pro volaj�c� program (typicky WWW server) k p�ed�n� prohl��e�i.
P�i pou�it� pro aplikace spou�t�n� z p��kazov� ��dky nemaj� hlavi�ky
smysl.
</entry>
</row>
<row>
<entry>-s</entry>
<entry>
Zobraz� barevn� vysv�cen� zdrojov� soubor s dan�m n�zvem.
Je to tot�, jako kdy� se zdroj vytiskne pomoc� funkce
<function>highlight_file</function> v PHP skriptu.
</entry>
</row>
<row>
<entry>-f</entry>
<entry>
Parsuje dan� soubor a hled� syntaktick� a fat�ln� chyby.
Tato volba implikuje -q. Pou�ijte pro ladic� ��ely
(debugging).
</entry>
</row>
<row>
<entry>-v</entry>
<entry>
Zavol�n�m PHP s t�mto p�ep�na�em si m��ete vypsat ��slo verze,
nap�. 4.0.6.
</entry>
</row>
<row>
<entry>-C</entry>
<entry>
Za norm�ln�ch okolnost� PHP m�n� pracovn� adres�� na ten, kde se
nach�z� spou�t�n� skript. To nap��klad umo��uje otv�rat soubory
ve stejn�m adres��i ur�en�m pouh�ho n�zvu souboru (bez cesty).
Pokud byste toto cht�li potla�it, pou�ijte tuto volbu.
</entry>
</row>
<row>
<entry>-c</entry>
<entry>
Pou�it�m tohoto argumentu m��ete specifikovat alternativn�
um�st�n� souboru <filename>php.ini</filename>, tak�e PHP bude
hledat konfigura�n� soubor zde nam�sto implicitn�ho um�st�n�.
</entry>
</row>
<row>
<entry>-d</entry>
<entry>
Touto volbou m��ete prov�st individu�ln� nastaven�
<filename>php.ini</filename> b�hem prov�d�n� skriptu.
</entry>
</row>
<row>
<entry>-l</entry>
<entry>
Otestuje dan� soubor na syntaktick� chyby. Tato volba implikuje
-q. Pou�ijte ji pro ��ely lad�n�. Nebudou se hledat fat�ln� chyby
(jako jsou nedefinovan� funkce). Pokud chcete hledat i fat�ln�
chyby, pou�ijte -f.
</entry>
</row>
<row>
<entry>-m</entry>
<entry>
Pou�it�m t�to volby PHP vyp��e zabudovan� (a na�ten�) PHP a Zend
moduly, ��sla verz� PHP a Zend, a tak� kr�tkou informaci o
autorsk�ch pr�vech k j�dru Zend.
</entry>
</row>
<row>
<entry>-i</entry>
<entry>
Tento p�ep�na� zavol� funkci <function>phpinfo</function> a vyp��e
jej� v�sledek. Pokud PHP nepracuje spr�vn�, je dobr� spustit
<literal>php -i</literal> a pod�vat se, zda se nevypsala n�jak�
chybov� hl�en� p�ed nebo uvnit� informa�n�ch tabulek.
</entry>
</row>
<row>
<entry>-h</entry>
<entry>
Touto volbou z�sk�te informace o aktu�ln�ch volb�ch p��kazov� ��dky
a jedno��dkov� popisy o tom, co d�laj�.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
Spustiteln� verze PHP m��e b�t pou�ita pro spou�t�n� skript� absolutn�
nez�visle na webovsk�m serveru. Pokud jste na unixov�m syst�mu, m��ete
do PHP skriptu p�idat speci�ln� prvn� ��dek a ud�lat z n�j spustiteln�
program - syst�m bude v�d�t, jak� program by m�l skript zpracov�vat.
Na Windows m��ete asociovat <literal>php.exe -q</literal> se souborovou
p��ponou <literal>.php</literal> (pro spou�t�n� dvojklikem), nebo m��ete
vytvo�it d�vkov� soubor pro spu�t�n� skriptu p�es PHP. Prvn� ��dek skriptu
pro pr�ci v Unixu nebude ve Windows vadit, tak�e t�mto zp�sobem m��ete
ps�t programy pro v�ce platforem. Jednoduch� p��klad psan� PHP programu
pro p��kazovou ��dku je uveden n��e.
</para>
<example>
<title>Skript ur�en� ke spou�t�n� z p��kazov� ��dky (script.php)</title>
<programlisting role="php">
<![CDATA[
#!/usr/bin/php -q
<?php
if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
This is a command line PHP script with one option.
Usage:
<?php echo $argv[0]; ?> <option>
<option> can be some word you would like
to print out. With the --help, -help, -h,
or -? options, you can get this help.
<?php
} else {
echo $argv[1];
}
?>
]]>
</programlisting>
</example>
<para>
Ve v��e uveden�m skriptu jsme pou�ili speci�ln� prvn� ��dek k indikaci,
�e by tento soubor m�l b�t spou�t�n pomoc� PHP a nem�l by vypisovat
HTTP hlavi�ky. Jsou zde dv� prom�nn�, kter� m��ete pou��t p�i psan�
aplikac� pro PHP spou�t�n�ch z p��kazov� ��dky:
<varname>$argc</varname> a
<varname>$argv</varname>. Prvn� z nich je po�et argument� + 1 (n�zev
b��c�ho skriptu). Druh� je pole obsahuj�c� argumenty, po��naje n�zvem
skriptu jako ��slo 0 (<varname>$argv[0]</varname>).
</para>
<para>
V uk�zkov�m programu se testuje, zda je argument� v�ce �i m�n� ne� jeden.
Pokud by argument byl <literal>--help</literal>,
<literal>-help</literal>, <literal>-h</literal> nebo <literal>-?</literal>,
vytiskne se n�pov�da k programu v�etn� skute�n�ho n�zvu skriptu.
Pokud by byly p�id�ny n�jak� dal�� argumenty, vytisknou se na v�stup.
</para>
<para>
Pokud byste cht�li spou�t�t uveden� skript pod Unixem, mus�te ho ud�lat
spustiteln�m (nastavit pr�va pro spou�t�n�), a pak jednodu�e napsat
<literal>script.php vypis_tohle</literal> nebo
<literal>script.php -h</literal>. Na Windows mus�te pro tento �kol vytvo�it
d�vkov� soubor:
</para>
<example>
<title>D�vkov� soubor pro spou�t�n� PHP skriptu z p��kazov� ��dky
(script.bat)</title>
<programlisting role="winbat">
@c:\php\php.exe -q script.php %1 %2 %3 %4
</programlisting>
</example>
<para>
Za p�edpokladu, �e jste v��e uveden� program nazvali
<filename>script.php</filename> a soubor
<filename>php.exe</filename> m�te ulo�en� jako
<filename>c:\php\php.exe</filename>, m��ete tento d�vkov� soubor spou�t�t
takto:
<literal>script.bat echothis</literal> nebo
<literal>script.bat -h</literal>.
</para>
<para>
Viz tak� dokumentaci roz���en� <link linkend="ref.readline">Readline</link>,
kde najdete v�ce funkc� pro pou�it� k aplikac�m PHP spou�t�n�ch z
p��kazov� ��dky.
</para>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
Index: phpdoc/cs/appendices/debugger.xml
+++ phpdoc/cs/appendices/debugger.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<appendix id="debugger">
<title>Lad�n� (debugging) PHP</title>
<sect1 id="debugger-about">
<title>O debuggeru</title>
<simpara>
PHP 3 obsahuje pro podporu pro s��ov� zalo�en� debugger.
</simpara>
<simpara>
PHP 4 nem� vnit�n� mechanismy pro lad�n�. Nicm�n� m��ete pou��vat
n�kter� z extern�ch debugger�.
<ulink url="&url.zend.ide;">Zend IDE</ulink> obsahuje debugger, a
ladic� roz���en� (jako DBG) najdete tak� na
<ulink url="&url.dbg;">&url.dbg;</ulink> nebo na
<ulink url="&url.apd;">Advanced PHP Debugger</ulink> (APD).
</simpara>
</sect1>
<sect1 id="debugger-using">
<title>Pou�it� debuggeru</title>
<para>
Vnit�n� debugger v PHP 3 je u�ite�n� pro hled�n� z�ludn�ch chyb.
Debugger pracuje prost�ednictv�m p�ipojen� na
<acronym>TCP</acronym> port p�i ka�d�m startu PHP 3.
V�echny chybov� zpr�vy z p��slu�n� relace jsou pos�l�ny do tohoto TCP
kan�lu. Tyto informace jsou ur�eny pro "debugging server", kter� m��e
b�et uvnit� <acronym>IDE</acronym> nebo programovateln�ho editoru
(jako je Emacs).
</para>
<para>
Jak nastavit debugger:
<orderedlist>
<listitem>
<simpara>
Nastavte TCP port pro debugger v <link
linkend="configuration.file">konfigura�n�m souboru</link> (<link
linkend="ini.debugger.port">debugger.port</link>) a aktivujte ho
(<link linkend="ini.debugger.enabled">debugger.enabled</link>).
</simpara>
</listitem>
<listitem>
<simpara>
Nastavte TCP pro poslech na n�jak�m portu (nap��klad
<command>socket -l -s 1400</command> v UNIXu).
</simpara>
</listitem>
<listitem>
<simpara>
Ve va�em k�du spus�te
"debugger_on(<replaceable>host</replaceable>)", kde
<replaceable>host</replaceable> je IP adresa nebo dom�nov� n�zev
po��ta�e, kde b�� p��slu�n� <acronym>TCP</acronym> server.
</simpara>
</listitem>
</orderedlist>
Nyn� budou v�echna varov�n�, informativn� zpr�vy apod. m��it na s��ov�
socket, <emphasis>a to i tehdy, pokud je vypnete pomoc� nastaven�
<function>error_reporting</function></emphasis>.
</para>
</sect1>
<sect1 id="debugger-protocol">
<title>Protokol debuggeru</title>
<para>
Protokol PHP 3 debuggeru je ��dkov� orientovan�. Ka�d� ��dek je ur�it�ho
<emphasis>typu</emphasis> a n�kolik ��dk� tvo��
<emphasis>zpr�vu</emphasis>. Ka�d� zpr�va za��n� ��dkem typu
<literal>start</literal> a kon�� ��dkem typu
<literal>end</literal>. PHP 3 m��e sou�asn� pos�lat ��dky pro r�zn� zpr�vy.
</para>
<para>
��dek m� tento form�t:
<informalexample>
<literallayout>
<replaceable>date</replaceable> <replaceable>time</replaceable>
<replaceable>host</replaceable>(<replaceable>pid</replaceable>)
<replaceable>type</replaceable>:
<replaceable>message-data</replaceable>
</literallayout>
</informalexample>
<variablelist>
<varlistentry>
<term><replaceable>date</replaceable></term>
<listitem>
<simpara>
Datum ve form�tu ISO 8601
(<replaceable>yyyy</replaceable>-<replaceable>mm</replaceable>-<replaceable>dd</replaceable>)
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>time</replaceable></term>
<listitem>
<simpara>�as v�etn� mikrosekund:
<replaceable>hh</replaceable>:<replaceable>mm</replaceable>:<replaceable>uuuuuu</replaceable>
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>host</replaceable></term>
<listitem>
<simpara>
DNS (dom�nov�) n�zev nebo IP adresa po��ta�e, kde byla vygenerov�na
chyba ve skriptu.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>pid</replaceable></term>
<listitem>
<simpara>
PID (process id) na po��ta�i <replaceable>host</replaceable> procesu,
kter� vygeneroval chybu v PHP 3 skriptu.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>type</replaceable></term>
<listitem>
<para>
Typ ��dku. ��k� p�ij�maj�c�mu programu, jak m� s n�sleduj�c�mi
daty nalo�it:
<table>
<title>Typy ��dk� debuggeru</title>
<tgroup cols="2">
<thead>
<row>
<entry>N�zev</entry>
<entry>V�znam</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>start</literal></entry>
<entry>
��k� p�ij�maj�c�mu programu, �e tady za��n� zpr�va debuggeru.
Obsahem datov� ��sti (<replaceable>data</replaceable>)bude typ
chybov� zpr�vy z n��e uveden�ho seznamu.
</entry>
</row>
<row>
<entry><literal>message</literal></entry>
<entry>Chybov� zpr�va PHP 3.</entry>
</row>
<row>
<entry><literal>location</literal></entry>
<entry>
N�zev souboru a ��slo ��dku, kde nastala chyba. Prvn� ��dek
<literal>location</literal> bude v�dy obsahovat nejvy��� �rove�
um�st�n�. <replaceable>data</replaceable> bude obsahovat
<literal><replaceable>file</replaceable>:<replaceable>line</replaceable></literal>.
��dek <literal>location</literal> bude n�sledovat za ka�d�m
��dkem <literal>message</literal> a ka�d�m ��dkem
<literal>function</literal>.
</entry>
</row>
<row>
<entry>
<literal>frames</literal></entry>
<entry>Po�et r�mc� v n�sleduj�c�m v�pisu z�sobn�ku. Pokud jsou
zde �ty�i r�mce, o�ek�vejte informace o �ty�ech �rovn�ch
volan�ch funkc�. Pokud se ��dn� ��dek "frames" nevyskytuje,
p�edpokl�d� se hloubka 0 (chyba nastala na nejvy��� �rovni).
</entry>
</row>
<row>
<entry>
<literal>function</literal></entry>
<entry>
N�zev funkce, kde nastala chyba. Bude se opakovat pro ka�dou
�rove� z�sobn�ku vol�n� funkc�.
</entry>
</row>
<row>
<entry><literal>end</literal></entry>
<entry>
��k� p�ij�maj�c�mu programu, �e tady kon�� zpr�va debuggeru.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>data</replaceable></term>
<listitem>
<simpara>Data v ��dku.</simpara>
</listitem>
</varlistentry>
</variablelist>
<table>
<title>Typy chyb rozli�ovan� debuggerem</title>
<tgroup cols="2">
<thead>
<row>
<entry>Debugger</entry>
<entry>PHP 3 Internal</entry>
</row>
</thead>
<tbody>
<row>
<entry><errortype>warning</errortype></entry>
<entry><errortype>E_WARNING</errortype></entry>
</row>
<row>
<entry><errortype>error</errortype></entry>
<entry><errortype>E_ERROR</errortype></entry>
</row>
<row>
<entry><errortype>parse</errortype></entry>
<entry><errortype>E_PARSE</errortype></entry>
</row>
<row>
<entry><errortype>notice</errortype></entry>
<entry><errortype>E_NOTICE</errortype></entry>
</row>
<row>
<entry><errortype>core-error</errortype></entry>
<entry><errortype>E_CORE_ERROR</errortype></entry>
</row>
<row>
<entry><errortype>core-warning</errortype></entry>
<entry><errortype>E_CORE_WARNING</errortype></entry>
</row>
<row>
<entry><errortype>unknown</errortype></entry>
<entry>(v�echny ostatn�)</entry>
</row>
</tbody>
</tgroup>
</table>
<example>
<title>P��klad - zpr�va debuggeru</title>
<literallayout>
1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice
1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: (&null;):7
1998-04-05 23:27:400966 lucifer.guardian.no(20481) frames: 1
1998-04-05 23:27:400966 lucifer.guardian.no(20481) function: display
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location:
/home/ssb/public_html/test.php3:10
1998-04-05 23:27:400966 lucifer.guardian.no(20481) end: notice
</literallayout>
</example>
</para>
</sect1>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
Index: phpdoc/cs/appendices/history.xml
+++ phpdoc/cs/appendices/history.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<appendix id="history">
<title>Historie PHP a souvisej�c�ch projekt�</title>
<para>
PHP urazilo v posledn�ch n�kolika m�lo letech dlouhou cestu.
R�st v jeden z nejprominentn�j��ch jazyk� ovl�daj�ch Web nebyl snadn�.
Ti z v�s, kdo m�te z�jem dozv�d�t se ve zkratce, jak PHP vyrostlo do
dne�n� podoby, �t�te d�le.
</para>
<sect1 id="history.php">
<title>Historie PHP</title>
<sect2 id="history.phpfi">
<title>PHP/FI</title>
<para>
PHP je n�stupcem star��ho produktu, nazvan�ho PHP/FI. PHP/FI vytvo�il
Rasmus Lerdorf v roce 1995, na po��tku jako jednoduchou sadu skript�
v jazyce Perl pro zpracov�n� z�znam� o p��stupech k jeho webu. Tuto
sadu nazval 'Personal Home Page Tools'. Proto�e byla t�eba v�t��
funk�nost, napsal Rasmus mnohem rozs�hlej�� implementaci v C, kter�
byla schopna komunikovat s datab�zemi aumo��ovala u�ivatel�m vyv�jet
jednoduch� dynamick� aplikace pro Web. Rasmus se rozhodl uvolnit
zdrojov� k�d PHP/FI pro v�echny, tak�e kdokoli ho m��e pou��vat, stejn�
jako opravovat chyby a vylep�ovat k�d.
</para>
<para>
PHP/FI, co� znamen� Personal Home Page / Forms Interpreter, obsahovalo
n�co ze z�kladn� funkcionality PHP, jak ho zn�me dnes. M�lo prom�nn�
perlovsk�ho typu, automatickou interpretaci formul��ov�ch prom�nn�ch
a syntaxi vlo�enou do HTML. Syntaxe samotn� byla podobn� jazyku Perl,
p�esto�e mnohem omezen�j��, jednodu��� a v n��em nekonzistentn�.
</para>
<para>
V roce 1997 se PHP/FI 2.0, druh� implementace psan� v C, stala kultovn�
z�le�itost� pro (odhadem) tis�ce u�ivatel� po cel�m sv�t�, a s p�ibli�n�
50.000 dom�nami oznamuj�c�mi nainstalovan� PHP/FI, co� ��talo zhruba
1 % v�ech dom�n na Internetu. I kdy� do projektu za�alo sv�mi kusy k�du
p�isp�vat v�ce lid�, st�le to byl velk� projekt jednoho mu�e.
</para>
<para>
PHP/FI 2.0 bylo ofici�ln� uvoln�no a� v listopadu 1997, pot� co str�vilo
v�t�inu sv�ho �ivota v betaverz�ch. Kr�tce nato bylo n�sledov�no prvn�
alfaverz� PHP 3.0.
</para>
</sect2>
<sect2 id="history.php3">
<title>PHP 3</title>
<para>
PHP 3.0 byla prvn� verze, kter� se velmi bl��ila takov�mu PHP, jak ho
zn�me dnes. Vytvo�ili ho Andi Gutmans a Zeev Suraski v roce 1997
jako kompletn� p�epsan� celek, pot� co shledali PHP/FI 2.0 v�razn�
"poddimenzovan�" pro v�voj sv�ch aplikac� pro e-komerci. Ve snaze
spolupracovat a zah�jit budov�n� nad existuj�c� u�ivatelskou z�kladnou
PHP/FI, rozhodli se Andi, Rasmus a Zeev pracovat spole�n� a prohl�sit
PHP 3.0 za ofici�ln�ho n�stupce PHP/FI 2.0, a v�voj PHP/FI 2.0 byl
v podstat� zastaven.
</para>
<para>
Jednou z nejsiln�j��ch zbran� PHP 3.0 byly jeho obrovsk� mo�nosti
roz���en�. K poskytnut� pevn� infrastruktury pro mnoho r�zn�ch datab�z�,
protokol� a API koncov�m u�ivatel�m, p�il�kaly mo�nosti roz���en� PHP 3.0
tak� tucty v�voj���, kte�� se p�ipojili a vytvo�ili nov� roz�i�uj�c�
moduly. Toto byl nesporn� kl�� k obrovsk�mu �sp�chu PHP 3.0. Jin�m
kl��ov�m prvkem v PHP 3.0 byla podpora objektov� orientovan� syntaxe
a mnohem siln�j�� a konzistentn�j�� syntaxe jazyka.
</para>
<para>
Nov� jazyk byl uvoln�n pod nov�m n�zvem, kter� odstranil implikaci
omezen�ho osobn�ho pou�it�, kterou neslo ozna�en� PHP/FI 2.0.
Byl nazv�n pouze 'PHP', co� je rekurz�vn� akronym
- PHP: Hypertext Preprocessor.
</para>
<para>
Na konci roku 1998 vyrostlo PHP do rozsahu instalac� v ��du (odhadem)
des�tek tis�c u�ivatel� a stovek tis�c Web�. V dob� sv�ho vrcholu bylo
PHP 3.0 instalov�no na p�ibli�n� 10 % v�ech WWW server� na Internetu.
</para>
<para>
PHP 3.0 bylo ofici�ln� uvoln�no v �ervnu 1998, pot� co str�vilo cca
9 m�s�c� ve ve�ejn�m testov�n�.
</para>
</sect2>
<sect2 id="history.php4">
<title>PHP 4</title>
<para>
V zim� 1998, kr�tce po ofici�ln�m uvoln�n� PHP 3.0, za�ali Andi Gutmans
a Zeev Suraski pracovat na p�esp�n� j�dra PHP. C�lem n�vrhu bylo
zv��it v�kon pro slo�it� aplikace a zlep�it modularitu k�dov� b�ze PHP.
Takov� aplikace byly schopny pracovat s PHP 3.0 (d�ky nov�m mo�nostem a
podpo�e �irok� �k�ly datab�z� a API od jin�ch tv�rc�), ale PHP 3.0
nebylo navr�eno pro efektivn� pr�ci tak n�ro�n�ch aplikac�.
</para>
<para>
Nov� engine, nazvan� 'Zend Engine' (sestaven z jejich k�estn�ch jmen,
Zeev a Andi), �sp�n� splnil c�le n�vrhu a byl uveden v polovin� roku
1999. PHP 4.0, zalo�en� na tomto enginu a dopln�n� �irokou �k�lou nov�ch
prvk�, bylo ofici�ln� uvoln�no v kv�tnu 2000, necel� dva roky po sv�m
p�edch�dci, PHP 3.0. K podstatn� zv��en�mu v�konu t�to verze, p�id�v�
PHP 4.0 dal�� kl��ov� prvky, jako je podpora pro mnoho WWW server�,
HTTP sessions, buffering v�stupu, bezpe�n�j�� zp�soby zpracov�n� vstup�
u�ivatele a mnoho nov�ch jazykov�ch konstrukt�.
</para>
<para>
PHP 4 je moment�ln� posledn� uvoln�nou verz� PHP. Ji� byla zapo�ata
pr�ce na modifikaci a vylep�en� j�dra Zend Engine k integraci prvk�,
kter� byly navr�eny pro PHP 5.0.
</para>
<para>
Dnes pou��vaj� PHP (odhadem) stovky tis�c v�voj��� a nainstalovan� PHP
hl�s� n�kolik milion� server� - tj. p�es 20 % dom�n na Internetu.
</para>
<para>
V�vojov� t�m PHP zahrnuje tucty v�voj���, stejn� tak jako tucty dal��ch
lid�, kte�� pracuj� na projektech spojen�ch s PHP, jako je PEAR a
dokumenta�n� projekt.
</para>
</sect2>
</sect1>
<sect1 id="history.php.related">
<title>Historie projekt� souvisej�c�ch s PHP</title>
<!-- Hope Stig and/or Egon can do this
<sect2 id="history.phpdoc">
<title>PHP Documentation Project</title>
<para>
</para>
</sect2>
-->
<sect2 id="history.pear">
<title>PEAR</title>
<para>
PEAR, PHP Extension and Application Repository (�esky repozit��
roz���en� a aplokac� PHP) - p�vodn� PHP Extension and Add-on Repository
(repozit�� roz���en� a dopl�k�) - je PHP verze "foundation classes",
a m��e v budoucnu vyr�st v jeden z kl��ov�ch zp�sob� distribuce jak
PHP roz���en�, tak roz���en� PHP psan�ch v C, mezi v�voj��e.
</para>
<para>
PEAR se zrodil v diskusi na m�tinku PHP Developers' Meeting (PDM)
v lednu 2000 v Tel Avivu. Byl vytvo�en Stigem S. Bakkenem a delegov�n
na jeho prvorozenou dceru Malin Bakken.
</para>
<para>
Od za��tku roku 2000 PEAR vyrostl ve velk�, v�znamn� projekt s velk�m
po�tem v�voj��� pracuj�c�ch na spole�n�, �iroce pou�iteln� funkcionalit�
ve prosp�ch cel� PHP komunity. PEAR dnes zahrnuje �irokou paletu
infrastrukturn�ch "foundation classes" pro p��stup k datab�z�m, cachov�n�
obsahu e-komerci a mnoho dal��ho.
</para>
</sect2>
<sect2 id="history.phpqa">
<title>PHP Quality Assurance Initiative</title>
<para>
PHP Quality Assurance Initiative (iniciativa zaji�t�n� kvality PHP)
byla ustavena v l�t� 2000 v rakci na kritiku, �e uvoln�n� verze PHP
nebyly dostate�n� testov�ny pro produk�n� prost�ed�. T�m nyn� sest�v�
z pevn� skupiny v�voj���, kte�� dob�e rozum�j� k�dov� b�zi PHP. Tito
v�voj��i tr�v� mnoho �asu lokalizac� a odstra�ov�n�m chyb v PHP. Nav�c
je zde mnoho �len� t�mu, kte�� to pak testuj� a poskytuj� zp�tnou vazbu
na tyto opravy na �irok� �k�le platforem.
</para>
</sect2>
<sect2 id="history.phpgtk">
<title>PHP-GTK</title>
<para>
PHP-GTK je PHP �e�en� pro psan� GUI aplikac� pro stranu klienta. Andrei
Zmievski p�ipom�n� pl�nov�n� a proces tvorby PHP-GTK:
</para>
<blockquote>
<para>
Programov�n� GUI v�dy pat�ilo mezi m� z�jmy a shledal jsem Gtk+
velmi p��jemn�m toolkitem, krom� toho, �e programovat s jeho pou�it�m
v C je n�kdy nudn�. Po zku�enostech s PyGtk a GTK-Perl implemetacemi
jsem se rozhodl pod�vat se, zda by se dalo v PHP vytvo�it, alespo�
trochu, rozhran� ke Gtk+. Po��naje srpnem 2000 jsem m�l o n�co v�ce
voln�ho �asu, tak�e jsem za�al experimentovat. M�m hlavn�m vod�tkem
byla implementace PyGtk, co� bylo skute�n� funk�n� kompletn� a p��jemn�
objektov� orientovan� rozhran�. James Henstridge, autor PyGtk,
mi poskytl velmi u�ite�n� rady b�hem po�ate�n�ho st�dia v�voje.
</para>
<para>
Ru�n� psan� rozhran� ke v�em funkc�m Gtk+ bylo zcela mimo hru,
tak�e jsem se zab�val ideou gener�toru k�du, podobn�ho jako v p��pad�
PyGtk. Gener�tor k�du je program v PHP, kter� �te sadu .defs soubor�
obsahuj�c�ch informace o t��d�ch, konstant�ch a metod�ch Gtk+ a
generuje k�d v C, kter� pro n� poskytuje rozhran�. Co nelze vygenerovat
automaticky, m��e b�t naps�no ru�n� v souboru .overrides.
</para>
<para>
Pr�ce na gener�toru k�du a na infrastruktu�e trvala n�jakou dobu,
proto�e jsem na podzim 2000 mohl pr�ci na PHP-GTK v�novat jen m�lo
�asu. Kdy� jsem to pak uk�zal Franku Kromannovi, byl zaujat a za�al mi
pom�hat s prac� na gener�toru k�du a implementaci pro Win32. Kdy�
jsme napsali prvn� program "Ahoj sv�te!" a spustili ho, bylo to
extr�mn� vzru�uj�c�. Trvalo to n�kolik m�s�c�, ne� se projekt dostal
do prezentovateln�ho stavu a �vodn� verze byla uvoln�na 1 .b�ezna 2001.
P��b�h okam�it� zas�hl SlashDot.
</para>
<para>
S ohledem na to, jak m��e b�t projekt PHP-GTK rozs�hl�, zalo�il jsem
pro n�j samostatn� diskusn� skupiny a CVS repozit��e, stejn� jako
(s pomoc� Colina Viebrocka) webovskou str�nku gtk.php.net. Tak� by bylo
t�eba ud�lat dokumentaci a James Moore p�isp�chal pomoci s n�.
</para>
<para>
Uvoln�n� verze PHP-GTK si ji� z�skala popularitu. M�me vlastn�
dokumenta�n� t�m, manu�l se st�le zlep�uje, lid� za��naj� ps�t
roz���en� pro PHP-GTK, a v�c a v�c vzru�uj�c�ch aplikac�.
</para>
</blockquote>
</sect2>
</sect1>
<sect1 id="history.php.books">
<title>Knihy o PHP</title>
<para>
Jak PHP rostlo, za�alo b�t pova�ov�no za celosv�tov� popul�rn� v�vojovou
platformu. Jedn�m z nejzaj�mav�j��ch zp�sob� pozorov�n� tohoto trendu
je sledov�n� knih o PHP vyd�van�ch b�hem posledn�ch let.
</para>
<para>
Pokud si dob�e pamatujeme, prvn� kniha zam��en� na PHP
'PHP - Dynamische Webauftritte professionell realisieren' - n�meck�
kniha publikovan� v roce 1999, autory byli Egon Schmid,
Christian Cartus and Richard Blume. Prvn� kniha v angli�tin� byla vyd�na
kr�tce nato: 'Core PHP Programming' od Leona Atkinsona. Ob� tyto knihy
se zab�valy PHP 3.0.
</para>
<para>
Tyto dv� knihy byly prvn� sv�ho druhu - a byly n�sledov�ny velk�m
mno�stv�m knih r�zn�ch autor� a vydavatel�. Existuje p�es 40 knih
v angli�tin�, 50 knih v n�m�in� a p�es 20 knih ve francouz�tin�.
Nav�c m��ete naj�t knihy o PHP v mnoha dal��ch jazyc�ch v�etn�
�pan�l�tiny, korej�tiny, japon�tiny a hebrej�tiny.
</para>
<para>
Samoz�ejm�, tento velk� po�et knih, psan�ch r�zn�mi autory, vyd�van�ch
mnoha vydavateli a jejich dostupnost v tolika jazyc�ch - je potvrzen�m
celosv�tov�ho �sp�chu PHP.
</para>
</sect1>
<sect1 id="history.php.publications">
<title>Ostatn� publikace o PHP</title>
<para>
Podle na�ich nejlep��ch informac� byl prvn� �l�nek o PHP v ti�t�n�m
�asopisu publikov�n ve French Informatiques Magazine na konci roku 1998
a zab�val se PHP 3.0. Stejn� jako v p��pad� knih byl prvn� v dlouh� �ad�
�l�nk� publikovan�ch v r�zn�ch uzn�van�ch �asopisech.
</para>
<para>
�l�nky o PHP se objevily v �asopisech Dr. Dobbs, Linux Enterprise,
Linux Magazine a mnoha dal��ch. �l�nky o p�echod z aplikac� zalo�en�ch na
ASP na platformu PHP pod Windows se objevily dokonce na ryze Microsoft�m
MSDN!
</para>
</sect1>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
Index: phpdoc/cs/appendices/migration.xml
+++ phpdoc/cs/appendices/migration.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<appendix id="migration">
<title>P�echod z PHP/FI 2 na PHP 3</title>
<section id="migration.about">
<title>O nekompatibilit�ch v 3.0</title>
<simpara>
PHP 3.0 je od z�kladu p�eps�no. M� n�le�it� parser, kter� je mnohem
robustn�j�� a konzistentn�j�� ne� ten ve verzi 2.0. Verze 3.0 je
tak� signifikantn� rychlej�� a pou��v� m�n� pam�ti. Logicky,
n�kter� z t�chto vylep�en� nebyla mo�n� bez zm�n�ch v kompatibilit�,
jak v syntaxi, tak ve funkcionalit�.
</simpara>
<simpara>
Nav�c se v�voj��i PHP sna�ili vy�istit jak syntaxi, tak s�mantiku
PHP, co� tak� p�ineslo n�jak� nekompatibility. Ze �ir��ho pohledu,
v���me �e tyto zm�ny jsou pro dobro v�ci.
</simpara>
<simpara>
Tato kapitola se pokus� prov�st v�s nekompatibilitami, na kter� m��ete
narazit p�i p�echodu z PHP/FI 2.0 na PHP 3.0 a pomoci v�m je vy�e�it.
Nov� prvky zde nebudou zmi�ov�ny, pokud to nebude nutn�.
</simpara>
<simpara>
Konverzn� program, kter� automaticky p�evede va�e star� skripty v
PHP/FI 2.0, existuje. Najdete ho adres��i
<filename class="directory">convertor</filename> v distribuci PHP 3.0.
Tento program v�ak zachycuje pouze zm�ny syntaxe, tak�e p�esto pozorn�
�t�te tuto kapitolu.
</simpara>
</section>
<section id="migration.startendtags">
<title>Otv�rac�/uzav�rac� zna�ky (start/end tags)</title>
<para>
Pravd�podobn� prvn� v�c�, kterou zaznamen�te, je, �e se zm�nily otev�rac�
a uzav�rac� zna�ky (ozna�uj� za��tek a konec k�du PHP). Star� zna�ky
<literal><? ></literal> byly nahrazeny t�emi mo�n�mi formami:
<example>
<title>P�echod: star� otv�rac�/uzav�rac� zna�ky</title>
<programlisting role="php">
<![CDATA[
<? echo "This is PHP/FI 2.0 code.\n"; >
]]>
</programlisting>
</example>
Jako verze 2.0, PHP 3.0 podporuje tak� tuto variantu:
<example>
<title>P�echod: prvn� otv�rac�/uzav�rac� zna�ky</title>
<programlisting role="php">
<![CDATA[
<? echo "This is PHP 3.0 code!\n"; ?>
]]>
</programlisting>
</example>
V�imn�te si, �e uzav�rac� zna�ka nyn� sest�v� z otazn�ku a znaku
"v�t�� ne�" nam�sto pouh�ho znaku "v�t�� ne�". Bohu�el, pokud na sv�m
serveru pl�nujete pou��vat XML, bude tato varianta d�lat probl�my,
proto�e se PHP m��e pokou�et interpretovat XML zna�ku jako PHP k�d.
Z tohoto d�vodu byla zavedena nov� varianta:
<example>
<title>P�echod: druh� otv�rac�/uzav�rac� zna�ky</title>
<programlisting role="php">
<![CDATA[
<?php echo "This is PHP 3.0 code!\n"; ?>
]]>
</programlisting>
</example>
N�kte�� lid� maj� probl�my s editory, kter� zcela neporozum� zpracov�n�
instruk�n�ch zna�ek. Jedn�m z takov�ch editor� je Microsoft FrontPage,
a jako �e�en� tohoto probl�mu byla p�id�na je�t� dal�� varianta:
<example>
<title>P�echod: t�et� otv�rac�/uzav�rac� zna�ky</title>
<programlisting role="php">
<![CDATA[
<script language="php">
echo "This is PHP 3.0 code!\n";
</script>
]]>
</programlisting>
</example>
</para>
</section>
<section id="migration.if-endif">
<title>syntaxe if..endif</title>
<para>
Alternativn� zp�sob, jak zapsat konstrukci if/elseif/else, za pou�it�
if(); elseif(); else; endif;, nem��e b�t efektivn� implementov�na bez
podstatn�ho n�r�stu slo�itosti 3.0 parseru. Kv�li tomu se zm�nila syntaxe:
<example>
<title>P�echod: star� syntaxe if..endif</title>
<programlisting role="php">
<![CDATA[
if ($foo);
echo "yep\n";
elseif ($bar);
echo "almost\n";
else;
echo "nope\n";
endif;
]]>
</programlisting>
</example>
<example>
<title>P�echod: nov� syntaxe if..endif</title>
<programlisting role="php">
<![CDATA[
if ($foo):
echo "yep\n";
elseif ($bar):
echo "almost\n";
else:
echo "nope\n";
endif;
]]>
</programlisting>
</example>
V�imn�te si, �e st�edn�ky byly nahrazeny dvojte�kami ve v�ech konstruktech
krom� z�v�re�n�ho (endif).
</para>
</section>
<section id="migration-while">
<title>syntaxe while</title>
<para>
Stejn� jako if..endif, syntaxe while..endwhile byla zm�n�na:
<example>
<title>P�echod: star� syntaxe while..endwhile</title>
<programlisting role="php">
<![CDATA[
while ($more_to_come);
...
endwhile;
]]>
</programlisting>
</example>
<example>
<title>P�echod: nov� syntaxe while..endwhile</title>
<programlisting role="php">
<![CDATA[
while ($more_to_come):
...
endwhile;
]]>
</programlisting>
</example>
</para>
<warning>
<simpara>
Pokud v PHP 3.0 pou�ijete starou syntaxi while..endwhile, z�sk�te
nekone�nou smy�ku.
</simpara>
</warning>
</section>
<section id="migration.expr">
<title>Typy v�raz�</title>
<simpara>
PHP/FI 2.0 pou��valo levou stranu v�raz� k ur�en�, jak�ho typu m�
v�sledek b�t. PHP 3.0 bere pro ur�en� typu v �vahu ob� strany v�razu,
a to m��e zp�sobit nep�edv�dateln� chov�n� 2.0 skript� v PHP 3.0.
</simpara>
<para>
Uva�ujme tento p��klad:
<informalexample>
<programlisting role="php">
<![CDATA[
$a[0]=5;
$a[1]=7;
$key = key($a);
while ("" != $key) {
echo "$keyn";
next($a);
}
]]>
</programlisting>
</informalexample>
V PHP/FI 2.0 by to zobrazilo ob� hodnoty v $a. V PHP 3.0 se v�ak
nezobraz� nic. D�vod je ten, �e PHP 2.0 kv�li tomu, �e na lev� stran�
je �etezec, provede porovn�n� �et�zc�, a <literal>""</literal>
se nerovn� <literal>"0"</literal>, tedy se bude proch�zet cyklem.
V PHP 3.0 se �et�zec porovn� s cel�m ��slem (integer), provede se
porovn�n� cel�ch ��sel (�et�zec je p�eveden na cel� ��slo). V�sledkem
je porovn�n� <literal>atoi("")</literal>, co� je <literal>0</literal>, a
<literal>variablelist</literal>, co� je tak� <literal>0</literal>.
A proto�e <literal>0==0</literal>, cyklem se v�bec proch�zet nebude.
</para>
<para>
Oprava pro tento p��klad je snadn�. Nahra�te p�vodn� konstrukci t�mto:
<informalexample>
<programlisting role="php">
<![CDATA[
while ((string)$key != "") {
]]>
</programlisting>
</informalexample>
</para>
</section>
<section id="migration.errors">
<title>Chybov� zpr�vy se zm�nily</title>
<simpara>
Chybov� zpr�vy PHP 3.0 jsou obvykle p�esn�j��, ne� byly ve 2.0.
Neuvid�te v�ak ��st k�du, kde nastala chyba. Vyp��e se pouze n�zev
souboru a ��slo ��dku, kde nastala chyba.
</simpara>
</section>
<section id="migration.booleval">
<title>Zkr�cen� vyhodnocen� logick�ch v�raz�</title>
<simpara>
V PHP 3.0 se pou��v� zkr�cen� vyhodnocen� logick�ch v�raz�. To znamen�,
�e pro v�raz jako <literal>(1 || test_me())</literal> ji� nebude funkce
<function>test_me</function> vol�na, proto�e za <literal>1</literal> ji�
nic nem��e ovlivnit hodnotu v�razu.
</simpara>
<simpara>
Toto je mal� zm�na kompatibility,ale m��e zp�sobit neo�ek�van� vedlej��
efekty.
</simpara>
</section>
<section id="migration.truefalse">
<title>N�vratov� hodnoty &true;/&false;</title>
<simpara>
V�t�ina vnit�n�ch funkc� byla p�eps�na tak, aby vracela &true;
v p��pad� �sp�chu a &false; p�i selh�n�, narozd�l od p�vodn�ch hodnot
0 a -1 v PHP/FI 2.0. Nov� chov�n� umo��uje logi�t�j�� programov�n�, jako
<literal>$fp = fopen("/your/file") nebo fail("darn!");</literal>.
Proto�e v PHP/FI 2.0 nebyla jasn� pravidla, v kter�ch p��padech se
vyskakovalo z funkce p�i selh�n�, v�t�ina skript� bude pravd�podobn� muset
b�t zkontrolov�na ru�n� po pou�it� konvertoru z 2.0 na 3.0.
</simpara>
<para>
<example>
<title>P�echod z 2.0: n�vratov� hodnoty, star� k�d</title>
<programlisting role="php">
<![CDATA[
$fp = fopen($file, "r");
if ($fp == -1);
echo("Could not open $file for reading<br>\n");
endif;
]]>
</programlisting>
</example>
<example>
<title>P�echod z 2.0: n�vratov� hodnoty, nov� k�d</title>
<programlisting role="php">
<![CDATA[
$fp = @fopen($file, "r") or print("Could not open $file for reading<br>\n");
]]>
</programlisting>
</example>
</para>
</section>
<section id="migration-other">
<title>Jin� nekompatibility</title>
<itemizedlist>
<listitem><simpara>
Modul PHP 3.0 pro Apache ji� nepodporuje verze Apache star�� ne� 1.2.
Je t�eba Apache 1.2 nebo pozd�j��.
</simpara></listitem>
<listitem><simpara>
Funkce <function>echo</function> ji� nepodporuje form�tovan� �et�zec.
Pou�ijte nam�sto toho <function>printf</function>.
</simpara></listitem>
<listitem><simpara>
V PHP/FI 2.0 zp�sobovaly vedlej�� efekty implementace to, �e
<literal>$foo[0]</literal> m�lo stejn� ��inek jako
<literal>$foo</literal>. Toto ji� v PHP 3.0 neplat�
</simpara></listitem>
<listitem>
<simpara>
�ten� z pol� pomoc� <literal>$array[]</literal> ji� nen� podporov�no.
</simpara>
<simpara>
To znamen�, �e nem��ete traverzovat pole v cyklu, kter� prov�d�
<literal>$data = $array[]</literal>. Pou�ijte funkce
<function>current</function> a <function>next</function>.
</simpara>
<simpara>
Sou�asn� <literal>$array1[] = $array2</literal> nep�ipojuje hodnoty pole
<literal>$array2</literal> k poli
<literal>$array1</literal>, n�br� p�ipojuje pole
<literal>$array2</literal> jako posledn� polo�ku pole
<literal>$array1</literal>. Viz t�: podpora v�cerozm�rn�ch pol�.
</simpara>
</listitem>
<listitem>
<simpara>
<literal>"+"</literal> ji� nen� p�et�ov�n jako spojovac� oper�tor pro
�et�zce, nam�sto toho konvertuje �et�zce na ��sla a provede jejich
(numerick�) sou�et. Pou�ijte tedy oper�tor
<literal>"."</literal> instead.
</simpara>
</listitem>
</itemizedlist>
<example>
<title>P�echod z 2.0: spojen� �et�zc�</title>
<programlisting role="php">
<![CDATA[
echo "1" + "1";
]]>
</programlisting>
<para>
V PHP 2.0 by se vypsalo 11, v PHP 3.0 se vyp��e 2.
Kdy� m�sto toho pou�ijete:
<programlisting role="php">
<![CDATA[
echo "1"."1";
]]>
</programlisting>
<programlisting role="php">
<![CDATA[
$a = 1;
$b = 1;
echo $a + $b;
]]>
</programlisting>
</para>
<para>
vyp��e se 2 v PHP 2.0 i 3.0.
<programlisting role="php">
<![CDATA[
$a = 1;
$b = 1;
echo $a.$b;
]]>
</programlisting>
Toto v PHP 3.0 vyp��e 11.
</para>
</example>
</section>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->