Skip to content

Commit

Permalink
Sync untranslated language/control-structures (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
grzegorz-bankowski authored Nov 21, 2024
1 parent 2d7d5e8 commit d608c1b
Show file tree
Hide file tree
Showing 4 changed files with 944 additions and 0 deletions.
189 changes: 189 additions & 0 deletions language/control-structures/declare.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5499acf9df7e1338d540bde207acc859792cd139 Maintainer: grzesiek Status: ready -->
<!-- $Revision$ -->

<sect1 xml:id="control-structures.declare" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>declare</title>
<?phpdoc print-version-for="declare"?>
<para>
Konstrukcja <literal>declare</literal> służy do
ustawiania dyrektyw wykonania dla bloku kodu.
Składnia <literal>declare</literal> jest podobna do
składni innych konstrukcji kontroli przepływu:
<informalexample>
<programlisting>
<![CDATA[
declare (directive)
statement
]]>
</programlisting>
</informalexample>
</para>

<para>
Sekcja <literal>directive</literal> pozwala na ustawienie
zachowania bloku <literal>declare</literal>.
Obecnie rozpoznawane są tylko trzy dyrektywy:
<simplelist>
<member><link linkend="control-structures.declare.ticks"><literal>ticks</literal></link></member>
<member><link linkend="control-structures.declare.encoding"><literal>encoding</literal></link></member>
<member><link linkend="language.types.declarations.strict"><literal>strict_types</literal></link></member>
</simplelist>
</para>

<para>
Ponieważ dyrektywy są obsługiwane podczas kompilacji pliku, tylko literały
mogą być podawane jako wartości dyrektyw. Zmienne i stałe nie mogą być używane.
Aby zilustrować:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// To nie jest niepoprawne:
declare(ticks=1);
// To jest poprawne:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
Część <literal>statement</literal> bloku
<literal>declare</literal> zostanie wykonana - sposób
jej wykonania i efekty uboczne mogą zależeć od dyrektywy
ustawionej w bloku
<literal>directive</literal>.
</para>
<para>
Konstrukcja <literal>declare</literal> może być również używana w zakresie
globalnym, wpływając na cały kod następujący po niej (jednak jeśli plik z
konstrukcją <literal>declare</literal> został dołączony, nie ma to wpływu na
plik nadrzędny).
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// są takie same:
// można użyć tego:
declare(ticks=1) {
// cały skrypt tutaj
}
// lub możesz użyć tego:
declare(ticks=1);
// cały skrypt tutaj
?>
]]>
</programlisting>
</informalexample>
</para>

<sect2 xml:id="control-structures.declare.ticks">
<title>Ticks</title>
<para>Tick jest zdarzeniem, które występuje dla każdych
<varname>N</varname> niskopoziomowych instrukcji tickable
wykonywanych przez parser w bloku <literal>declare</literal>.
Wartość <varname>N</varname> jest określana za pomocą
<code>ticks=<varname>N</varname></code>
w bloku <literal>declare</literal>
sekcji <literal>directive</literal>.
</para>
<para>
Nie wszystkie instrukcje są tickowalne. Zazwyczaj wyrażenia
warunkowe i wyrażenia argumentów nie są tickowalne.
</para>
<para>
Zdarzenia występujące przy każdym ticku są określane za pomocą
funkcji <function>register_tick_function</function>. Więcej szczegółów
można znaleźć w poniższym przykładzie. Należy pamiętać, że dla każdego ticku
może wystąpić więcej niż jedno zdarzenie.
</para>
<para>
<example>
<title>Przykład użycia tick</title>
<programlisting role="php">
<![CDATA[
<?php
declare(ticks=1);
// Funkcja wywoływana przy każdym zdarzeniu tick
function tick_handler()
{
echo "tick_handler() called\n";
}
register_tick_function('tick_handler'); // powoduje zdarzenie tick
$a = 1; // powoduje zdarzenie tiku
if ($a > 0) {
$a += 2; // powoduje zdarzenie tick
print $a; // powoduje zdarzenie tick
}
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Zobacz również funkcje <function>register_tick_function</function> i
<function>unregister_tick_function</function>.
</simpara>
</sect2>
<sect2 xml:id="control-structures.declare.encoding">
<title>Kodowanie</title>
<para>
Kodowanie skryptu można określić dla każdego skryptu za pomocą dyrektywy <literal>encoding</literal>.
<example>
<title>Deklarowanie kodowania dla skryptu</title>
<programlisting role="php">
<![CDATA[
<?php
declare(encoding='ISO-8859-1');
// tutaj kod
?>
]]>
</programlisting>
</example>
</para>

<caution>
<simpara>
W połączeniu z przestrzeniami nazw, jedyną legalną składnią dla declare jest
<literal>declare(encoding='...');</literal> gdzie <literal>...</literal>
jest wartością kodowania. <literal>declare(encoding='...') {}</literal>
spowoduje błąd parsowania w połączeniu z przestrzeniami nazw.
</simpara>
</caution>
<para>
Zobacz również <link linkend="ini.zend.script-encoding">zend.script_encoding</link>.
</para>
</sect2>
</sect1>

<!-- 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:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
Loading

0 comments on commit d608c1b

Please sign in to comment.