cvs: phpdoc-tw /language basic-syntax.xml variables.xml
| From: | Kevin Kee | Date: | Sun, 15 Jun 2003 14:55:37 +0000 |
| Subject: | cvs: phpdoc-tw /language basic-syntax.xml variables.xml | ||
| Groups: | php.doc.tw | ||
| Request: | Send a blank email to doc-tw+get-52@lists.php.net to get a copy of this message | ||
kevinkee Sun Jun 15 10:55:37 2003 EDT
Added files:
/phpdoc-tw/language basic-syntax.xml variables.xml
Log:
add two newly translated files
Index: phpdoc-tw/language/basic-syntax.xml +++ phpdoc-tw/language/basic-syntax.xml <?xml version="1.0" encoding="big5"?> <!-- $Revision: 1.1 $ --> <chapter id="language.basic-syntax"> <title>°ò¥»»yªk</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 phpdoc@lists.php.net 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>±q HTML ¤¤¶h¥X</title> <para> ·í PHP åªR¤@ÓÀɮ׮ɡA¥¦¬O¤£·|¹ï¤@¯ë¦r¤¸§@¥ô¦ó³B²z¡A°£«D¥¦¹J¤W¤F¨ä¤¤¤@Ó¯S®í¼ÐÅÒ¡A¼Ð©ú PHP µ{¦¡ªº¶}©l¡C³o®É¡APHP ¤~¶}©l¥H PHP µ{¦¡½X¨Ó¸Ñ͏Ӭq¤å¦r¡A¦Ü¨ì¥¦¹J¤W PHP µ{¦¡½Xµ²§ôªº¼ÐÅÒ¡C¦¹µ²§À¼Ð°O¥H«áªº¤å¦r¤S·|³Q·í§@¬O´¶³q¤å¦r¨Ó³B²z¤F¡C³oºØ³B²z¤èªkÅý±z»´©öªº¦b HTML ¤å¥ó¤¤´O¤J PHP ªºµ{¦¡½X¡CPHP ¼ÐÅÒ¥H¤ºªº±N·í§@¬O PHP µ{¦¡½X¨ÓåªR¡B¼ÐÅÒ¥H¥~ªº«hì«Ê¤£°Ê¡C </para> <para> ¥Î¨Óªí¥Ü PHP µ{¦¡½X°Ï¶ôªº¼ÐÅÒ¦@¦³¥|®M¡A·í¤¤¥u¦³ <?php. . .?> ©M <script language="php">. . .</script> ¨â®M¬O¸g±`¥i¥H¨Ï¥Îªº¡C¥t¥~¨â®M (<?. . . ?> ¤Î <script language="php">. . .</script>) ¥i¥H³q¹L³]©w &php.ini; ÀɨӶ}Ãö¡CÁöµMµu«¬ªº©M ASP ¦¡ªº¼ÐÅҨϥΰ_¨Ó¸û¬°¤è«K¡A¦ý¦bÝ®e¤W¥¦Ì«o©l²×¤ñ¤£¤Wªø«¬ªº¡C¨Ò¦p¡A¦pªG±zn¦b XML ©Î XHTML ¤¤´O¤J PHPµ{¦¡½X¡A¨º±z´N¤@©wn¨Ï¥Î <?php. . .?> «¬ªº¼ÐÅÒ¥H²Å¦X XML ªº¼Ð·Ç¤F¡C </para> <para> PHP ¤ä´©ªº¼ÐÅÒ¥]¬A¡G </para> <para> <example> <title>¶h¥X HTML ªº¤è¦¡</title> <programlisting role="php"> <![CDATA[ 1. <?php echo("if you want to serve XHTML or XML documents, do like this\n"); ?> 2. <? echo ("this is the simplest, an SGML processing instruction\n"); ?> <?= expression ?> This is a shortcut for "<? echo expression ?>" 3. <script language="php"> echo ("some editors (like FrontPage) don't like processing instructions"); </script> 4. <% echo ("You may optionally use ASP-style tags"); %> <%= $variable; # This is a shortcut for "<% echo . . ." %> ]]> </programlisting> </example> </para> <para> ²Ä¤@ºØ¤èªk (<?php. . .?>) ¬O³Q«ØÄ³¨Ï¥Îªº¡A¦]¬°¥¦¥i¥HÅý±z¦b²Å¦X XML ¼Ð·ÇªºXHTML ½X¤¤´O¤J PHP µ{¦¡½X¡C </para> <para> ²Ä¤GºØ¤èªk¥u¦³¦b±Ò°Ê¥H«á¤~¥i¥H¨Ï¥Î¡A¦Ó¶}±Òªº¤è¦¡¥]¬A¡G¨Ï¥Î <function>short_tags</function> ¨ç¼Æ (¥u¦³ PHP 3 ¦Ó¤w)¡A¦b PHP ²ÕºAÀɤ¤¶}±Ò <link linkend="ini.short-open-tag">short_open_tag</link>¡A©Î¦b½sĶ PHP ®É¦b <command>configure</command> ¥[¤J -enable-short-tag ¿ï¶µ¡C§Y¨Ï¦b php.ini-dist Àɤ¤³Q¹w³]¬°¶}±Ò¡Aµu«¬ªº¼ÐÅÒÁÙ¬O¤£³Q«ØÄ³¨Ï¥Îªº¡C </para> <para> ²Ä¥|ºØ ASP ¦¡ªº¼ÐÅÒ¥u¦³¦b²ÕºAÀɤ¤¶}±Ò¤F <link linkend="ini.asp-tags">asp_tags</link> «á¤~¯à¨Ï¥Î¡C <note> <para>ASP ¦¡¼ÐÅÒªº¤ä´©¦b 3.0.4 ª©¥»¤~¥[¤Jªº¡C</para> </note> </para> <note> <para> ¦b¶}µo¤j«¬µ{¦¡¡B½s¼g¥Î¨Ó¦A¤À°tªºµ{¦¡®w¡A©Î±N±zªºµ{¦¡³¡¸p¦b§O¤Hªº¦øªA¾¹¤W®É¡A§ÚÌ«ØÄ³±z¨Ï¥Îªø«¬ªº PHP ¼ÐÅÒ¡A¦]¬°¨Ã«D©Ò¦³ªº¦øªA¾¹³£¶}±Ò¤Fµu¼ÐÅÒªº¤ä´©¡C </para> </note> <para> µ{¦¡°Ï¶ôªºµ²§À¼Ð°O±N¥]¬AºòÀH¨ä«áªº´«¦æ¦r¤¸¡£Y¦³ªº¸Ü¡¤¡C¦¹¥~¡Aµ²§À¼Ð°O¤w¥]§t¤F¤À¸¹ (;)¡A©Ò¥H±z¤£¥²¦A¬°¥¦¥[¤W¡C </para> <para> PHP ¤¹³\±z¨Ï¥Î¦p¤Uªº¼gªk¡G <example><title>¶i¶¥¶h¥X½d¨Ò</title> <programlisting role="php"> <![CDATA[ <?php if ($expression) { ?> <strong>This is true.</strong> <?php } else { ?> <strong>This is false.</strong> <?php } ?> ]]> </programlisting> </example> ¤Wzµ{¦¡½X±N¦p±`ªº¹B§@¡A¦]¬°·í PHP ¹J¤W ?> µ²§À¼Ð°O®É¡A¥¦±N¤£¥[³B²zªº¿é¥X©Ò¦³¤å¦r¡Aª½¨ì¹J¤W¥t¤@Ó¶}©l¼ÐÅÒ¡C·í±zªºµ{¦¡»Ýn¿é¥X¤j¶qªº¤å¦r®É¡A¨Ï¥Î¤Wz¶h¥X¤èªk¿é¥X¤å¦r¨ä®Ä²v·|¤ñ¨Ï¥Î <function>echo</function> ©Î <function>print()</function> ¨ç¼Æ¨Ó±o§ó°ª¡C </para> </sect1> <sect1 id="language.basic-syntax.instruction-separation"> <title>«ü¥O¤À¹j</title> <simpara> PHP «ü¥Oªº¤À¹j»P C ©Î Perl ªº¬Û¦P¡A§Y¥H¤À¸¹ (;) ¨Óµ²§ô¤@¦æ±Ôz¡C </simpara> <para> µ²§À¼Ð°O (?>) ¤]¦P®É·N¨ýµÛ±Ôzªºµ²§ô¡AµL¶·¦A¥[¤À¸¹¡A©Ò¥H¤U¦C¨â¥y¬O¬Û¦Pªº¡G <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "This is a test"; ?> <?php echo "This is a test" ?> ]]> </programlisting> </informalexample> </para> </sect1> <sect1 id="language.basic-syntax.comments"> <title>µù¸Ñ</title> <para> PHP ¤ä´© C¡BC++ ©M Unix shell ¦¡ªºµù¸Ñ¤èªk¡C½d¨Ò¡G <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "This is a test"; // This is a one-line c++ style comment /* This is a multi line comment yet another line of comment */ echo "This is yet another test"; echo "One Final Test"; # This is shell-style style comment ?> ]]> </programlisting> </informalexample> </para> <simpara> ³æ¦æ¦¡ªºµùÄÀ¤è¦¡¥u¾A¥Î©ó¸Ó¦æ¡£¦Ü¦æ¥½¡¤¡A©Î©Ò¦b°Ï¶ôªº PHP µ{¦¡½X¤º¡Aµø¦óªÌ¥ý¥X²{¡C³oªí¥Ü // ?> «áªº HTML ½X±N·|³Q¿é¥X¡B?> ´N¸õ¥X PHP ¼Ò¦¡¡A¦Ó // «h¤£·|¼vÅT¨ì¼Ò¦¡ªºÂàÅÜ¡C </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <h1>This is an <?php # echo "simple";?> example.</h1> <p>The header above will say 'This is an example'. ]]> </programlisting> </informalexample> <simpara> ¦b¨Ï¥Î C ¦¡ªºµùÄÀ®É¡A¤d¸U§O±N¤@Ó C ¦¡µùÄÀ©ñ¦b¥t¤@Ӹ̱¡C³o¦bµùÄÀ¤j¬q¤å¦r®É¸g±`µo¥Í¡C </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php /* echo "This is a test"; /* This comment will cause a problem */ */ ?> ]]> </programlisting> </informalexample> </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 --> Index: phpdoc-tw/language/variables.xml +++ phpdoc-tw/language/variables.xml <?xml version="1.0" encoding="big5"?> <!-- $Revision: 1.1 $ --> <chapter id="language.variables"> <title>¦UÃþÅܼÆ</title> <sect1 id="language.variables.basics"> <title>°ò¥»ª¾ÃÑ</title> <simpara> ©Ò¦³ PHP ªºÅܼƳ£¬O¥H "$" ¬°¶}ºÝ¡A«á¥[ÅܼƦW©Ò²Õ¦¨ªº¡CÅܼƦWºÙ¬O¦³¤j¤p¼g¤§¤Àªº¡C </simpara> <para> PHP ªºÅܼƦWºÙ©M¨ä¥L¼ÐÅÒ¦³µÛ¬Û¦Pªº³W«h¡C¤@Ó¦³®ÄªºÅܼƬO¥Ñ^¤å¦r¥À©Î©³½u¶}©l¡A¸òµÛ¬O¥ô·Nªøµuªº¦r¥À¡B¼Æ¦r©Î©³½u¡C«ö¥¿³W¹Bºâ¦¡¡A¥¦¥i¥Hªí¹F¬°¡G'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' </para> <note> <simpara> ¦r¥À¬° a-z¡AA-Z¡A¦Ó ASCII ¦r²Å«h±q 127 ¦Ü 255¡q0x7f-0xff¡r¡C </simpara> </note> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php $var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // outputs "Bob, Joe" $4site = 'not yet'; // invalid; starts with a number $_4site = 'not yet'; // valid; starts with an underscore $täyte = 'mansikka'; // valid; 'ä' is ASCII 228. ?> ]]> </programlisting> </informalexample> </para> <para> PHP 3 ¤¤¡AÅܼÆÁ`¬O¥ÑÈ«ü¬£¡C¤]´N¬O»¡¡A·í±z±N¤@Ó¹Bºâ¦¡ªºÈ«ü¬£µ¹¤@ÓÅܼƮɡA¾ãÓì©l¹Bºâ¦¡ªºÈ±N·|½Æ»s¨ì¥ØªºÅܼơC¨Ò¦p¡A·í±N¤@ÓÅܼƪºÈ«ü¬£µ¹¥t¤@ÓÅܼƤ§«á¡A§ó§ï·í¤¤ªº¥ô¦ó¤@ÓÅܼƪºÈ¨Ã¤£·|¼vÅT¨ì¥t¤@ÓÅܼƪºÈ¡C·Qnª¾¹D§ó¦h³oÃþªº«ü¬£¡A½Ð°Ñ¾\<link linkend="language.expressions">¹Bºâ¦¡</link>³o¤@³¹¡C </para> <para> PHP 4 «h´£¨Ñ¤F¥t¤@ºØ«ü¬£ÅܼÆÈªº¤èªk¡G<link linkend="language.references">¶Ç§}«ü¬£</link>¡A§Y·sÅܼƥu¬O°Ñ·Óì¨ÓÅܼƤ¤ªºÈ¡A©Î»¡·sªºÅܼƦ¨¬°ì¨ÓÅܼƪº§O¦W¡C¦¹®É¡A§ó§ï¨âÓÅܼƤ¤¥ô¦ó¤@ÓªºÈ³£·|¦P®É§ó§ï¥t¤@ÓªºÈ¡C¥Ñ©ó¨S¦³°õ¦æ¹ê»Úªº½Æ»s¤u§@¡A«ü¬£ªº¾Þ§@¤]¦]¦¹§ó¥[§Ö±¶¡C¤£¹L¡A¥u¦³¦bºò±Kªº°j°é©Î«ü¬£¤j¶qªº<link linkend="language.types.array">°}¦C</link>©Î<link linkend="language.types.object">ª«¥ó</link>®É¤~·|¹îı³t«×ªº´£¤É¡C </para> <para> ¨Ï¥Î¶Ç§}«ü¬£¡A¥u¶·¦b³Q°Ñ·ÓªºìÅܼƫe¥[¤W¤@Ó (&) ªº²Å¸¹¡C¨Ò¦p¡A¤U¦Cµ{¦¡½X¦b¨Ï¥Î¶Ç§}«ü¬£«á¿é¥X 'My name is Bob' ¨â¦¸¡C <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 'Bob'; // Assign the value 'Bob' to $foo $bar = &$foo; // Reference $foo via $bar. $bar = "My name is $bar"; // Alter $bar... echo $bar; echo $foo; // $foo is altered too. ?> ]]> </programlisting> </informalexample> </para> <para> »Ýnª`·Nªº¬O¥u¦³¯u¥¿©R¦WªºÅܼƤ~¥i¥H¥Î¨Ó¶i¦æ¶Ç§}«ü¬£¡C <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 25; $bar = &$foo; // This is a valid assignment. $bar = &(24 * 7); // Invalid; references an unnamed expression. function test() { return 25; } $bar = &test(); // Invalid. ?> ]]> </programlisting> </informalexample> </para> </sect1> <sect1 id="language.variables.predefined"> <title>¹w³]ªºÅܼÆ</title> <simpara> PHP ¬°¥¦°õ¦æªºµ{¦¡´£¨Ñ¤F¤j¶qªº¹w³]ÅܼơCµM¦Ó¡A¥Ñ¤_¦³³\¦hÅܼƦ]¨Ì¿à¨ä©Ò°õ¦æªº¦øªA¾¹ºØÃþ¡Bª©¥»¡B¦w¸Ëµ¥±¡ªp¦Ó©w¡A¦]¦¹Ãø¥H¦³§¹¾ãªº³Q°O¸ü¤U¨Ó¡C§ó¦³¤@¨ÇÅܼƦb<link linkend="features.commandline">«ü¥O¦æ</link>ªº¼Ò¦¡¹B¦æ®É¬O¤£¯à¨Ï¥Îªº¡C¦³Ãö³o¨ÇÅܼƪº¦Cªí¡A½Ð°Ñ¦Ò<link linkend="reserved.variables">«O¯dªº¥ý«e©w¸qÅܼÆ</link>¤@¸`¡C </simpara> <warning> <simpara> PHP 4.2.0 ¥H«áªºª©¥»¡A<link linkend="ini.register-globals">register_globals</link> «ü¥Oªº¹w³]ȬO <emphasis>off</emphasis>¡C³o¬O¤@Ó«¤jªº§ïÅÜ¡C±N register_globals ªºÈ¹w³]¬° <emphasis>off</emphasis> ·|¼vÅT¨ì¹w³]ÅܼƦb¥þ°ì½d³ò¤ºªº¦³®Ä©Ê¡C¨Ò¦p¡An±o¨ì <varname>DOCUMENT_ROOT</varname> ªºÈ¡AÀ³¨Ï¥Î <varname>$_SERVER['DOCUMENT_ROOT']</varname> ¦Ó¤£¬O <varname>$DOCUMENT_ROOT</varname>¡B¨Ï¥Î <varname>$_GET['id']</varname> ¥H¨ú±o URL <literal>http://www.example.com/test.php?id=3</literal> ¤¤ id ªºÈ¡A¦Ó¤£¬O¥Î <varname>$id</varname>¡B©Î¨Ï¥Î <varname>$_ENV['HOME']</varname> ¨Ó¨ú¥N <varname>$HOME</varname>¡C </simpara> <simpara> §ó¦h»P¦¹§ó§ï¬ÛÃöªº¸ê®Æ¥i¦b <link linkend="ini.register-globals">register_globals</link> ªº³]¸m¤@¸`¡B<link linkend="security.registerglobals">¨Ï¥Î Register Globals</link> ¤¤ªº¦w¥þ³¹¡A©Î¦b <ulink url="&url.php.release4.1.0;">4.1.0</ulink> ¤Î <ulink url="&url.php.release4.2.0;">4.2.0</ulink> ªºµo¦æ³q§i¤¤¨ú±o¡C </simpara> <simpara> §ÚÌ«ØÄ³±z¨Ï¥Î PHP ´£¨Ñªº«O¯d¹w³]ÅܼơA¦p <link linkend="language.variables.superglobals">superglobal ³¯¦C</link>¡C </simpara> </warning> <simpara> ¦Û 4.1.0 ª©¥»°_¡APHP ÃB¥~´£¨Ñ¤F¤@®M¹w³]°}¦C¡A·í¤¤¥]§t¤F¨Ó¦Û¦øªA¾¹¡q¦p¾A¥Î¡r¡BÀô¹Ò¡B¤Î¨Ï¥ÎªÌ¿é¤JªºÅܼơC³o¨Ç·s³¯¦C¤ñ¸û¯S§O¡A¦]¦¹¥¦Ì·|¦Û°Ê¦a³]¬°¥þ°ì¡A§Y¥i¥H¦b©Ò¦³½d³ò¤º¨Ï¥Î¡C¥¿¦]¦p¦¹¡A¥¦Ì¤]³QºÙ¬° 'autoglobals' ©Î 'superglobals'¡C¡qPHP ©|¥¼¦³¨Ï¥ÎªÌ¦Û¦æ©w¸q superglobals ªº¥\¯à¡C¡r§Ú̱N¦b¤U±¦C¥X superglobals¡A¦ýnª¾¹D¥¦Ìªº¤º®e©M PHP ¹w³]Åܼƪº²`¤J°Q½×¡A½Ð°Ñ¦Ò<link linkend="reserved.variables">«O¯dªº¥ý«e©w¸qÅܼÆ</link>¤@¸`¡C¦¹¥~¡A±z¤]·|¯d·N¦³ªº¹w³]ÅÜ¼Æ (<varname>$HTTP_*_VARS</varname>) ¤´µM¦s¦b¡C &avail.register-long-arrays; </simpara> <note> <title>¥iÅÜÅܼÆ</title> <para> Superglobals ¤£¯à·í§@<link linkend="language.variables.variable">¥iÅÜÅܼÆ</link>¨Ó¨Ï¥Î¡C </para> </note> <para> ¦pªG¬Y¨Ç <link linkend="ini.variables-order">variables_order</link> ¤¤ªºÅܼƨS¦³³Q³]©w¡A¥¦Ì¬Û¹ïªº PHP ¹w³]³¯¦C¤]±N·|¬OªÅªº¡C </para> <variablelist id="language.variables.superglobals"> <title>PHP ªº Superglobals</title> <varlistentry> <term><link linkend="reserved.variables.globals">$GLOBALS</link></term> <listitem> <simpara> ¥]§t¤@Ó«ü¦Vµ{¦¡¥þ°ì½d³ò¤º¥i¥ÎÅܼƪº¯Á¤Þ¡C¦¹³¯¦Cªº¯Á¤ÞÁ䬰¥þ°ìÅܼƪº¦WºÙ¡C<varname>$GLOBALS</varname> ¦Û PHP 3 ¶}©l´N¤w¦s¦b¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.server">$_SERVER</link></term> <listitem> <simpara> ¥Ñºô¶¦øªA¾¹³]©wªºÅܼƩΥثeªºµ{¦¡©Ò°õ¦æªºÀô¹Ò²£¥ÍªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_SERVER_VARS</varname> ³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.get">$_GET</link></term> <listitem> <simpara> ³q¹L HTTP GET ´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_GET_VARS</varname> ³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.post">$_POST</link></term> <listitem> <simpara> ³q¹L HTTP POST ´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_POST_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.cookies">$_COOKIE</link></term> <listitem> <simpara> ³q¹L HTTP cookies ´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_COOKIE_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.files">$_FILES</link></term> <listitem> <simpara> ³q¹L HTTP POST ÀɮפW¶Ç´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_POST_FILES</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C¸Ô±¡½Ð°Ñ¾\ <link linkend="features.file-upload.post-method">POST ¤W¶Ç¤è¦¡</link>¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.environment">$_ENV</link></term> <listitem> <simpara> °õ¦æÀô¹Ò´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_ENV_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.request">$_REQUEST</link></term> <listitem> <simpara> ³q¹L¥ô¦ó¨Ï¥ÎªÌ¿é¤J³~®|¦Ó´£¨Ñµ¹µ{¦¡ªºÅܼơA¤]¥¿¦]¦p¦¹¤£È±o«H¥ô¡C¦¹³¯¦C¤¤Åܼƪº¦s¦b»P§_¤Î¦¸§Ç¬O¨M©w©ó <link linkend="ini.variables-order">variables_order</link> ªº³]©w¡CPHP 4.1.0 ¤§«eªºª©¥»¨Ã¨S¦³Ãþ¦ü¦¹³¯¦CªºÅܼơC½Ð¦P®É°Ñ¾\ <function>import_request_variables</function>¡C </simpara> <note> <simpara> ¦b<link linkend="features.commandline">«ü¥O¦æ</link>¼Ò¦¡¤U°õ¦æ®É¡A¥¦¨Ã<emphasis>¤£</emphasis>¥]§t <varname>argv</varname> ©M <varname>argc</varname> ¶µ¥Ø¡C¦¹¨â¶µ¥Ø¥u¦b <varname>$_SERVER</varname> ³¯¦C¤¤¥X²{¡C </simpara> </note> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.session">$_SESSION</link></term> <listitem> <simpara> ¥Ø«e©Mµ{¦¡ª`¥U¤Fªº session ÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_SESSION_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C¸Ô±¡½Ð°Ñ¾\ <link linkend="ref.session">Session ³B²z¨ç¼Æ</link>¤@¸`¡C </simpara> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="language.variables.scope"> <title>Åܼƽd³ò</title> <simpara> Åܼƪº½d³ò¥u¬O¦b¨ä©Ò©w¸qªºªÅ¶¡¤º¦s¦b¡C¦b¤j³¡¥÷ªº±¡ªp¤U¡APHP ªºÅܼƥu¦³¤@Ó³æ¤@ªº½d³ò¡C³o³æ¤@ªº½d³ò¤]¥]§t¤F¥H include ©M require ¤è¦¡¤Þ¤JªºÀɮסC¨Ò¦p¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; include "b.inc"; ?> ]]> </programlisting> </informalexample> <simpara> ¨Ò¤l¤¤¡AÅÜ¼Æ <varname>$a</varname> ¤]¦s¦b¤_³Q¥]§t¤Jªºµ{¦¡ <filename>b.inc</filename> ¤¤¡C¦ý¬O¦b¨Ï¥ÎªÌ¦Ûqªº¨ç¼Æ¤¤¡A¤@Ӱϰì©Êªº¨ç¼Æ½d³ò±N³Q¤Þ¥Î¡C¥ô¦ó¦b¨ç¼Æ¤º¨Ï¥ÎªºÅܼƦb¹w³]ªº±¡ªp¤U¥u§½©ó¸Ó¨ç¼Æªº½d³ò¤º¡C¨Ò¦p¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable */ } Test(); ?> ]]> </programlisting> </informalexample> <simpara> ³oÓµ{¦¡¤£·|¿é¥X¥ô¦óªF¦è¡A¦]¬° echo z¥y¨Ï¥Î¤F¥»°Ï°ìª©¥»ªº <varname>$a</varname> ÅܼơA¦Ó¸Ó¥»°Ï°ìÅܼƨå¼´¿³Q¤À°t¤@ÓÈ¡C§A·|µo²{³o©M C »y¨¥ªº°µªk¤£¦P¡A¦]¬° C ªº¥þ°ìÅܼƬO¦Û°Êªº´£¨Ñµ¹¦U¨ç¼Æ¡A°£«D¦b¥»°ì©w¸q¤¤«ü©úºM¾P¡C¦¹°µªk¥i¯à·|¤ÞP¤@¨Ç°ÝÃD¡A¦p¨Ï¥ÎªÌ¤£·V¦a§ó§ï¤F¥þ°ìÅܼƪºÈ¡C¦b PHP ¤¤¡A¥þ°ìÅܼƦb¥»°ì¨Ï¥Î«e¥²¶·¥ý«Å§G¬°¥þ°ì¡C¨Ò¤l¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?> ]]> </programlisting> </informalexample> <simpara> ¤Wz¨Ò¤l±N·|¿é¥X "3"¡C¦b¨ç¼Æ¤º«Å§G <varname>$a</varname> ¤Î <varname>$b</varname> ¬°¥þ°ì«á¡A©Ò¦³¯A¤Î¸Ó¨âÓÅܼƪº¨Ï¥Î±N¦Û°Ê«ü¦V¥þ°ìªºª©¥»¡CPHP ¨S¦³©w¤@Ó¨ç¼Æ¥i¥H¨Ï¥Îªº¥þ°ìÅܼƪº¼Æ¶q¡C </simpara> <simpara> ²Ä¤GºØ¦s¨ú¥þ°ì½d³ò¤¤ªºÅܼƤèªk¬O¨Ï¥Î¤@ PHP ¯S§O©w¸qªº³¯¦C¡G<varname>$GLOBALS</varname>¡C«e±ªº¨Ò¤l¥i¥H«¼g¬°¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; $b = 2; function Sum() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum(); echo $b; ?> ]]> </programlisting> </informalexample> <simpara> <varname>$GLOBALS</varname> ¬O¤@ÓÃöÁp³¯¦C (associative array)¡A¥þ°ìÅܼƪº¦W§Y¬°¯Á¤ÞÁä¡A¦Ó¸ÓÅܼƪº¤º®e§Y¬°³¯¦CªºÈ¡C¦³§_¯d·N¨ì <varname>$GLOBALS</varname> ¦b¥ô¦ó¤@Ó½d³ò³£¥X²{¡H¨º¬O¦]¬° $GLOBALS ¬O¤@Ó<link linkend="language.variables.superglobals">superglobal</link>¡C³o¬O¤@ӥܽd superglobals ±j¤j¥\¯àªº¨Ò¤l¡G </simpara> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php function test_global() { // Most predefined variables aren't "super" and require // 'global' to be available to the functions local scope. global $HTTP_POST_VARS; print $HTTP_POST_VARS['name']; // Superglobals are available in any scope and do // not require 'global'. Superglobals are available // as of PHP 4.1.0 print $_POST['name']; } ?> ]]> </programlisting> </informalexample> </para> <simpara> Åܼƽd³òªº¥t¤@Ó«n¥\¯à¬°<emphasis>ÀRºA</emphasis>ÅܼơCÀRºAÅܼƥu¦b¥»°ì¨ç¼Æ½d³ò¤º¦s¦b¡A¦ý¬O·íµ{¦¡°õ¦æÂ÷¶}¦¹½d³ò®É¡A¥¦¨Ã¤£·|³à¥¢¥¦ªºÈ¡C¬Ý¬Ý¤U±ªº¨Ò¤l¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function Test () { $a = 0; echo $a; $a++; } ?> ]]> </programlisting> </informalexample> <simpara> ¦¹¨ç¼Æ¨S¦³¤°»ò¥Î³B¡A¦]¨C¤@¦¸°õ¦æ¥¦®É¡A¥¦±N <varname>$a</varname> ³]¬° <literal>0</literal> µM«á¦C¦L¥X "0"¡C<varname>$a</varname>++ ¼W¥[¤F <varname>$a</varname> ªºÈ¡A¦ý¨Ã¨S¦³¹ê»Ú¥Î³~¦]¬°¤@¥¹Â÷¶}¤F¸Ó¨ç¼Æ¡AÅÜ¼Æ <varname>$a</varname> ¤]ÀH¤§®ø¥¢¡Cn³]p¤@Ó¦³¥Îªº¡B¤£·|¥á¥¢·í«ep¼Æªºp¼Æ¨ç¼Æ¡A§ÚÌ¥i¥H±N <varname>$a</varname>«Å§G¬°ÀRºA¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function Test() { static $a = 0; echo $a; $a++; } ?> ]]> </programlisting> </informalexample> <simpara> ²{¦b¡A¨C·í¨ç¼Æ Test() ³Q©I¥s®É¡A¥¦·|¦C¦L¥X <varname>$a</varname> ªºÈ¡AµM«á¥[¤W¤@¡C </simpara> <simpara> ÀRºAÅܼƤ]´£¨Ñ¤@ºØ³B²z»¼°j¨ç¼Æªº¤èªk¡C»¼°j¨ç¼Æ¬O¤@ºØ©I¥s¦Û¤vªº¨ç¼Æ¡C½s¼g»¼°j¨ç¼Æ®É¥²¶·¯d·N¡A¦]¬°Y½s¼g¿ù»~¡A¥¦¦³¥i¯à·|µL©w¦a»¼°j¡C±z¥²¶·½T©w¨¬°÷ªº¤è¦¡¨Ó²×¤î»¼°j¡C¤U¦C²³æªº¨ç¼Æ±N»¼°j¦a¼Æ¨ì 10¡A§Q¥ÎÀRºAÅÜ¼Æ <varname>$count</varname> ¨ÓÂ_©w¤°»ò®ÉÔ°±¤î¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test (); } $count--; } ?> ]]> </programlisting> </informalexample> <simpara> ÅX°Ê <literal>PHP 4</literal> ªº Zend Engine 1 ¬O¥H°Ñ·Óªº¤è¦¡¨Ó¹ê²{ <literal>static</literal> ©M <literal>global</literal> ªº¡C¨Ò¦p¡A¤@Ó¯u¥¿ªº¥þ°ìÅܼƨϥΠ<literal>global</literal> ¤è¦¡¤Þ¶i¤@Ó¨ç¼Æ½d³ò®É¹ê»Ú¤W´N¬O«Ø¥ß¤F¤@Ó¥þ°ìÅܼƪº°Ñ·Ó¡C³o±N¾ÉP¤@¨Ç·N·Q¤£¨ìªº¦æ¬°¡A¥¿¦p¤U¦C¨Ò¤l©Òz¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function test_global_ref() { global $obj; $obj = &new stdclass; } function test_global_noref() { global $obj; $obj = new stdclass; } test_global_ref(); var_dump($obj); test_global_noref(); var_dump($obj); ?> ]]> </programlisting> </informalexample> <simpara> °õ¦æ³oÓ¨Ò¤l±N·|¾ÉP¤U¦Cªº¿é¥X¡G </simpara> <screen> NULL object(stdClass)(0) { } </screen> <simpara> <literal>static</literal> ³¯z¦¡¤]·|¾ÉP¦P¼Ëªº¿é¥X¡C°Ñ·Ó¨Ã¨S¦³³QÀRºA¦aÀx¦s¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function &get_instance_ref() { static $obj; echo "Static object: "; var_dump($obj); if (!isset($obj)) { // Assign a reference to the static variable $obj = &new stdclass; } $obj->property++; return $obj; } function &get_instance_noref() { static $obj; echo "Static object: "; var_dump($obj); if (!isset($obj)) { // Assign the object to the static variable $obj = new stdclass; } $obj->property++; return $obj; } $obj1 = get_instance_ref(); $still_obj1 = get_instance_ref(); echo "\n"; $obj2 = get_instance_noref(); $still_obj2 = get_instance_noref(); ?> ]]> </programlisting> </informalexample> <simpara> °õ¦æ¦¹¨Ò¤l±N¾ÉP¤U¦Cªº¿é¥X¡G </simpara> <screen> Static object: NULL Static object: NULL Static object: NULL Static object: object(stdClass)(1) { ["property"]=> int(1) } </screen> <simpara> ¤Wz¨Ò¤l¥Ü½d¤F¦b«ü¬£¤@Ó°Ñ·Óµ¹¤©¤@ÓÀRºAÅܼƫá¡A·í±z²Ä¤G¦¸©I¥s <literal>&get_instance_ref()</literal> ¨ç¼Æ®É¡A¥¦¬O<emphasis>¤£·|</emphasis>°O¦í¤§«eªºÈªº¡C </simpara> </sect1> <sect1 id="language.variables.variable"> <title>¥iÅÜÅܼÆ</title> <simpara> ¦³®ÉÔ¡A¥i¥H¨Ï¥Î¥iÅÜÅܼƷ|¥O¨ì¤u§@§ó¥[¤è«K¡C¤]´N¬O´N¡A¤@ÓÅܼƪº¦W¥i¥H³Q°ÊºAªº³]©w©M¨Ï¥Î¡C¤@Ó´¶³qªºÅܼƬO¥H¤U¦Cªº¤èªk³]©w¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = "hello"; ?> ]]> </programlisting> </informalexample> <simpara> ¤@Ó¥iÅÜÅܼƬO¥H¥t¤@ÓÅܼƪºÈ§@¬°¥¦ªºÅܼƦW¡C¦b¤Wz¨Ò¤l¤¤¡A¥un¥[¨âÓ $ ¦b <emphasis>hello</emphasis> ªº«e±´N¥i§â¥¦·í§@¬O¤@ÓÅܼƪº¦W¨Ó¨Ï¥Î¤F¡C§Y¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $$a = "world"; ?> ]]> </programlisting> </informalexample> <simpara> ³o®É¡A¦³¨âÓÅܼƳQ©w¸qµM«áÀx¦s¦b PHP ªº²Å¸¹ªí¤¤¡G§t¦³ "hello" ªº <varname>$a</varname> ¤Î§t¦³ "world" ªº <varname>$hello</varname>¡C©Ò¥H¡A¦¹±Ôz¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "$a ${$a}"; ?> ]]> </programlisting> </informalexample> <simpara> »P¤U¦C³o¥y¦³µÛ¦P¼Ëªº¿é¥X¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "$a $hello"; ?> ]]> </programlisting> </informalexample> <simpara> §Y¡A¥¦Ì³£¿é¥X¡G<computeroutput>hello world</computeroutput>¡C </simpara> <simpara> ¬°¤Fn¦b³¯¦C¤¤¨Ï¥Î¥iÅÜÅܼơA±z¥²¶·º¥ý¸Ñ¨M¤@Ó¼Ò½kªº°ÝÃD¡C¤ñ¤è»¡¡A¦pªG±z¨Ï¥Î <varname>$$a[1]</varname>¡A¨ºåªR¾¹¥²¶·ª¾¹D±z¬O·Q·í <varname>$a[1]</varname> ¬OÅܼƨӨϥΡAÁÙ¬O·í <varname>$$a</varname> ¬OÅܼơAµM«á«ü¦V¨ºÓÅܼƪº²Ä [1] Ó¯Á¤Þ¡C¸Ñ¨M¤Wz¼Ò½k°ÝÃDªº»yªk¬O¡G²Ä¤@Ó±¡ªp¨Ï¥Î <varname>${$a[1]}</varname>¡B²Ä¤GÓ±¡ªp¨Ï¥Î <varname>${$a}[1]</varname>¡C </simpara> <warning> <simpara> ¥²¶·¯d·Nªº¬O¡A¥iÅÜÅܼƬO¤£¯à¨Ï¥Î©ó PHP ªº <link linkend="language.variables.superglobals">Superglobal ³¯¦C</link>¡C³oªí¥Ü±z¤£¯à¨Ï¥Î <varname>${$_GET}</varname> ³o¼Ëªº±Ôz¡C¦pªG±z¯uªº·Q¨Ï¥Î superglobals ©Mªº <varname>HTTP_*_VARS</varname>¡A±z¥i¥H¹Á¸Õ¥H<link linkend="language.references">°Ñ·Ó</link>ªº¤è¦¡¨Ï¥Î¡C </simpara> </warning> </sect1> <sect1 id="language.variables.external"> <title>¨Ó¦Û PHP ¥H¥~ªºÅܼÆ</title> <sect2 id="language.variables.external.form"> <title>HTML ªí³æ (GET ©MPOST)</title> <simpara> ·í¤@¥÷ªí³æ¶Ç°eµ¹ PHP µ{¦¡®É¡Aªí³æ¤ºªº¸ê°T±N¦Û°Ê´£¨Ñµ¹¸Óµ{¦¡¡C§Ú̦³«Ü¦h¤èªk¦s¨ú³o¨Ç¸ê°T¡A½d¨Ò¡G </simpara> <para> <example> <title>¤@Ó²³æªº HTML ªí³æ</title> <programlisting role="html"> <![CDATA[ <form action="foo.php" method="post"> Name: <input type="text" name="username"><br> Email: <input type="text" name="email"><br> <input type="submit" name="submit" value="Submit me!"> </form> ]]> </programlisting> </example> </para> <para> ®Ú¾Ú±zªº¦w¸Ë¤è¦¡©MÓ¤H°¾¦n¡APHP ´£¨Ñ¦hºØ¤è¦¡¦s¨ú HTML ªí³æ¤¤ªº¸ê®Æ¡C¤@¨Ç¨Ò¤l¦p¡G </para> <para> <example> <title>¦s¨ú¤@Ó¥H POST ¤è¦¡¶Ç°eªºÂ²³æ HTML ªí³æ</title> <programlisting role="html"> <![CDATA[ <?php // Available since PHP 4.1.0 print $_POST['username']; print $_REQUEST['username']; import_request_variables('p', 'p_'); print $p_username; // Available since PHP 3. As of PHP 5.0.0, these long predefined // variables can be disabled with the register_long_arrays directive. print $HTTP_POST_VARS['username']; // Available if the PHP directive register_globals = on. As of // PHP 4.2.0 the default value of register_globals = off. // Using/relying on this method is not preferred. print $username; ?> ]]> </programlisting> </example> </para> <para> ¨Ï¥Î GET ¤è¦¡¶Ç°eªºªí³æ¥ÎªkÃþ¦ü¡A¥u¤£¹L¨Ï¥Î¦X¾Aªº¥ý«e©w¸qªº¨ç¼Æ¡CGET ¤]¥i¨Ï¥Î¦b¬d¸ß¦r¦ê (QUERY_STRING) ¡qURL ¤¤°Ý¸¹ '?' «á±ªº¸ê°T¡r¡C¨Ò¦p¡A<literal>http://www.example.com/test.php?id=3</literal> §t¦³¥H <varname>$_GET['id']</varname> ¤è¦¡¦s¨úªº GET ¸ê®Æ¡C½Ð°Ñ¦Ò <link linkend="reserved.variables.request">$_REQUEST</link> ©M <function>import_request_variables()</function>¡C </para> <note> <para> <link linkend="language.variables.superglobals">Superglobal ³¯¦C</link>¦p <varname>$_POST</varname> ¤Î <varname>$_GET</varname> ¦b PHP ª©¥» 4.1.0 ¥H¤W¤~¶}©l´£¨Ñ¡C </para> </note> <para> ¤W±´£¨ì¡A¦b PHP 4.2.0 ¤§«eªºª©¥»¤¤¡A<link linkend="ini.register-globals">register_globals</link> ªº¹w³]ȬO <emphasis>on</emphasis>¡C¦Ó¦b PHP 3 ¤¤¡A¥¦¥Ã»·¬O on ªº¡C§ÚÌ«ØÄ³©Ò¦³¨Ï¥ÎªÌ¤£n¨Ì¿à¦¹«ü¥O¡A¨Ã¦b½s¼g®É±N¥¦·í§@¬O <emphasis>off</emphasis> ¨Ó³]p±zªºµ{¦¡¡C </para> <note> <para> <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> ²ÕºA«ü¥O·|¼vÅT¨ì Get¡APost ©M Cookie ªºÈ¡C¦pªG¶}±Ò¦¹«ü¥O¡A(It's "PHP!") ªºÈ±NÅܦ¨ (It\'s \"PHP!\")¡C¦¹¸õ¥X¤u§@¦b±N¦r¦ê´¡¤J¸ê®Æ®w«e¬O¥²¶·n°µªº¡C½Ð°Ñ¦Ò <function>addslashes</function>¡A<function>stripslashes</function> ©M <link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>¡C </para> </note> <simpara> PHP ¤]À´±o³B²z³¯¦C¦¡ªºªí³æÅܼơq½Ð°ÑÆ[¬ÛÃöªº <link linkend="faq.html">FAQ</link>¡r¡C±z¥i¥H±N¬ÛÃöªºÅܼÆÂkÃþ¡A©Î¥Î¦¹¥\¯à¨Ó¨ú¦^¦h¤¸¿ï¾Ü¿é¤Jªí³æªºÈ¡C¦b¤U¦C½d¨Ò¤¤¡A§Ú̱Nªí³æ±i¶K¨ì¥¦¦Û¤v¡A¨Ã¦b¶Ç°e«á§â¸ê®ÆÅã¥Ü¥X¨Ó¡G </simpara> <para> <example> <title>§ó½ÆÂøªºªí³æÅܼÆ</title> <programlisting role="php"> <![CDATA[ <?php if ($HTTP_POST_VARS['action'] == 'submitted') { print '<pre>'; print_r($HTTP_POST_VARS); print '<a href="'. $HTTP_SERVER_VARS['PHP_SELF'] .'">Please try again</a>'; print '</pre>'; } else { ?> <form action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post"> Name: <input type="text" name="personal[name]"><br> Email: <input type="text" name="personal[email]"><br> Beer: <br> <select multiple name="beer[]"> <option value="warthog">Warthog</option> <option value="guinness">Guinness</option> <option value="stuttgarter">Stuttgarter Schwabenbräu</option> </select><br> <input type="hidden" name="action" value="submitted"> <input type="submit" name="submit" value="submit me!"> </form> <?php } ?> ]]> </programlisting> </example> </para> <para> PHP 3 ªº³¯¦Cªí³æÅܼƥu¥i¥H¨Ï¥Î¤@ºû³¯¦C¡A¦Ó PHP 4 «h¨S¦³¦¹¨î¡C </para> <sect3 id="language.variables.external.form.submit"> <title>IMAGE SUBMIT ÅܼƦWºÙ</title> <simpara> ¦b¶Ç°eªí³æ®É¡A§ÚÌ¥i¥H¨Ï¥Î¤U¦C¼ÐÅÒ±N¼Ð·Çªº´£¥æÁä¥H¹Ï¹³¨Ó¨ú¥N¡G </simpara> <informalexample> <programlisting role="html"> <![CDATA[ <input type="image" src="image.gif" name="sub"> ]]> </programlisting> </informalexample> <simpara> ·í¨Ï¥ÎªÌ¦b¹Ï¹³ªº¥ô¦ó¤@³B«ö¤@¤U¡A¦ñÀHªºªí³æ´N·|¶Ç°e¨ì¦øªA¾¹¡AÀH¨ä¦Ó¨ÓÁÙªþ¥[¤F¨âÓÅܼơAsub_x ©M sub_y¡C³o¥]§t¤F¨Ï¥ÎªÌ«ö¦b¹Ï¹³ªº®y¼Ð¡C¦³¸gÅ窺¨Ï¥ÎªÌ©Î³\ª¾¹D¥ÑÂsÄý¾¹¶Ç°e¨ÓªºÅܼƦWºÙÀ³¸Ó¥]§t¥y¸¹¡A¦Ó¤£¬O©³½u¡A¦ý PHP ¦Û°Ê¦a±N¥y¸¹Âà´«¦¨¬°©³½u¡C </simpara> </sect3> </sect2> <sect2 id="language.variables.external.cookies"> <title>HTTP Cookies</title> <simpara> PHP µ´¹ï¤ä´© <ulink url="&spec.cookies;">Netscape³W®æ</ulink>ªº HTTP cookies¡CCookies ¬O¥Î¨Ó±N¸ê®ÆÀx¦s¦b¥Î¤áºÝªºÂsÄý¾¹¤¤¡A¥H«K¤é«á°lÂÜ©ÎÃѧOªð¦^ªº¨Ï¥ÎªÌ¡C±z¥i¥H¥Î <function>setcookie()</function> ¨ç¼Æ¨Ó³]©w cookies¡CCookies ¬O HTTP header ªº¤@³¡¥÷¡A¦]¦¹ SetCookie ¨ç¼Æ¤@©wn¦b¥ô¦ó¸ê®Æ¶Ç°e¥hÂsÄý¾¹«e©I¥s¡C³o©M <function>header()</function> ¨ç¼Æ¦³µÛ¬Û¦Pªº©w¡CCookie ¸ê®Æ¥i¥H¦b <varname>$_COOKIE</varname>¡A<varname>$HTTP_COOKIE_VARS</varname> ¤Î <varname>$_REQUEST</varname> ³¯¦C¤¤¨Ñ¨Ï¥Î¡C¸Ô±¡©M½d¨Ò½Ð°Ñ¦Ò¤â¥Uªº <function>setcookie()</function> ³¡¥÷¡C </simpara> <simpara> Y±zn±N¦hÓÈ«ü¬£µ¹¤@Ó cookie ÅܼơA¨º±z´Nn¨Ï¥Î³¯¦C¨Ó«ü¬£¤F¡C½d¨Ò¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php setcookie("MyCookie[foo]", "Testing 1", time()+3600); setcookie("MyCookie[bar]", "Testing 2", time()+3600); ?> ]]> </programlisting> </informalexample> <simpara> ³o±N·|«Ø¥ß¨âÓÓ§Oªº cookies¡A¾¨ºÞ²{¦b MyCookie¦b±zªºµ{¦¡¤¤¬O¤@ӳ椸³¯¦C¡C¦pªG±zn¥H¤@Ó cookie «Ø¥ß¦hÓÈ¡A¨º±z¥i¥ý¹ï¨º¨ÇȨϥΠ<function>serialize()</function> ©Î <function>explode()</function> ¨ç¼Æ¡C </simpara> <simpara> ¦³¤@ÂI¥²¶·¯d·Nªº¬O¡A¤@Ó cookie ±N·|´À¥NÂsÄý¾¹¤¤¥t¤@Ó¦P¦Wªº cookie¡A°£«D¸Ó cookie ªº¸ô®|©Îºô°ì¦WºÙ¤£¦P¡C©Ò¥H¡A¦b³]pÁʪ«¨®µ{¦¡®É¡A±z³Ì¦n«O«ù¤@Óp¼Æ¾¹¡A¨Ã±N¦¹¼Æ¾Ú¶Ç»¼¤U¥h¡A§Y¡G </simpara> <example> <title>¤@Ó <function>setcookie()</function> ªº½d¨Ò</title> <programlisting role="php"> <![CDATA[ <?php $count++; setcookie("count", $count, time()+3600); setcookie("Cart[$count]", $item, time()+3600); ?> ]]> </programlisting> </example> </sect2> <sect2 id="language.variables.external.dot-in-names"> <title>¦bÅܼƦW¦r¤¤ªº¥y¸¹ (dots)</title> <para> ¤@¯ë¤W¡APHP ¨Ã¤£·|§ó§ï¶Ç¤Jµ{¦¡ªºÅܼƦWºÙ¡CµM¦Ó¡A±z¥²¶·¯d·N¥y¸¹ (.) ¨Ã¤£¬O¤@Ó¦³®Äªº PHP ÅܼƦWºÙ¦r¤¸¡A¥¿¦p¡G <programlisting role="php"> <![CDATA[ <?php $varname.ext; /* invalid variable name */ ?> ]]> </programlisting> ³o®É¡AåªR¾¹¨£¨ìªº¥u¬O¤@Ó¥s°µ <varname>$varname</varname> ªºÅܼơA¸òÀHµÛ¦r¦ê³sµ²¹Bºâ¤l (.)¡A¦A¨Ó¬O¤@ÓµL¤Þ¸¹ªº¦r¦ê¡Gext¡CÅãµM¦a¡A³o¨Ã¤£·|±a¨Ó±z·Qnªºµ²ªG¡C </para> <para> ¥¿¦]¦p¦¹¡APHP ·|¦Û°Êªº±N¶Ç¤JªºÅܼƦWºÙ¤¤ªº¥y¸¹ (.) §ï¬°©³½u (_)¡C </para> </sect2> <sect2 id="language.variables.determining-type-of"> <title>§P©wÅܼƪºÃþ«¬</title> <para> ¥Ñ©ó PHP ·|¦Û¦æ§PÂ_ÅܼƪºÃþ«¬¡A¨Ã«ö»ÝnÂàÅÜ¥¦ÌªºÃþ«¬¡A¦]¦¹¦³®É¤]Ãø¥H©úÅã¦a§P©w¤@ÓÅܼƦb¬YӮɨ誺Ãþ«¬¡C¦³Å²©ó¦¹¡APHP ´£¨Ñ¤F´XÓ§P©wÅܼÆÃþ«¬ªº¨ç¼Æ¡G<function>gettype()</function>¡B<function>is_array()</function>¡B<function>is_float()</function>¡B<function>is_int()</function>¡B<function>is_object()</function> ¤Î <function>is_string()</function>¡C½Ð°Ñ¾\<link linkend="language.types">Ãþ«¬</link>¤@³¹¡C </para> </sect2> </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 -->
Index: phpdoc-tw/language/basic-syntax.xml +++ phpdoc-tw/language/basic-syntax.xml <?xml version="1.0" encoding="big5"?> <!-- $Revision: 1.1 $ --> <chapter id="language.basic-syntax"> <title>°ò¥»»yªk</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 phpdoc@lists.php.net 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>±q HTML ¤¤¶h¥X</title> <para> ·í PHP åªR¤@ÓÀɮ׮ɡA¥¦¬O¤£·|¹ï¤@¯ë¦r¤¸§@¥ô¦ó³B²z¡A°£«D¥¦¹J¤W¤F¨ä¤¤¤@Ó¯S®í¼ÐÅÒ¡A¼Ð©ú PHP µ{¦¡ªº¶}©l¡C³o®É¡APHP ¤~¶}©l¥H PHP µ{¦¡½X¨Ó¸Ñ͏Ӭq¤å¦r¡A¦Ü¨ì¥¦¹J¤W PHP µ{¦¡½Xµ²§ôªº¼ÐÅÒ¡C¦¹µ²§À¼Ð°O¥H«áªº¤å¦r¤S·|³Q·í§@¬O´¶³q¤å¦r¨Ó³B²z¤F¡C³oºØ³B²z¤èªkÅý±z»´©öªº¦b HTML ¤å¥ó¤¤´O¤J PHP ªºµ{¦¡½X¡CPHP ¼ÐÅÒ¥H¤ºªº±N·í§@¬O PHP µ{¦¡½X¨ÓåªR¡B¼ÐÅÒ¥H¥~ªº«hì«Ê¤£°Ê¡C </para> <para> ¥Î¨Óªí¥Ü PHP µ{¦¡½X°Ï¶ôªº¼ÐÅÒ¦@¦³¥|®M¡A·í¤¤¥u¦³ <?php. . .?> ©M <script language="php">. . .</script> ¨â®M¬O¸g±`¥i¥H¨Ï¥Îªº¡C¥t¥~¨â®M (<?. . . ?> ¤Î <script language="php">. . .</script>) ¥i¥H³q¹L³]©w &php.ini; ÀɨӶ}Ãö¡CÁöµMµu«¬ªº©M ASP ¦¡ªº¼ÐÅҨϥΰ_¨Ó¸û¬°¤è«K¡A¦ý¦bÝ®e¤W¥¦Ì«o©l²×¤ñ¤£¤Wªø«¬ªº¡C¨Ò¦p¡A¦pªG±zn¦b XML ©Î XHTML ¤¤´O¤J PHPµ{¦¡½X¡A¨º±z´N¤@©wn¨Ï¥Î <?php. . .?> «¬ªº¼ÐÅÒ¥H²Å¦X XML ªº¼Ð·Ç¤F¡C </para> <para> PHP ¤ä´©ªº¼ÐÅÒ¥]¬A¡G </para> <para> <example> <title>¶h¥X HTML ªº¤è¦¡</title> <programlisting role="php"> <![CDATA[ 1. <?php echo("if you want to serve XHTML or XML documents, do like this\n"); ?> 2. <? echo ("this is the simplest, an SGML processing instruction\n"); ?> <?= expression ?> This is a shortcut for "<? echo expression ?>" 3. <script language="php"> echo ("some editors (like FrontPage) don't like processing instructions"); </script> 4. <% echo ("You may optionally use ASP-style tags"); %> <%= $variable; # This is a shortcut for "<% echo . . ." %> ]]> </programlisting> </example> </para> <para> ²Ä¤@ºØ¤èªk (<?php. . .?>) ¬O³Q«ØÄ³¨Ï¥Îªº¡A¦]¬°¥¦¥i¥HÅý±z¦b²Å¦X XML ¼Ð·ÇªºXHTML ½X¤¤´O¤J PHP µ{¦¡½X¡C </para> <para> ²Ä¤GºØ¤èªk¥u¦³¦b±Ò°Ê¥H«á¤~¥i¥H¨Ï¥Î¡A¦Ó¶}±Òªº¤è¦¡¥]¬A¡G¨Ï¥Î <function>short_tags</function> ¨ç¼Æ (¥u¦³ PHP 3 ¦Ó¤w)¡A¦b PHP ²ÕºAÀɤ¤¶}±Ò <link linkend="ini.short-open-tag">short_open_tag</link>¡A©Î¦b½sĶ PHP ®É¦b <command>configure</command> ¥[¤J -enable-short-tag ¿ï¶µ¡C§Y¨Ï¦b php.ini-dist Àɤ¤³Q¹w³]¬°¶}±Ò¡Aµu«¬ªº¼ÐÅÒÁÙ¬O¤£³Q«ØÄ³¨Ï¥Îªº¡C </para> <para> ²Ä¥|ºØ ASP ¦¡ªº¼ÐÅÒ¥u¦³¦b²ÕºAÀɤ¤¶}±Ò¤F <link linkend="ini.asp-tags">asp_tags</link> «á¤~¯à¨Ï¥Î¡C <note> <para>ASP ¦¡¼ÐÅÒªº¤ä´©¦b 3.0.4 ª©¥»¤~¥[¤Jªº¡C</para> </note> </para> <note> <para> ¦b¶}µo¤j«¬µ{¦¡¡B½s¼g¥Î¨Ó¦A¤À°tªºµ{¦¡®w¡A©Î±N±zªºµ{¦¡³¡¸p¦b§O¤Hªº¦øªA¾¹¤W®É¡A§ÚÌ«ØÄ³±z¨Ï¥Îªø«¬ªº PHP ¼ÐÅÒ¡A¦]¬°¨Ã«D©Ò¦³ªº¦øªA¾¹³£¶}±Ò¤Fµu¼ÐÅÒªº¤ä´©¡C </para> </note> <para> µ{¦¡°Ï¶ôªºµ²§À¼Ð°O±N¥]¬AºòÀH¨ä«áªº´«¦æ¦r¤¸¡£Y¦³ªº¸Ü¡¤¡C¦¹¥~¡Aµ²§À¼Ð°O¤w¥]§t¤F¤À¸¹ (;)¡A©Ò¥H±z¤£¥²¦A¬°¥¦¥[¤W¡C </para> <para> PHP ¤¹³\±z¨Ï¥Î¦p¤Uªº¼gªk¡G <example><title>¶i¶¥¶h¥X½d¨Ò</title> <programlisting role="php"> <![CDATA[ <?php if ($expression) { ?> <strong>This is true.</strong> <?php } else { ?> <strong>This is false.</strong> <?php } ?> ]]> </programlisting> </example> ¤Wzµ{¦¡½X±N¦p±`ªº¹B§@¡A¦]¬°·í PHP ¹J¤W ?> µ²§À¼Ð°O®É¡A¥¦±N¤£¥[³B²zªº¿é¥X©Ò¦³¤å¦r¡Aª½¨ì¹J¤W¥t¤@Ó¶}©l¼ÐÅÒ¡C·í±zªºµ{¦¡»Ýn¿é¥X¤j¶qªº¤å¦r®É¡A¨Ï¥Î¤Wz¶h¥X¤èªk¿é¥X¤å¦r¨ä®Ä²v·|¤ñ¨Ï¥Î <function>echo</function> ©Î <function>print()</function> ¨ç¼Æ¨Ó±o§ó°ª¡C </para> </sect1> <sect1 id="language.basic-syntax.instruction-separation"> <title>«ü¥O¤À¹j</title> <simpara> PHP «ü¥Oªº¤À¹j»P C ©Î Perl ªº¬Û¦P¡A§Y¥H¤À¸¹ (;) ¨Óµ²§ô¤@¦æ±Ôz¡C </simpara> <para> µ²§À¼Ð°O (?>) ¤]¦P®É·N¨ýµÛ±Ôzªºµ²§ô¡AµL¶·¦A¥[¤À¸¹¡A©Ò¥H¤U¦C¨â¥y¬O¬Û¦Pªº¡G <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "This is a test"; ?> <?php echo "This is a test" ?> ]]> </programlisting> </informalexample> </para> </sect1> <sect1 id="language.basic-syntax.comments"> <title>µù¸Ñ</title> <para> PHP ¤ä´© C¡BC++ ©M Unix shell ¦¡ªºµù¸Ñ¤èªk¡C½d¨Ò¡G <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "This is a test"; // This is a one-line c++ style comment /* This is a multi line comment yet another line of comment */ echo "This is yet another test"; echo "One Final Test"; # This is shell-style style comment ?> ]]> </programlisting> </informalexample> </para> <simpara> ³æ¦æ¦¡ªºµùÄÀ¤è¦¡¥u¾A¥Î©ó¸Ó¦æ¡£¦Ü¦æ¥½¡¤¡A©Î©Ò¦b°Ï¶ôªº PHP µ{¦¡½X¤º¡Aµø¦óªÌ¥ý¥X²{¡C³oªí¥Ü // ?> «áªº HTML ½X±N·|³Q¿é¥X¡B?> ´N¸õ¥X PHP ¼Ò¦¡¡A¦Ó // «h¤£·|¼vÅT¨ì¼Ò¦¡ªºÂàÅÜ¡C </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <h1>This is an <?php # echo "simple";?> example.</h1> <p>The header above will say 'This is an example'. ]]> </programlisting> </informalexample> <simpara> ¦b¨Ï¥Î C ¦¡ªºµùÄÀ®É¡A¤d¸U§O±N¤@Ó C ¦¡µùÄÀ©ñ¦b¥t¤@Ӹ̱¡C³o¦bµùÄÀ¤j¬q¤å¦r®É¸g±`µo¥Í¡C </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php /* echo "This is a test"; /* This comment will cause a problem */ */ ?> ]]> </programlisting> </informalexample> </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 --> Index: phpdoc-tw/language/variables.xml +++ phpdoc-tw/language/variables.xml <?xml version="1.0" encoding="big5"?> <!-- $Revision: 1.1 $ --> <chapter id="language.variables"> <title>¦UÃþÅܼÆ</title> <sect1 id="language.variables.basics"> <title>°ò¥»ª¾ÃÑ</title> <simpara> ©Ò¦³ PHP ªºÅܼƳ£¬O¥H "$" ¬°¶}ºÝ¡A«á¥[ÅܼƦW©Ò²Õ¦¨ªº¡CÅܼƦWºÙ¬O¦³¤j¤p¼g¤§¤Àªº¡C </simpara> <para> PHP ªºÅܼƦWºÙ©M¨ä¥L¼ÐÅÒ¦³µÛ¬Û¦Pªº³W«h¡C¤@Ó¦³®ÄªºÅܼƬO¥Ñ^¤å¦r¥À©Î©³½u¶}©l¡A¸òµÛ¬O¥ô·Nªøµuªº¦r¥À¡B¼Æ¦r©Î©³½u¡C«ö¥¿³W¹Bºâ¦¡¡A¥¦¥i¥Hªí¹F¬°¡G'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' </para> <note> <simpara> ¦r¥À¬° a-z¡AA-Z¡A¦Ó ASCII ¦r²Å«h±q 127 ¦Ü 255¡q0x7f-0xff¡r¡C </simpara> </note> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php $var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // outputs "Bob, Joe" $4site = 'not yet'; // invalid; starts with a number $_4site = 'not yet'; // valid; starts with an underscore $täyte = 'mansikka'; // valid; 'ä' is ASCII 228. ?> ]]> </programlisting> </informalexample> </para> <para> PHP 3 ¤¤¡AÅܼÆÁ`¬O¥ÑÈ«ü¬£¡C¤]´N¬O»¡¡A·í±z±N¤@Ó¹Bºâ¦¡ªºÈ«ü¬£µ¹¤@ÓÅܼƮɡA¾ãÓì©l¹Bºâ¦¡ªºÈ±N·|½Æ»s¨ì¥ØªºÅܼơC¨Ò¦p¡A·í±N¤@ÓÅܼƪºÈ«ü¬£µ¹¥t¤@ÓÅܼƤ§«á¡A§ó§ï·í¤¤ªº¥ô¦ó¤@ÓÅܼƪºÈ¨Ã¤£·|¼vÅT¨ì¥t¤@ÓÅܼƪºÈ¡C·Qnª¾¹D§ó¦h³oÃþªº«ü¬£¡A½Ð°Ñ¾\<link linkend="language.expressions">¹Bºâ¦¡</link>³o¤@³¹¡C </para> <para> PHP 4 «h´£¨Ñ¤F¥t¤@ºØ«ü¬£ÅܼÆÈªº¤èªk¡G<link linkend="language.references">¶Ç§}«ü¬£</link>¡A§Y·sÅܼƥu¬O°Ñ·Óì¨ÓÅܼƤ¤ªºÈ¡A©Î»¡·sªºÅܼƦ¨¬°ì¨ÓÅܼƪº§O¦W¡C¦¹®É¡A§ó§ï¨âÓÅܼƤ¤¥ô¦ó¤@ÓªºÈ³£·|¦P®É§ó§ï¥t¤@ÓªºÈ¡C¥Ñ©ó¨S¦³°õ¦æ¹ê»Úªº½Æ»s¤u§@¡A«ü¬£ªº¾Þ§@¤]¦]¦¹§ó¥[§Ö±¶¡C¤£¹L¡A¥u¦³¦bºò±Kªº°j°é©Î«ü¬£¤j¶qªº<link linkend="language.types.array">°}¦C</link>©Î<link linkend="language.types.object">ª«¥ó</link>®É¤~·|¹îı³t«×ªº´£¤É¡C </para> <para> ¨Ï¥Î¶Ç§}«ü¬£¡A¥u¶·¦b³Q°Ñ·ÓªºìÅܼƫe¥[¤W¤@Ó (&) ªº²Å¸¹¡C¨Ò¦p¡A¤U¦Cµ{¦¡½X¦b¨Ï¥Î¶Ç§}«ü¬£«á¿é¥X 'My name is Bob' ¨â¦¸¡C <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 'Bob'; // Assign the value 'Bob' to $foo $bar = &$foo; // Reference $foo via $bar. $bar = "My name is $bar"; // Alter $bar... echo $bar; echo $foo; // $foo is altered too. ?> ]]> </programlisting> </informalexample> </para> <para> »Ýnª`·Nªº¬O¥u¦³¯u¥¿©R¦WªºÅܼƤ~¥i¥H¥Î¨Ó¶i¦æ¶Ç§}«ü¬£¡C <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 25; $bar = &$foo; // This is a valid assignment. $bar = &(24 * 7); // Invalid; references an unnamed expression. function test() { return 25; } $bar = &test(); // Invalid. ?> ]]> </programlisting> </informalexample> </para> </sect1> <sect1 id="language.variables.predefined"> <title>¹w³]ªºÅܼÆ</title> <simpara> PHP ¬°¥¦°õ¦æªºµ{¦¡´£¨Ñ¤F¤j¶qªº¹w³]ÅܼơCµM¦Ó¡A¥Ñ¤_¦³³\¦hÅܼƦ]¨Ì¿à¨ä©Ò°õ¦æªº¦øªA¾¹ºØÃþ¡Bª©¥»¡B¦w¸Ëµ¥±¡ªp¦Ó©w¡A¦]¦¹Ãø¥H¦³§¹¾ãªº³Q°O¸ü¤U¨Ó¡C§ó¦³¤@¨ÇÅܼƦb<link linkend="features.commandline">«ü¥O¦æ</link>ªº¼Ò¦¡¹B¦æ®É¬O¤£¯à¨Ï¥Îªº¡C¦³Ãö³o¨ÇÅܼƪº¦Cªí¡A½Ð°Ñ¦Ò<link linkend="reserved.variables">«O¯dªº¥ý«e©w¸qÅܼÆ</link>¤@¸`¡C </simpara> <warning> <simpara> PHP 4.2.0 ¥H«áªºª©¥»¡A<link linkend="ini.register-globals">register_globals</link> «ü¥Oªº¹w³]ȬO <emphasis>off</emphasis>¡C³o¬O¤@Ó«¤jªº§ïÅÜ¡C±N register_globals ªºÈ¹w³]¬° <emphasis>off</emphasis> ·|¼vÅT¨ì¹w³]ÅܼƦb¥þ°ì½d³ò¤ºªº¦³®Ä©Ê¡C¨Ò¦p¡An±o¨ì <varname>DOCUMENT_ROOT</varname> ªºÈ¡AÀ³¨Ï¥Î <varname>$_SERVER['DOCUMENT_ROOT']</varname> ¦Ó¤£¬O <varname>$DOCUMENT_ROOT</varname>¡B¨Ï¥Î <varname>$_GET['id']</varname> ¥H¨ú±o URL <literal>http://www.example.com/test.php?id=3</literal> ¤¤ id ªºÈ¡A¦Ó¤£¬O¥Î <varname>$id</varname>¡B©Î¨Ï¥Î <varname>$_ENV['HOME']</varname> ¨Ó¨ú¥N <varname>$HOME</varname>¡C </simpara> <simpara> §ó¦h»P¦¹§ó§ï¬ÛÃöªº¸ê®Æ¥i¦b <link linkend="ini.register-globals">register_globals</link> ªº³]¸m¤@¸`¡B<link linkend="security.registerglobals">¨Ï¥Î Register Globals</link> ¤¤ªº¦w¥þ³¹¡A©Î¦b <ulink url="&url.php.release4.1.0;">4.1.0</ulink> ¤Î <ulink url="&url.php.release4.2.0;">4.2.0</ulink> ªºµo¦æ³q§i¤¤¨ú±o¡C </simpara> <simpara> §ÚÌ«ØÄ³±z¨Ï¥Î PHP ´£¨Ñªº«O¯d¹w³]ÅܼơA¦p <link linkend="language.variables.superglobals">superglobal ³¯¦C</link>¡C </simpara> </warning> <simpara> ¦Û 4.1.0 ª©¥»°_¡APHP ÃB¥~´£¨Ñ¤F¤@®M¹w³]°}¦C¡A·í¤¤¥]§t¤F¨Ó¦Û¦øªA¾¹¡q¦p¾A¥Î¡r¡BÀô¹Ò¡B¤Î¨Ï¥ÎªÌ¿é¤JªºÅܼơC³o¨Ç·s³¯¦C¤ñ¸û¯S§O¡A¦]¦¹¥¦Ì·|¦Û°Ê¦a³]¬°¥þ°ì¡A§Y¥i¥H¦b©Ò¦³½d³ò¤º¨Ï¥Î¡C¥¿¦]¦p¦¹¡A¥¦Ì¤]³QºÙ¬° 'autoglobals' ©Î 'superglobals'¡C¡qPHP ©|¥¼¦³¨Ï¥ÎªÌ¦Û¦æ©w¸q superglobals ªº¥\¯à¡C¡r§Ú̱N¦b¤U±¦C¥X superglobals¡A¦ýnª¾¹D¥¦Ìªº¤º®e©M PHP ¹w³]Åܼƪº²`¤J°Q½×¡A½Ð°Ñ¦Ò<link linkend="reserved.variables">«O¯dªº¥ý«e©w¸qÅܼÆ</link>¤@¸`¡C¦¹¥~¡A±z¤]·|¯d·N¦³ªº¹w³]ÅÜ¼Æ (<varname>$HTTP_*_VARS</varname>) ¤´µM¦s¦b¡C &avail.register-long-arrays; </simpara> <note> <title>¥iÅÜÅܼÆ</title> <para> Superglobals ¤£¯à·í§@<link linkend="language.variables.variable">¥iÅÜÅܼÆ</link>¨Ó¨Ï¥Î¡C </para> </note> <para> ¦pªG¬Y¨Ç <link linkend="ini.variables-order">variables_order</link> ¤¤ªºÅܼƨS¦³³Q³]©w¡A¥¦Ì¬Û¹ïªº PHP ¹w³]³¯¦C¤]±N·|¬OªÅªº¡C </para> <variablelist id="language.variables.superglobals"> <title>PHP ªº Superglobals</title> <varlistentry> <term><link linkend="reserved.variables.globals">$GLOBALS</link></term> <listitem> <simpara> ¥]§t¤@Ó«ü¦Vµ{¦¡¥þ°ì½d³ò¤º¥i¥ÎÅܼƪº¯Á¤Þ¡C¦¹³¯¦Cªº¯Á¤ÞÁ䬰¥þ°ìÅܼƪº¦WºÙ¡C<varname>$GLOBALS</varname> ¦Û PHP 3 ¶}©l´N¤w¦s¦b¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.server">$_SERVER</link></term> <listitem> <simpara> ¥Ñºô¶¦øªA¾¹³]©wªºÅܼƩΥثeªºµ{¦¡©Ò°õ¦æªºÀô¹Ò²£¥ÍªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_SERVER_VARS</varname> ³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.get">$_GET</link></term> <listitem> <simpara> ³q¹L HTTP GET ´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_GET_VARS</varname> ³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.post">$_POST</link></term> <listitem> <simpara> ³q¹L HTTP POST ´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_POST_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.cookies">$_COOKIE</link></term> <listitem> <simpara> ³q¹L HTTP cookies ´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_COOKIE_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.files">$_FILES</link></term> <listitem> <simpara> ³q¹L HTTP POST ÀɮפW¶Ç´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_POST_FILES</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C¸Ô±¡½Ð°Ñ¾\ <link linkend="features.file-upload.post-method">POST ¤W¶Ç¤è¦¡</link>¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.environment">$_ENV</link></term> <listitem> <simpara> °õ¦æÀô¹Ò´£¨Ñµ¹µ{¦¡ªºÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_ENV_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.request">$_REQUEST</link></term> <listitem> <simpara> ³q¹L¥ô¦ó¨Ï¥ÎªÌ¿é¤J³~®|¦Ó´£¨Ñµ¹µ{¦¡ªºÅܼơA¤]¥¿¦]¦p¦¹¤£È±o«H¥ô¡C¦¹³¯¦C¤¤Åܼƪº¦s¦b»P§_¤Î¦¸§Ç¬O¨M©w©ó <link linkend="ini.variables-order">variables_order</link> ªº³]©w¡CPHP 4.1.0 ¤§«eªºª©¥»¨Ã¨S¦³Ãþ¦ü¦¹³¯¦CªºÅܼơC½Ð¦P®É°Ñ¾\ <function>import_request_variables</function>¡C </simpara> <note> <simpara> ¦b<link linkend="features.commandline">«ü¥O¦æ</link>¼Ò¦¡¤U°õ¦æ®É¡A¥¦¨Ã<emphasis>¤£</emphasis>¥]§t <varname>argv</varname> ©M <varname>argc</varname> ¶µ¥Ø¡C¦¹¨â¶µ¥Ø¥u¦b <varname>$_SERVER</varname> ³¯¦C¤¤¥X²{¡C </simpara> </note> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.session">$_SESSION</link></term> <listitem> <simpara> ¥Ø«e©Mµ{¦¡ª`¥U¤Fªº session ÅܼơC¨ä©Ê½èÃþ¦ü¦³ªº <varname>$HTTP_SESSION_VARS</varname>³¯¦C¡AÁöµM¥Ø«eÁÙ¥i¥H¨Ï¥Î¡A¦ý¤£³Q«ØÄ³¡C¸Ô±¡½Ð°Ñ¾\ <link linkend="ref.session">Session ³B²z¨ç¼Æ</link>¤@¸`¡C </simpara> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="language.variables.scope"> <title>Åܼƽd³ò</title> <simpara> Åܼƪº½d³ò¥u¬O¦b¨ä©Ò©w¸qªºªÅ¶¡¤º¦s¦b¡C¦b¤j³¡¥÷ªº±¡ªp¤U¡APHP ªºÅܼƥu¦³¤@Ó³æ¤@ªº½d³ò¡C³o³æ¤@ªº½d³ò¤]¥]§t¤F¥H include ©M require ¤è¦¡¤Þ¤JªºÀɮסC¨Ò¦p¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; include "b.inc"; ?> ]]> </programlisting> </informalexample> <simpara> ¨Ò¤l¤¤¡AÅÜ¼Æ <varname>$a</varname> ¤]¦s¦b¤_³Q¥]§t¤Jªºµ{¦¡ <filename>b.inc</filename> ¤¤¡C¦ý¬O¦b¨Ï¥ÎªÌ¦Ûqªº¨ç¼Æ¤¤¡A¤@Ӱϰì©Êªº¨ç¼Æ½d³ò±N³Q¤Þ¥Î¡C¥ô¦ó¦b¨ç¼Æ¤º¨Ï¥ÎªºÅܼƦb¹w³]ªº±¡ªp¤U¥u§½©ó¸Ó¨ç¼Æªº½d³ò¤º¡C¨Ò¦p¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable */ } Test(); ?> ]]> </programlisting> </informalexample> <simpara> ³oÓµ{¦¡¤£·|¿é¥X¥ô¦óªF¦è¡A¦]¬° echo z¥y¨Ï¥Î¤F¥»°Ï°ìª©¥»ªº <varname>$a</varname> ÅܼơA¦Ó¸Ó¥»°Ï°ìÅܼƨå¼´¿³Q¤À°t¤@ÓÈ¡C§A·|µo²{³o©M C »y¨¥ªº°µªk¤£¦P¡A¦]¬° C ªº¥þ°ìÅܼƬO¦Û°Êªº´£¨Ñµ¹¦U¨ç¼Æ¡A°£«D¦b¥»°ì©w¸q¤¤«ü©úºM¾P¡C¦¹°µªk¥i¯à·|¤ÞP¤@¨Ç°ÝÃD¡A¦p¨Ï¥ÎªÌ¤£·V¦a§ó§ï¤F¥þ°ìÅܼƪºÈ¡C¦b PHP ¤¤¡A¥þ°ìÅܼƦb¥»°ì¨Ï¥Î«e¥²¶·¥ý«Å§G¬°¥þ°ì¡C¨Ò¤l¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?> ]]> </programlisting> </informalexample> <simpara> ¤Wz¨Ò¤l±N·|¿é¥X "3"¡C¦b¨ç¼Æ¤º«Å§G <varname>$a</varname> ¤Î <varname>$b</varname> ¬°¥þ°ì«á¡A©Ò¦³¯A¤Î¸Ó¨âÓÅܼƪº¨Ï¥Î±N¦Û°Ê«ü¦V¥þ°ìªºª©¥»¡CPHP ¨S¦³©w¤@Ó¨ç¼Æ¥i¥H¨Ï¥Îªº¥þ°ìÅܼƪº¼Æ¶q¡C </simpara> <simpara> ²Ä¤GºØ¦s¨ú¥þ°ì½d³ò¤¤ªºÅܼƤèªk¬O¨Ï¥Î¤@ PHP ¯S§O©w¸qªº³¯¦C¡G<varname>$GLOBALS</varname>¡C«e±ªº¨Ò¤l¥i¥H«¼g¬°¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = 1; $b = 2; function Sum() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum(); echo $b; ?> ]]> </programlisting> </informalexample> <simpara> <varname>$GLOBALS</varname> ¬O¤@ÓÃöÁp³¯¦C (associative array)¡A¥þ°ìÅܼƪº¦W§Y¬°¯Á¤ÞÁä¡A¦Ó¸ÓÅܼƪº¤º®e§Y¬°³¯¦CªºÈ¡C¦³§_¯d·N¨ì <varname>$GLOBALS</varname> ¦b¥ô¦ó¤@Ó½d³ò³£¥X²{¡H¨º¬O¦]¬° $GLOBALS ¬O¤@Ó<link linkend="language.variables.superglobals">superglobal</link>¡C³o¬O¤@ӥܽd superglobals ±j¤j¥\¯àªº¨Ò¤l¡G </simpara> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php function test_global() { // Most predefined variables aren't "super" and require // 'global' to be available to the functions local scope. global $HTTP_POST_VARS; print $HTTP_POST_VARS['name']; // Superglobals are available in any scope and do // not require 'global'. Superglobals are available // as of PHP 4.1.0 print $_POST['name']; } ?> ]]> </programlisting> </informalexample> </para> <simpara> Åܼƽd³òªº¥t¤@Ó«n¥\¯à¬°<emphasis>ÀRºA</emphasis>ÅܼơCÀRºAÅܼƥu¦b¥»°ì¨ç¼Æ½d³ò¤º¦s¦b¡A¦ý¬O·íµ{¦¡°õ¦æÂ÷¶}¦¹½d³ò®É¡A¥¦¨Ã¤£·|³à¥¢¥¦ªºÈ¡C¬Ý¬Ý¤U±ªº¨Ò¤l¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function Test () { $a = 0; echo $a; $a++; } ?> ]]> </programlisting> </informalexample> <simpara> ¦¹¨ç¼Æ¨S¦³¤°»ò¥Î³B¡A¦]¨C¤@¦¸°õ¦æ¥¦®É¡A¥¦±N <varname>$a</varname> ³]¬° <literal>0</literal> µM«á¦C¦L¥X "0"¡C<varname>$a</varname>++ ¼W¥[¤F <varname>$a</varname> ªºÈ¡A¦ý¨Ã¨S¦³¹ê»Ú¥Î³~¦]¬°¤@¥¹Â÷¶}¤F¸Ó¨ç¼Æ¡AÅÜ¼Æ <varname>$a</varname> ¤]ÀH¤§®ø¥¢¡Cn³]p¤@Ó¦³¥Îªº¡B¤£·|¥á¥¢·í«ep¼Æªºp¼Æ¨ç¼Æ¡A§ÚÌ¥i¥H±N <varname>$a</varname>«Å§G¬°ÀRºA¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function Test() { static $a = 0; echo $a; $a++; } ?> ]]> </programlisting> </informalexample> <simpara> ²{¦b¡A¨C·í¨ç¼Æ Test() ³Q©I¥s®É¡A¥¦·|¦C¦L¥X <varname>$a</varname> ªºÈ¡AµM«á¥[¤W¤@¡C </simpara> <simpara> ÀRºAÅܼƤ]´£¨Ñ¤@ºØ³B²z»¼°j¨ç¼Æªº¤èªk¡C»¼°j¨ç¼Æ¬O¤@ºØ©I¥s¦Û¤vªº¨ç¼Æ¡C½s¼g»¼°j¨ç¼Æ®É¥²¶·¯d·N¡A¦]¬°Y½s¼g¿ù»~¡A¥¦¦³¥i¯à·|µL©w¦a»¼°j¡C±z¥²¶·½T©w¨¬°÷ªº¤è¦¡¨Ó²×¤î»¼°j¡C¤U¦C²³æªº¨ç¼Æ±N»¼°j¦a¼Æ¨ì 10¡A§Q¥ÎÀRºAÅÜ¼Æ <varname>$count</varname> ¨ÓÂ_©w¤°»ò®ÉÔ°±¤î¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test (); } $count--; } ?> ]]> </programlisting> </informalexample> <simpara> ÅX°Ê <literal>PHP 4</literal> ªº Zend Engine 1 ¬O¥H°Ñ·Óªº¤è¦¡¨Ó¹ê²{ <literal>static</literal> ©M <literal>global</literal> ªº¡C¨Ò¦p¡A¤@Ó¯u¥¿ªº¥þ°ìÅܼƨϥΠ<literal>global</literal> ¤è¦¡¤Þ¶i¤@Ó¨ç¼Æ½d³ò®É¹ê»Ú¤W´N¬O«Ø¥ß¤F¤@Ó¥þ°ìÅܼƪº°Ñ·Ó¡C³o±N¾ÉP¤@¨Ç·N·Q¤£¨ìªº¦æ¬°¡A¥¿¦p¤U¦C¨Ò¤l©Òz¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function test_global_ref() { global $obj; $obj = &new stdclass; } function test_global_noref() { global $obj; $obj = new stdclass; } test_global_ref(); var_dump($obj); test_global_noref(); var_dump($obj); ?> ]]> </programlisting> </informalexample> <simpara> °õ¦æ³oÓ¨Ò¤l±N·|¾ÉP¤U¦Cªº¿é¥X¡G </simpara> <screen> NULL object(stdClass)(0) { } </screen> <simpara> <literal>static</literal> ³¯z¦¡¤]·|¾ÉP¦P¼Ëªº¿é¥X¡C°Ñ·Ó¨Ã¨S¦³³QÀRºA¦aÀx¦s¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php function &get_instance_ref() { static $obj; echo "Static object: "; var_dump($obj); if (!isset($obj)) { // Assign a reference to the static variable $obj = &new stdclass; } $obj->property++; return $obj; } function &get_instance_noref() { static $obj; echo "Static object: "; var_dump($obj); if (!isset($obj)) { // Assign the object to the static variable $obj = new stdclass; } $obj->property++; return $obj; } $obj1 = get_instance_ref(); $still_obj1 = get_instance_ref(); echo "\n"; $obj2 = get_instance_noref(); $still_obj2 = get_instance_noref(); ?> ]]> </programlisting> </informalexample> <simpara> °õ¦æ¦¹¨Ò¤l±N¾ÉP¤U¦Cªº¿é¥X¡G </simpara> <screen> Static object: NULL Static object: NULL Static object: NULL Static object: object(stdClass)(1) { ["property"]=> int(1) } </screen> <simpara> ¤Wz¨Ò¤l¥Ü½d¤F¦b«ü¬£¤@Ó°Ñ·Óµ¹¤©¤@ÓÀRºAÅܼƫá¡A·í±z²Ä¤G¦¸©I¥s <literal>&get_instance_ref()</literal> ¨ç¼Æ®É¡A¥¦¬O<emphasis>¤£·|</emphasis>°O¦í¤§«eªºÈªº¡C </simpara> </sect1> <sect1 id="language.variables.variable"> <title>¥iÅÜÅܼÆ</title> <simpara> ¦³®ÉÔ¡A¥i¥H¨Ï¥Î¥iÅÜÅܼƷ|¥O¨ì¤u§@§ó¥[¤è«K¡C¤]´N¬O´N¡A¤@ÓÅܼƪº¦W¥i¥H³Q°ÊºAªº³]©w©M¨Ï¥Î¡C¤@Ó´¶³qªºÅܼƬO¥H¤U¦Cªº¤èªk³]©w¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $a = "hello"; ?> ]]> </programlisting> </informalexample> <simpara> ¤@Ó¥iÅÜÅܼƬO¥H¥t¤@ÓÅܼƪºÈ§@¬°¥¦ªºÅܼƦW¡C¦b¤Wz¨Ò¤l¤¤¡A¥un¥[¨âÓ $ ¦b <emphasis>hello</emphasis> ªº«e±´N¥i§â¥¦·í§@¬O¤@ÓÅܼƪº¦W¨Ó¨Ï¥Î¤F¡C§Y¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php $$a = "world"; ?> ]]> </programlisting> </informalexample> <simpara> ³o®É¡A¦³¨âÓÅܼƳQ©w¸qµM«áÀx¦s¦b PHP ªº²Å¸¹ªí¤¤¡G§t¦³ "hello" ªº <varname>$a</varname> ¤Î§t¦³ "world" ªº <varname>$hello</varname>¡C©Ò¥H¡A¦¹±Ôz¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "$a ${$a}"; ?> ]]> </programlisting> </informalexample> <simpara> »P¤U¦C³o¥y¦³µÛ¦P¼Ëªº¿é¥X¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "$a $hello"; ?> ]]> </programlisting> </informalexample> <simpara> §Y¡A¥¦Ì³£¿é¥X¡G<computeroutput>hello world</computeroutput>¡C </simpara> <simpara> ¬°¤Fn¦b³¯¦C¤¤¨Ï¥Î¥iÅÜÅܼơA±z¥²¶·º¥ý¸Ñ¨M¤@Ó¼Ò½kªº°ÝÃD¡C¤ñ¤è»¡¡A¦pªG±z¨Ï¥Î <varname>$$a[1]</varname>¡A¨ºåªR¾¹¥²¶·ª¾¹D±z¬O·Q·í <varname>$a[1]</varname> ¬OÅܼƨӨϥΡAÁÙ¬O·í <varname>$$a</varname> ¬OÅܼơAµM«á«ü¦V¨ºÓÅܼƪº²Ä [1] Ó¯Á¤Þ¡C¸Ñ¨M¤Wz¼Ò½k°ÝÃDªº»yªk¬O¡G²Ä¤@Ó±¡ªp¨Ï¥Î <varname>${$a[1]}</varname>¡B²Ä¤GÓ±¡ªp¨Ï¥Î <varname>${$a}[1]</varname>¡C </simpara> <warning> <simpara> ¥²¶·¯d·Nªº¬O¡A¥iÅÜÅܼƬO¤£¯à¨Ï¥Î©ó PHP ªº <link linkend="language.variables.superglobals">Superglobal ³¯¦C</link>¡C³oªí¥Ü±z¤£¯à¨Ï¥Î <varname>${$_GET}</varname> ³o¼Ëªº±Ôz¡C¦pªG±z¯uªº·Q¨Ï¥Î superglobals ©Mªº <varname>HTTP_*_VARS</varname>¡A±z¥i¥H¹Á¸Õ¥H<link linkend="language.references">°Ñ·Ó</link>ªº¤è¦¡¨Ï¥Î¡C </simpara> </warning> </sect1> <sect1 id="language.variables.external"> <title>¨Ó¦Û PHP ¥H¥~ªºÅܼÆ</title> <sect2 id="language.variables.external.form"> <title>HTML ªí³æ (GET ©MPOST)</title> <simpara> ·í¤@¥÷ªí³æ¶Ç°eµ¹ PHP µ{¦¡®É¡Aªí³æ¤ºªº¸ê°T±N¦Û°Ê´£¨Ñµ¹¸Óµ{¦¡¡C§Ú̦³«Ü¦h¤èªk¦s¨ú³o¨Ç¸ê°T¡A½d¨Ò¡G </simpara> <para> <example> <title>¤@Ó²³æªº HTML ªí³æ</title> <programlisting role="html"> <![CDATA[ <form action="foo.php" method="post"> Name: <input type="text" name="username"><br> Email: <input type="text" name="email"><br> <input type="submit" name="submit" value="Submit me!"> </form> ]]> </programlisting> </example> </para> <para> ®Ú¾Ú±zªº¦w¸Ë¤è¦¡©MÓ¤H°¾¦n¡APHP ´£¨Ñ¦hºØ¤è¦¡¦s¨ú HTML ªí³æ¤¤ªº¸ê®Æ¡C¤@¨Ç¨Ò¤l¦p¡G </para> <para> <example> <title>¦s¨ú¤@Ó¥H POST ¤è¦¡¶Ç°eªºÂ²³æ HTML ªí³æ</title> <programlisting role="html"> <![CDATA[ <?php // Available since PHP 4.1.0 print $_POST['username']; print $_REQUEST['username']; import_request_variables('p', 'p_'); print $p_username; // Available since PHP 3. As of PHP 5.0.0, these long predefined // variables can be disabled with the register_long_arrays directive. print $HTTP_POST_VARS['username']; // Available if the PHP directive register_globals = on. As of // PHP 4.2.0 the default value of register_globals = off. // Using/relying on this method is not preferred. print $username; ?> ]]> </programlisting> </example> </para> <para> ¨Ï¥Î GET ¤è¦¡¶Ç°eªºªí³æ¥ÎªkÃþ¦ü¡A¥u¤£¹L¨Ï¥Î¦X¾Aªº¥ý«e©w¸qªº¨ç¼Æ¡CGET ¤]¥i¨Ï¥Î¦b¬d¸ß¦r¦ê (QUERY_STRING) ¡qURL ¤¤°Ý¸¹ '?' «á±ªº¸ê°T¡r¡C¨Ò¦p¡A<literal>http://www.example.com/test.php?id=3</literal> §t¦³¥H <varname>$_GET['id']</varname> ¤è¦¡¦s¨úªº GET ¸ê®Æ¡C½Ð°Ñ¦Ò <link linkend="reserved.variables.request">$_REQUEST</link> ©M <function>import_request_variables()</function>¡C </para> <note> <para> <link linkend="language.variables.superglobals">Superglobal ³¯¦C</link>¦p <varname>$_POST</varname> ¤Î <varname>$_GET</varname> ¦b PHP ª©¥» 4.1.0 ¥H¤W¤~¶}©l´£¨Ñ¡C </para> </note> <para> ¤W±´£¨ì¡A¦b PHP 4.2.0 ¤§«eªºª©¥»¤¤¡A<link linkend="ini.register-globals">register_globals</link> ªº¹w³]ȬO <emphasis>on</emphasis>¡C¦Ó¦b PHP 3 ¤¤¡A¥¦¥Ã»·¬O on ªº¡C§ÚÌ«ØÄ³©Ò¦³¨Ï¥ÎªÌ¤£n¨Ì¿à¦¹«ü¥O¡A¨Ã¦b½s¼g®É±N¥¦·í§@¬O <emphasis>off</emphasis> ¨Ó³]p±zªºµ{¦¡¡C </para> <note> <para> <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> ²ÕºA«ü¥O·|¼vÅT¨ì Get¡APost ©M Cookie ªºÈ¡C¦pªG¶}±Ò¦¹«ü¥O¡A(It's "PHP!") ªºÈ±NÅܦ¨ (It\'s \"PHP!\")¡C¦¹¸õ¥X¤u§@¦b±N¦r¦ê´¡¤J¸ê®Æ®w«e¬O¥²¶·n°µªº¡C½Ð°Ñ¦Ò <function>addslashes</function>¡A<function>stripslashes</function> ©M <link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>¡C </para> </note> <simpara> PHP ¤]À´±o³B²z³¯¦C¦¡ªºªí³æÅܼơq½Ð°ÑÆ[¬ÛÃöªº <link linkend="faq.html">FAQ</link>¡r¡C±z¥i¥H±N¬ÛÃöªºÅܼÆÂkÃþ¡A©Î¥Î¦¹¥\¯à¨Ó¨ú¦^¦h¤¸¿ï¾Ü¿é¤Jªí³æªºÈ¡C¦b¤U¦C½d¨Ò¤¤¡A§Ú̱Nªí³æ±i¶K¨ì¥¦¦Û¤v¡A¨Ã¦b¶Ç°e«á§â¸ê®ÆÅã¥Ü¥X¨Ó¡G </simpara> <para> <example> <title>§ó½ÆÂøªºªí³æÅܼÆ</title> <programlisting role="php"> <![CDATA[ <?php if ($HTTP_POST_VARS['action'] == 'submitted') { print '<pre>'; print_r($HTTP_POST_VARS); print '<a href="'. $HTTP_SERVER_VARS['PHP_SELF'] .'">Please try again</a>'; print '</pre>'; } else { ?> <form action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post"> Name: <input type="text" name="personal[name]"><br> Email: <input type="text" name="personal[email]"><br> Beer: <br> <select multiple name="beer[]"> <option value="warthog">Warthog</option> <option value="guinness">Guinness</option> <option value="stuttgarter">Stuttgarter Schwabenbräu</option> </select><br> <input type="hidden" name="action" value="submitted"> <input type="submit" name="submit" value="submit me!"> </form> <?php } ?> ]]> </programlisting> </example> </para> <para> PHP 3 ªº³¯¦Cªí³æÅܼƥu¥i¥H¨Ï¥Î¤@ºû³¯¦C¡A¦Ó PHP 4 «h¨S¦³¦¹¨î¡C </para> <sect3 id="language.variables.external.form.submit"> <title>IMAGE SUBMIT ÅܼƦWºÙ</title> <simpara> ¦b¶Ç°eªí³æ®É¡A§ÚÌ¥i¥H¨Ï¥Î¤U¦C¼ÐÅÒ±N¼Ð·Çªº´£¥æÁä¥H¹Ï¹³¨Ó¨ú¥N¡G </simpara> <informalexample> <programlisting role="html"> <![CDATA[ <input type="image" src="image.gif" name="sub"> ]]> </programlisting> </informalexample> <simpara> ·í¨Ï¥ÎªÌ¦b¹Ï¹³ªº¥ô¦ó¤@³B«ö¤@¤U¡A¦ñÀHªºªí³æ´N·|¶Ç°e¨ì¦øªA¾¹¡AÀH¨ä¦Ó¨ÓÁÙªþ¥[¤F¨âÓÅܼơAsub_x ©M sub_y¡C³o¥]§t¤F¨Ï¥ÎªÌ«ö¦b¹Ï¹³ªº®y¼Ð¡C¦³¸gÅ窺¨Ï¥ÎªÌ©Î³\ª¾¹D¥ÑÂsÄý¾¹¶Ç°e¨ÓªºÅܼƦWºÙÀ³¸Ó¥]§t¥y¸¹¡A¦Ó¤£¬O©³½u¡A¦ý PHP ¦Û°Ê¦a±N¥y¸¹Âà´«¦¨¬°©³½u¡C </simpara> </sect3> </sect2> <sect2 id="language.variables.external.cookies"> <title>HTTP Cookies</title> <simpara> PHP µ´¹ï¤ä´© <ulink url="&spec.cookies;">Netscape³W®æ</ulink>ªº HTTP cookies¡CCookies ¬O¥Î¨Ó±N¸ê®ÆÀx¦s¦b¥Î¤áºÝªºÂsÄý¾¹¤¤¡A¥H«K¤é«á°lÂÜ©ÎÃѧOªð¦^ªº¨Ï¥ÎªÌ¡C±z¥i¥H¥Î <function>setcookie()</function> ¨ç¼Æ¨Ó³]©w cookies¡CCookies ¬O HTTP header ªº¤@³¡¥÷¡A¦]¦¹ SetCookie ¨ç¼Æ¤@©wn¦b¥ô¦ó¸ê®Æ¶Ç°e¥hÂsÄý¾¹«e©I¥s¡C³o©M <function>header()</function> ¨ç¼Æ¦³µÛ¬Û¦Pªº©w¡CCookie ¸ê®Æ¥i¥H¦b <varname>$_COOKIE</varname>¡A<varname>$HTTP_COOKIE_VARS</varname> ¤Î <varname>$_REQUEST</varname> ³¯¦C¤¤¨Ñ¨Ï¥Î¡C¸Ô±¡©M½d¨Ò½Ð°Ñ¦Ò¤â¥Uªº <function>setcookie()</function> ³¡¥÷¡C </simpara> <simpara> Y±zn±N¦hÓÈ«ü¬£µ¹¤@Ó cookie ÅܼơA¨º±z´Nn¨Ï¥Î³¯¦C¨Ó«ü¬£¤F¡C½d¨Ò¡G </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php setcookie("MyCookie[foo]", "Testing 1", time()+3600); setcookie("MyCookie[bar]", "Testing 2", time()+3600); ?> ]]> </programlisting> </informalexample> <simpara> ³o±N·|«Ø¥ß¨âÓÓ§Oªº cookies¡A¾¨ºÞ²{¦b MyCookie¦b±zªºµ{¦¡¤¤¬O¤@ӳ椸³¯¦C¡C¦pªG±zn¥H¤@Ó cookie «Ø¥ß¦hÓÈ¡A¨º±z¥i¥ý¹ï¨º¨ÇȨϥΠ<function>serialize()</function> ©Î <function>explode()</function> ¨ç¼Æ¡C </simpara> <simpara> ¦³¤@ÂI¥²¶·¯d·Nªº¬O¡A¤@Ó cookie ±N·|´À¥NÂsÄý¾¹¤¤¥t¤@Ó¦P¦Wªº cookie¡A°£«D¸Ó cookie ªº¸ô®|©Îºô°ì¦WºÙ¤£¦P¡C©Ò¥H¡A¦b³]pÁʪ«¨®µ{¦¡®É¡A±z³Ì¦n«O«ù¤@Óp¼Æ¾¹¡A¨Ã±N¦¹¼Æ¾Ú¶Ç»¼¤U¥h¡A§Y¡G </simpara> <example> <title>¤@Ó <function>setcookie()</function> ªº½d¨Ò</title> <programlisting role="php"> <![CDATA[ <?php $count++; setcookie("count", $count, time()+3600); setcookie("Cart[$count]", $item, time()+3600); ?> ]]> </programlisting> </example> </sect2> <sect2 id="language.variables.external.dot-in-names"> <title>¦bÅܼƦW¦r¤¤ªº¥y¸¹ (dots)</title> <para> ¤@¯ë¤W¡APHP ¨Ã¤£·|§ó§ï¶Ç¤Jµ{¦¡ªºÅܼƦWºÙ¡CµM¦Ó¡A±z¥²¶·¯d·N¥y¸¹ (.) ¨Ã¤£¬O¤@Ó¦³®Äªº PHP ÅܼƦWºÙ¦r¤¸¡A¥¿¦p¡G <programlisting role="php"> <![CDATA[ <?php $varname.ext; /* invalid variable name */ ?> ]]> </programlisting> ³o®É¡AåªR¾¹¨£¨ìªº¥u¬O¤@Ó¥s°µ <varname>$varname</varname> ªºÅܼơA¸òÀHµÛ¦r¦ê³sµ²¹Bºâ¤l (.)¡A¦A¨Ó¬O¤@ÓµL¤Þ¸¹ªº¦r¦ê¡Gext¡CÅãµM¦a¡A³o¨Ã¤£·|±a¨Ó±z·Qnªºµ²ªG¡C </para> <para> ¥¿¦]¦p¦¹¡APHP ·|¦Û°Êªº±N¶Ç¤JªºÅܼƦWºÙ¤¤ªº¥y¸¹ (.) §ï¬°©³½u (_)¡C </para> </sect2> <sect2 id="language.variables.determining-type-of"> <title>§P©wÅܼƪºÃþ«¬</title> <para> ¥Ñ©ó PHP ·|¦Û¦æ§PÂ_ÅܼƪºÃþ«¬¡A¨Ã«ö»ÝnÂàÅÜ¥¦ÌªºÃþ«¬¡A¦]¦¹¦³®É¤]Ãø¥H©úÅã¦a§P©w¤@ÓÅܼƦb¬YӮɨ誺Ãþ«¬¡C¦³Å²©ó¦¹¡APHP ´£¨Ñ¤F´XÓ§P©wÅܼÆÃþ«¬ªº¨ç¼Æ¡G<function>gettype()</function>¡B<function>is_array()</function>¡B<function>is_float()</function>¡B<function>is_int()</function>¡B<function>is_object()</function> ¤Î <function>is_string()</function>¡C½Ð°Ñ¾\<link linkend="language.types">Ãþ«¬</link>¤@³¹¡C </para> </sect2> </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 -->