basic-syntax.xml

[email protected] (Gustav Tiger) Fri, 05 Mar 2004 23:54:36 +0100
Newsgroups php.doc.sv
Message-ID <[email protected]>
-- Regards
_________________________________________
Gustav Tiger
Bergs Gymnasium

Sweden
basic-syntax.xml (text/xml, 9.4 KB)
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.36 $ -->
 <chapter id="language.basic-syntax">
  <title>Grundläggande syntax</title>

   <!--
   
    NOTE:                             Last modified: 2001-05-16 13:00 GMT
    
    the language part is currently under heavy revision. Please do not
    not make any heavy (i.e. structural) modifications to this part 
    for a moment. 
    
    You'd also better not start any translation yet.
    
    Comments are always welcome at [email protected]
    
    Progress:
    
     intro : DOESN'T EXIST - yet?
             new chapter, with some introductionary remarks?
             Will be discussed on the ML soon.
     basic-syntax: 
             FINISHED
             except maybe moving the 'advanced escaping'
             to a better place?
             TODO: 
              - nada
     types : Being revised. Added all new types
             Boolean and Integer are more or less finished.
             The rest isn't.
             TODO: 
              - why is $foo[bar] bad syntax?
              - what's the difference between unset($bla) and
                $bla = NULL; (it is different!)
              - $obj->{expr} syntax
              - (unset) cast?????
              - $bla = unset <== should've been nuked, don't mention it
              - $str{offset} syntax, rather than $str[offset]
              - read notes and apply when any of them are useful
              - remove notes which have been included here.
              - ...
     the rest: Not yet started with.
             TODO: 
              - ?
     oop   : has been revised by Kristian, DONE.
   -->
   
  <sect1 id="language.basic-syntax.phpmode">
   <title>Att fly från HTML</title>
  
   <para>
    När PHP tolkar en fil så går den helt enkelt igenom filen tills
    den påträffar en av de speciella taggar som säger att den ska börja
    tolka texten som PHP-kod. Tolken kör all PHP-kod den hittar tills
    den hittar en sluttag som berättar för tolken att den ska sluta tolka
    PHP-kod och istället börja leta efter nästa starttagg. Det här är den 
    mekanism som tillåter dig att använda PHP-kod i HTML-kod. 
    Allting som inte är inom PHP-taggar lämnas medan allting i dem
    tolkas som kod.
   </para>

   <para>
    Det finns fyra uppsättningar av taggar som kan användas för märka
    ut block med PHP-kod. Av dessa är det bara två (&lt;?php. . .?&gt; 
    och &lt;script language="php"&gt;. . .&lt;/script&gt;) som alltid
    finns tillgängliga. De andra kan aktiveras och avaktiveras i PHP:s
    konfigurationsfil &php.ini. De korta taggarna och ASP-taggarna 
    kan verka bekväma men de är inte lika portabla som de längre 
    versionerna. Om du har tänkt dig att använda PHP-kod i XML eller
    XHTML så måste du använda &lt;?php. . .?&gt; annars fungerar det
    inte tillsammans med XML.
   </para>

   <para>
    Taggarna som PHP stödjer är:
   </para>

    <para>
     <example>
      <title>Olika vägar att fly från HTML</title>
      <!-- TODO, translation processing instruction = vad?? fly = vad?? -->
      <programlisting role="php">
<![CDATA[
1.  <?php echo("gör såhär om du vill betjäna XHTML- eller XML-dokument\n"); ?>

2.  <? echo ("en processinstruktion ala SGML är den enklaste, \n"); ?>
    <?= expression ?> Det här är en genväg till "<? echo expression ?>"
    
3.  <script language="php">
        echo ("några editorer (som FrontPage) tycker inte
              om processinstruktoner");
    </script>

4.  <% echo ("Alternativt kan du använda ASP-taggar"); %>
    <%= $variable; # Det här är en genväg till "<% echo . . ." %>
]]>
      </programlisting>
     </example>
    </para>

   <para>
    Det första sättet, &lt;?php. . .?&gt;, är att föredra eftersom
    den tillåter att man använder PHP i XML-anpassade kod som XHTML.
   </para>

   <para>
    Det andra sättet är inte alltid tillgängligt. Korta taggar är bara
    tillgängliga när de har blivit aktiverade. Det kan göras via 
    funktionen <function>short_tags</function> (bara i PHP 3), genom
    att aktivera inställningen
    <link linkend="ini.short-open-tag">short_open_tag</link>
    i PHP:s konfigurationsfil eller genom att kompilera PHP med alternativet 
    --enable-short-tags givet till <command>configure</command>. Även 
    om de är aktiverade som standard i php.ini-dist så är uppmuntras
    <emphasis>inte</emphasis> användandet av korta taggar.    
   </para>

   <para>
    Det fjärde sättet är bara tillgängligt om ASP-taggar har 
    aktiverats genom inställningen <link linkend="ini.asp-tags">asp_tags</link>
    i konfigurationsfilen.

    <note>
     <para>Stöd för ASP-taggar lades till i in 3.0.4.</para>
    </note>
   </para>

   <para>
    <note>
     <para>
      Användandet av korta taggar bör undvikas under utveckling av
      applikationer och bibliotek som är tänkt att spridas eller
      på PHP-servrar som du inte har kontroll över, eftersom korta taggar
      kanske inte stöds av den servern. Se till att inte använda korta
      taggar för att få en portabel, spridbar kod.
     </para>
    </note>
   </para>

   <para>
    <!-- TODO, översättning?? The closing tag for the block will include the immediately
    trailing newline if one is present. (Första meningen)  
    
    övrigt, lite konstigt här.. ja -->
    Sluttaggen för ett block kommer att inkludera det sista
    nyradstecknet om det finns ett sådant. Sluttaggen förstår
    att det skall vara ett semikolon innan så man behöver inte
    ha något semikolon på slutet av den sista raden kod i ett 
    PHP-block. Sluttagg för PHP-block i slutet av en fil
    är också valfritt.
   </para>
    
   <para>
    PHP låter dig att använda strukturer som den här:
    <example><title>Avancerad flykt</title>
     <programlisting role="php">
<![CDATA[
<?php
if ($expression) { 
    ?>
    <strong>Det här är sant.</strong>
    <?php 
} else { 
    ?>
    <strong>Det här är falskt.</strong>
    <?php 
}
?>
]]>
     </programlisting>
    </example>
    Det här kommer att fungera som väntat eftersom när tolken stöter på
    sluttaggen ?&gt; så börjar den att mata ut all den hittar tills
    den stöter på ytterligare en öppningstagg. I det här exemplet är 
    det inte försvarligt men om man vill mata ut större massor av text är 
    det ofta mer effektivt att göra på det här sättet än att skriva ut
    text genom <function>echo</function>, <function>print</function> 
    eller liknande.
   </para>
  </sect1>
  
  <sect1 id="language.basic-syntax.instruction-separation">
   <title>Intruktionsseparering</title>
   
   <simpara>
    Instruktioner separeras likadant som i C eller Perl - genom 
    att avsluta satsen med ett semikolon.
   </simpara>

   <para>
    Sluttaggen (?&gt;) förutsätter att satsen slutar där så följande
    exempel är likvärdiga:
    
    <informalexample>
     <programlisting role="php">
<![CDATA[
<?php
    echo "Det här är ett test";
?>

<?php echo "Det här är ett test" ?>
]]>
     </programlisting>
    </informalexample>
   </para>
  </sect1>

  <sect1 id="language.basic-syntax.comments">
   <title>Kommentarer</title>
   
   <para>
    PHP stödjer 'C', 'C++' och Unix shell-kommentarer. Till exempel:

    <informalexample>
     <programlisting role="php">
<![CDATA[
<?php
    echo "Det här är ett test"; // Det här är en enradskommentar i  c++-stil
    /* Det här är en flerradskommentar
       ytterligare en rad med kommentarer */
    echo "Det här är ytterligare ett test";
    echo "Ett sista test"; # Det här är en shelltypskommentar
?>
]]>
     </programlisting>
    </informalexample>
   </para>

   <simpara>
    "Enradskommentaren" kommenterar egentligen bara till slutet av
    raden eller till slutet av PHP-blocket beroende på vilket som
    kommer först.
   </simpara>
   <para>
    <informalexample>
     <programlisting role="php">
<![CDATA[
<h1>Det här är ett <?php # echo "enkelt";?> exempel.</h1>
<p>Rubriken ovanför kommer att visa 'Det här är ett exempel'.
]]>
     </programlisting>
    </informalexample> 
   </para>

   <simpara>
    Man ska vara försiktig med att blanda flera C-kommentarer, vilket
    kan hända när man kommenterar bort stora kodblock.
   </simpara>

   <para>
    <informalexample>
     <programlisting role="php">
<![CDATA[
<?php
 /* 
    echo "Det här är ett test"; /* Den här kommentaren kommer att orsaka problem */
 */
?>
]]>
     </programlisting>
    </informalexample>
   </para>
   
   <simpara>
    Enradskommentarerna kommenterar bara till slutet av raden eller
    till slutet av kodblocket beroende på vilken som kommer först.
    Det betyder att HTML-koden efter <literal>// ?&gt;</literal>
    kommer att skrivas ut. ?&gt; hoppar ut ur PHP-läget och återgår
    till HTML-läget och <literal>//</literal> kan inte påverka det.
    Om <link linkend="ini.asp-tags">asp_tags</link> är aktiverade
    så kommer det att hända samma med sak med <literal>// %&gt;</literal>.
   </simpara>
  </sect1>
 </chapter>
 
<!-- 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:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->