cvs: phpdoc /language constants.xml functions.xml operators.xml

From: Date: Fri, 23 May 2003 09:36:30 +0000
Subject: cvs: phpdoc /language constants.xml functions.xml operators.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969353785@lists.php.net to get a copy of this message
subbie Fri May 23 05:36:30 2003 EDT Added files: /phpdoc/language constants.xml functions.xml operators.xml Log: added functions and operators in language

Index: phpdoc/language/constants.xml +++ phpdoc/language/constants.xml <?xml version="1.0" encoding="iso-8859-7"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.30 Maintainer: daphnie Status: ready --> <chapter id="language.constants"> <title>ÓôáèåñÝò</title> <simpara> Ìéá óôáèåñÜ åßíáé Ýíáò identifier (üíïìá) ãéá ìéá áðëÞ ôéìÞ. ¼ðùò öáßíåôáé êáé áðü ôï üíïìá, áõôÞ ç ôéìÞ äåí ìðïñåß íá áëëÜîåé êáôÜ ôçí åêôÝëåóç ôïõ script. (Ïé 'ìáãéêÝò óôáèåñÝò' <constant>__FILE__</constant> êáé <constant>__LINE__</constant> öáßíåôáé íá åßíáé åîáßñåóç ó'áõôüí ôïí êáíüíá, áëëÜ äåí åßíáé ðñáãìáôéêÝò óôáèåñÝò.) Åßíáé ðñïêáèïñéóìÝíï ðùò ìéá óôáèåñÜ åßíáé is case-sensitive. ÊáôÜ óõíèÞêç ïé constant identifiers åßíáé ðÜíôá óôá êåöáëáßá. </simpara> <para> Ôï üíïìá ìéáò óôáèåñÜò áêïëïõèåß ôïõò ßäéïõò êáíüíåò üðùò êáé ïðïéáäÞðïôå label óôçí PHP. ¸íá Ýãêõñï üíïìá óôáèåñÜò áñ÷ßæåé ìå Ýíá ãñÜììá Þ underscore, áêïëïõèïýìåíç áðü ïðïéïíäÞðïôå áñéèìü ãñáììÜôùí, áñéèìþí Þ underscores. Ùò êáíïíéêÞ (regular) Ýêöñáóç Ýêöñáóç, èá åêöñáæüôáí ùò åîÞò: <literal>[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*</literal> <!-- TODO: Example of valid & invalid constant names --> </para> <note> <simpara> Ãéá ôïõò óêïðïýò ìáò åäþ, Ýíá ãñÜììá åßíáé áðü ôï a-z, A-Z, êáé ïé ASCII ÷áñáêôÞñåò áðü ôï 127 ìÝ÷ñé ôï 255 (0x7f-0xff). </simpara> </note> <simpara> ¼ðùò ïé Like &link.superglobals;, åìâÝëåéá (scope) ìéáò óôáèåñÜò åßíáé global. Ìðïñåßôå íá Ý÷åôå ðñüóâáóç ó'áõôÞ áðü ïðïõäÞðïôå óôï script ÷ùñßò íá ëáìâÜíåôå õðüøç ôçí åìâÝëåéá. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìåôçí åìâÝëåéá, äéáâÜóôå ôï ôìÞìá ôïõ åã÷åéñéäßïõ ó÷åôéêÜ ìå ôçí <link linkend="language.variables.scope">åìâÝëåéá ôùí ìåôáâëçôþí</link>. </simpara> <sect1 id="language.constants.syntax"> <title>Óýíôáîç</title> <simpara> Ìðïñåßôå íá ïñßóåôå ìéá óôáèåñÜ ÷ñçóéìïðïéþíôáò ôçí <function>define</function>-óõíÜñôçóç. Ìüëéò ìéá óôáèåñÜ ïñéóôåß, äåí ìðïñåß ðïôÝ íá áëëÜîåé Þ íá ìçí åßíáé ïñéóìÝíç. </simpara> <simpara> Ìüíï scalar (âáèìùôÜ) äåäïìÝíá (<type>boolean</type>, <type>integer</type>, <type>float</type> êáé <type>string</type>) ìðïñïýí íá óõìðåñéëáìâÜíïíôáé óôéò óôáèåñÝò. </simpara> <simpara> Ìðïñåßôå íá ðÜñåôå ôçí ôéìÞ ìéáò óôáèåñÜò áðëÜ êáëþíôáò ôçí ìå ôï üíïìá ôçò. Óå áíôßèåóç ìå ôéò ìåôáâëçôÝò, <emphasis>äåí</emphasis> èá ðñÝðåé âÜæåôå ìðñïóôÜ áðü ìéá óôáèåñÜ ôï <literal>$</literal>. Ìðïñåßôå åðßóçò íá ÷ñçóéìïðïéÞóåôå ôç óõíÜñôçóç <function>constant</function>, ãéá íá äéáâÜóåôå ôçí ôéìÞ ìéáò óôáèåñÜò, áí èÝëåôå íá ðÜñåôå ôï üíïìá ìéáò óôáèåñÜò äõíáìéêÜ. ×ñçóéìïðïéåßóôå ôçí <function>get_defined_constants</function> ãéá íá ðÜñåôå ìéá ëßóôá üëùí ôùí óôáèåñþí ðïõ Ý÷ïõí ïñéóôåß. </simpara> <note> <simpara> Ïé óôáèåñÝò êáé ïé (global) ìåôáâëçôÝò åßíáé óå äéáöïñåôéêü namespace. Áõôü óçìáßíåé ðùò ãéá ðáñÜäåéãìá ôï &true; êáé ôï <varname>$TRUE</varname> åßíáé ãåíéêþò äéáöïñåôéêÜ. </simpara> </note> <simpara> Áí ÷ñçóéìïðïéåßôå ìßá ìç êáèïñéóìÝíç óôáèåñÜ, ç PHP õðïèÝôåé üôé åííïåßôå ôï üíïìá ôçò ßäéáò ôçò óôáèåñÜò. Ìéá <link linkend="ref.errorfunc">åéäïðïßçóç</link> èá åìöáíéóôåß üôáí áõôü óõìâåß. ×ñçóéìïðïéåßóôå ôç óõíÜñôçóç <function>defined</function> áí èÝëåôå íá ìÜèåôå áí ìéá óôáèåñÜ Ý÷åé ïñéóôåß/ôåèåß. </simpara> <para> ÁõôÝò åßíáé ïé äéáöïñÝò ìåôáîý óôáèåñþí êáé ìåôáâëçôþí: <itemizedlist> <listitem> <simpara> Ïé óôáèåñÝò äåí Ý÷ïõí ôï óýìâïëï ôïõ äïëáñßïõ (<literal>$</literal>) ìðñïóôÜ ôïõò </simpara> </listitem> <listitem> <simpara> Ïé óôáèåñÝò ìðïñïýí íá ïñéóôïýí ìüíï ÷ñçóéìïðïéþíôáò ôç óõíÜñôçóç <function>define</function>, êáé ü÷é ìå áðëÞ áíÜèåóç. </simpara> </listitem> <listitem> <simpara> Ïé óôáèåñÝò ìðïñïýí íá ïñéóôïýí êáé íá ðñïóðåëáóôïýí áðü ïðïõäÞðïôå ÷ùñßò íá ëÜâïõìå õðüøç ôïõò êáíüíåò åìâÝëåéáò ìåôáâëçôþí. </simpara> </listitem> <listitem> <simpara> Ïé óôáèåñÝò äåí ìðïñïýí íá îáíáïñéóôïýí Þ íá ìçí åßíáé êáèïñéóìÝíåò áöïý Ý÷ïõí ôåèåß êáé </simpara> </listitem> <listitem> <simpara> Ïé óôáèåñÝò ìðïñïýí íá õðïëïãßóïõí âáèìùôÝò ôéìÝò. </simpara> </listitem> </itemizedlist> </para> <para> <example> <title>Ïñßæïíôáò óôáèåñÝò</title> <programlisting role="php"> <![CDATA[ <?php define("CONSTANT", "Hello world."); echo CONSTANT; // outputs "Hello world." echo Constant; // outputs "Constant" and issues a notice. ?> ]]> </programlisting> </example> </para> </sect1> <sect1 id="language.constants.predefined"> <title>ÐñïêáèïñéóìÝíåò óôáèåñÝò</title> <simpara> Ç PHP ðáñÝ÷åé Ýíáí ìåãÜëï áñéèìü áðü ðñïêáèïñéóìÝíåò óôáèåñÝò óå ïðïéïäÞðïôå script ðïõ åêôåëåßôáé. ¼ìùò, ðïëëÝò áðü áõôÝò ôéò óôáèåñÝò äçìéïõñãïýíôáé áðü äéÜöïñåò extensions, êáé åìöáíßæïíôáé ìüíï üôáí áõôÝò ïé extensions åßíáé äéáèÝóéìåò, åßôå ìÝóù äõíáìéêïý öïñôþìáôïò (dynamic loading) Þ åðåéäÞ Ý÷ïõí ìåôáãëùôôéóôåß. </simpara> <para> ÕðÜñ÷ïõí ôÝóóåñéò ìáãéêÝò óôáèåñÝò ðïõ áëëÜæïõí áíÜëïãá ìå ôï ðïý ÷ñçóéìïðïéïýíôáé. Ãéá ðáñÜäåéãìá, ç ôéìÞ ôçò <constant>__LINE__</constant> åîáñôÜôáé áðü ôç ãñáììÞ ðïõ ÷ñçóéìïðïéåßôáé óôï script. ÁõôÝò ïé éäéáßôåñåò óôáèåñÝò åßíáé case-insensitive êáé Ý÷ïõí ùò áêïëïýèùò: </para> <para> <table> <title>ÌåñéêÝò "ìáãéêÝò" óôáèåñÝò ôçò PHP</title> <tgroup cols="2"> <thead> <row> <entry>¼íïìá</entry> <entry>ÐåñéãñáöÞ</entry> </row> </thead> <tbody> <row> <entry><constant>__LINE__</constant></entry> <entry> Ï ôñÝ÷ïí áñéèìüò ãñáììÞò ôïõ áñ÷åßïõ. </entry> </row> <row> <entry><constant>__FILE__</constant></entry> <entry> Ïëüêëçñç ç äéåýèõíóç (full path) êáé ôï üíïìá ôïõ áñ÷åßïõ. </entry> </row> <row> <entry><constant>__FUNCTION__</constant></entry> <entry> Ôï üíïìá ôçò óõíÜñôçóçò. (Áõôü ðñïóôÝèçêå óôçí PHP 4.3.0.) </entry> </row> <row> <entry><constant>__CLASS__</constant></entry> <entry> Ôï üíïìá ôçò class. (Áõôü ðñïóôÝèçêå óôçí PHP 4.3.0.) </entry> </row> </tbody> </tgroup> </table> </para> <simpara> Ìéá ëßóôá ðñïêáèïñéóìÝíùí óôáèåñþí åßíáé äéáèÝóéìç ó'áõôü ôï ôìÞìá<link linkend="reserved.constants">ÐñïêáèïñéóìÝíåò óôáèåñÝò</link>. </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 --> Index: phpdoc/language/functions.xml +++ phpdoc/language/functions.xml <?xml version="1.0" encoding="iso-8859-7"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.34 Maintainer: daphnie Status: ready --> <chapter id="functions"> <title>ÓõíáñôÞóåéò</title> <sect1 id="functions.user-defined"> <title>ÓõíáñôÞóåéò ïñéæüìåíåò áðü ôï ÷ñÞóôç</title> <para> Ìéá óõíÜñôçóç ìðïñåß íá ïñéóôåß ÷ñçóéìïðïéþíôáò ôçí áêüëïõèç óýíôáîç: <informalexample> <programlisting role="php"> <![CDATA[ function foo ($arg_1, $arg_2, ..., $arg_n) { echo "Example function.\n"; return $retval; } ]]> </programlisting> </informalexample> </para> <!-- status of func(const $param) ? zend doesn't care at all whether or not you specify it. I've never seen it before... what's its use? (or was...) --> <simpara> ÏðïéïóäÞðïôå Ýãêõñïò PHP êþäéêáò ìðïñåß íá åìöáíéóôåß óå ìéá óõíÜñôçóç, áêüìç êáé óå Üëëåò óõíáñôÞóåéò êáé óå ïñéóìïýò <link linkend="keyword.class">êëÜóåùí (class)</link> . </simpara> <simpara> Óôçí PHP 3, ïé óõíáñôÞóåéò ðñÝðåé íá ïñßæïíôáé ðñéí ãßíåé êÜðïéá áíáöïñÜ ó'áõôÝò. ÔÝôïéá áðÜéôçóç äåí õðÜñ÷åé óôçí PHP 4. <emphasis>Åêôüò</emphasis> áí ç óõíÜñôçóç ïñßæåôáé óå ìéá õðüèåóç üðùò ìðïñåßôå íá äåßôå óôá ðáñáêÜôù äýï ðáñáäåßãìáôá. </simpara> <para> ¼ôáí ìéá óõíÜñôçóç ïñßæåôáé ìå õðïèåôéêü ôñüðï üðùò óôá äõï ðáñáêÜôù ðáñáäåßãìáôá ï ïñéóìüò ôçò ðñÝðåé íá <emphasis>ðñïçãåßôáé</emphasis> áðü ôï óçìåßï óôï ïðïßï êáëåßôáé. <example> <title>Conditional functions</title> <programlisting role="php"> <![CDATA[ <?php $makefoo = true; /* We can't call foo() from here since it doesn't exist yet, but we can call bar() */ bar(); if ($makefoo) { function foo () { echo "I don't exist until program execution reaches me.\n"; } } /* Now we can safely call foo() since $makefoo evaluated to true */ if ($makefoo) foo(); function bar() { echo "I exist immediately upon program start.\n"; } ?> ]]> </programlisting> </example> <example> <title>Functions within functions</title> <programlisting role="php"> <![CDATA[ <?php function foo() { function bar() { echo "I don't exist until foo() is called.\n"; } } /* We can't call bar() yet since it doesn't exist. */ foo(); /* Now we can call bar(), foo()'s processesing has made it accessable. */ bar(); ?> ]]> </programlisting> </example> </para> <simpara> Ç PHP äåí õðïóôçñßæåé õðåñöüñôùóç óõíáñôÞóåùí, ïýôå åßíáé äõíáôü íá õðÜñ÷ïõí ìç-êáèïñéóìÝíåò Þ îáíÜ-êáèïñéóìÝíåò óõíáñôÞóåéò ðïõ Ý÷ïõí äçëùèåß ðñïçãïõìÝíùò. </simpara> <note> <simpara> Ôá ïíüìáôá ôùí óõíáñôÞóåùí åßíáé case-insensitive, áëëÜ ãåíéêÜ åßíáé êáëÞ ôáêôéêÞ íá êáëïýìå ôéò óõíáñôÞóåéò üðùò åìöáíßæïíôáé óôç äÞëùóç ôïõò. </simpara> </note> <simpara> Ç PHP 3 äåí õðïóôçñßæåé ìåôáâëçôÝò áñéèìþí Þ ðáñáìÝôñïõò óôéò óõíáñôÞóåéò, ðáñüëï ðïõ ïé ðñïêáèïñéóìÝíåò ðáñÜìåôñïé õðïóôçñßæïíôáé (âëÝðå <link linkend="functions.arguments.default">ÔéìÝò ðñïêáèïñéóìÝíùí ðáñáìÝôñùí</link> ãéá ðåñéóóüôåñåò ðëçñïöïñßåò). Ç PHP 4 õðïóôçñßæåé êáé ôá äõï: âëÝðå <link linkend="functions.variable-arg-list">Ëßóôåò ìåôáâëçôïý ìÞêïõò ðáñáìÝôñùí </link> êáé ôéò áíáöïñÝò óôéò óõíáñôÞóåéò ãéá ôéò <function>func_num_args</function>, <function>func_get_arg</function>, êáé <function>func_get_args</function> ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. </simpara> </sect1> <sect1 id="functions.arguments"> <title>ÐáñÜìåôñïé óõíáñôÞóåùí</title> <simpara> Ç ðëçñïöïñßá ìðïñåß íá ðåñÜóåé óôéò óõíáñôÞóåéò äéáìÝóïõ ôçò ëßóôáò ðáñáìÝôñùí, ç ïðïßá åßíáé ìéá ëßóôá ìåôáâëçôþí Þ/êáé óôáèåñþí ðïõ äéá÷ùñßæïíôáé ìå êüììáôá. </simpara> <para> Ç PHP õðïóôçñßæåé ôï ðÝñáóìá ôùí ðáñáìÝôñùí ìå ôéìÞ (ôï ðñïêáèïñéóìÝíï), <link linkend="functions.arguments.by-reference">ðÝñáóìá ìå áíáöïñÜ</link>, êáé <link linkend="functions.arguments.default">ðñïêáèïñéóìÝíåò ôéìÝò ðáñáìÝôñùí</link>. Ïé ëßóôåò ðáñáìÝôñùí ìåôáâëçôïý ìÞêïõò õðïóôçñßæïíôáé ìüíï áðü ôçí PHP 4 êáé ìåôÜ. ÂëÝðå <link linkend="functions.variable-arg-list">ëßóôåò ðáñáìÝôñùí ìåôáâëçôïý ìÞêïõò </link> êáé ôéò áíáöïñÝò óõíáñôÞóåùí ãéá ôéò <function>func_num_args</function>, <function>func_get_arg</function>, êáé <function>func_get_args</function> ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. ¸íá ðáñüìïéï áðïôÝëåóìá ìðïñåß íá åðéôåõ÷èåß óôçí PHP 3 ðåñíþíôáò Ýíáò ðßíáêá ðáñáìÝôñùí óôç óõíÜñôçóç: <informalexample> <programlisting role="php"> <![CDATA[ function takes_array($input) { echo "$input[0] + $input[1] = ", $input[0]+$input[1]; } ]]> </programlisting> </informalexample> </para> <sect2 id="functions.arguments.by-reference"> <title>ÊÜíïíôáò ôéò ðáñáìÝôñïõò íá ðåñíÜíå ìå áíáöïñÜ</title> <simpara> Åßíáé ðñïêáèïñéóìÝíï üôéïé ðáñÜìåôñïé ôùí óõíáñôÞóåùí ìåôáâéâÜæïíôáé ìå ôéìÞ (by value) (Ýôóé þóôå áí áëëÜîåôå ôçí ôéìÞ ìéáò ðáñáìÝôñïõ ìÝóá óôç óõíÜñôçóç, áõôÞ äåí áëëÜîåé Ýîù áðü ôç óõíÜñôçóç). Áí èÝëåôå íá åðéôñÝøåôå óå ìéá óõíÜñôçóç íá áëëÜîåé ôéò ðáñáìÝôñïõò ôçò, èá ðñÝðåé íá ôéò ðåñÜóåôå ìå áíáöïñÜ. </simpara> <para> Áí èÝëåôå ìéá ðáñÜìåôñïò óõíÜñôçóçò íá ôçí ðåñíÜôå ðÜíôá ìå áíáöïñÜ, ìðïñåßôå íá âÜëåôå ùò ðñüèåìá Ýíá ampersand (&amp;) óôï üíïìá ôçò ðáñáìÝôñïõ óôüí ïñéóìü ôçò óõíÜñôçóçò: <informalexample> <programlisting role="php"> <![CDATA[ function add_some_extra(&$string) { $string .= 'and something extra.'; } $str = 'This is a string, '; add_some_extra($str); echo $str; // outputs 'This is a string, and something extra.' ]]> </programlisting> </informalexample> </para> </sect2> <sect2 id="functions.arguments.default"> <title>ÐñïêáèïñéóìÝíåò ôéìÝò óõíáñôÞóåùí</title> <para> ÌÉá óõíÜñôçóç ìðïñåß íá ïñßóåé ðñïêáèïñéóìÝíåò ôéìÝò óáí ôç C++ ãéá âáèìùôÝò ðáñáìÝôñïõò ùò áêïëïýèùò: <informalexample> <programlisting role="php"> <![CDATA[ function makecoffee ($type = "cappuccino") { return "Making a cup of $type.\n"; } echo makecoffee (); echo makecoffee ("espresso"); ]]> </programlisting> </informalexample> </para> <para> Ôï áðïôÝëåóìá ôïõ ðáñáêÜôù êþäéêá åßíáé: <screen> Making a cup of cappuccino. Making a cup of espresso. </screen> </para> <simpara> Ç ðñïêáèïñéóìÝíç ôéìÞ ðñÝðåé íá åßíáé ìéá óôáèåñÞ Ýêöñáóç, ü÷é (ãéá ðáñÜäåéãìá) ìéá ìåôáâëçôÞ Þ Ýíá ìÝëïò ìéáò êëÜóçò. </simpara> <para> Óçìåéþóôå üôé üôáí ÷ñçóéìïðïéïýìå ðñïêáèïñéóìÝíåò ðáñáìÝôñïõò, ïðïéåóäÞðïôå ðñïêáèïñéóìÝíåò èá ðñÝðåé íá åßíáé óôç äåîéÜ ìåñéÜ áðü ïðïéåóäÞðïôå ìç êáèïñéóìÝíåò ðáñáìÝôñïõò, äéáöïñåôéêÜ, ôá ðñÜãìáôá äå èá äïõëÝøïõí üðùò ðåñéìÝíïõìå. Èåùñåßóôå ôï áêüëïõèï êïììÜôé êþäéêá: <informalexample> <programlisting role="php"> <![CDATA[ function makeyogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n"; } echo makeyogurt ("raspberry"); // won't work as expected ]]> </programlisting> </informalexample> </para> <para> The output of the above example is: <screen> Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41 Making a bowl of raspberry . </screen> </para> <para> Ôþñá, óõãêñßíåôå ôï ðáñáðÜíù ìå áõôü: <informalexample> <programlisting role="php"> <![CDATA[ function makeyogurt ($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour.\n"; } echo makeyogurt ("raspberry"); // works as expected ]]> </programlisting> </informalexample> </para> <para> Ôï áðïôÝëåóìá ôïõ ðáñáäåßãìáôïò åßíáé: <screen> Making a bowl of acidophilus raspberry. </screen> </para> </sect2> <sect2 id="functions.variable-arg-list"> <title>Ëßóôåò ìåôáâëçôïý ìÞêïõò ðáñáìÝôñùí</title> <simpara> Ç PHP 4 õðïóôçñßæåé ëßóôåò ðáñáìÝôñùí ìåôáâëçôïý ìÞêïõò óôéò óõíáñôÞóåéò ðïõ êáèïñßæïíôáé áðü ôïí ÷ñÞóôç. Áõôü åßíáé áñêåôÜ åýêïëï, ÷ñçóéìïðïéþíôáò ôéò <function>func_num_args</function>, <function>func_get_arg</function>, êáé <function>func_get_args</function> óõíáñôÞóåéò. </simpara> <simpara> Êáìéá éäéáßôåñç óýíôáîç äåí áðáéôåßôáé, êáé ïé ëßóôåò ðáñáìÝôñùí ìðïñïýí ìå óáöÞíåéá íá ðáñá÷èïýí ìå ôïõò ïñéóìïýò ôùí óõíáñôÞóåùí êáé íá óõìðåñéöÝñïíôáé êáíïíéêÜ. </simpara> </sect2> </sect1> <sect1 id="functions.returning-values"> <title>ÅðéóôñÝöïíôáò ôéìÝò</title> <para> Ïé ôéìÝò åðéóôñÝöïíôáé ÷ñçóéìïðïéþíôáò ôçí ðñïáéñåôéêÞ äÞëùóç åðéóôñïöÞò (return). ÏðïéóäÞðïôå ôýðïò ìðïñåß íá åðéóôñáöåß, óõìðåñéëáìâáíïìÝíïõ ëßóôåò êáé áíôéêåßìåíá. Áõôü ðñïêáëåß ôç óõíÜñôçóç íá óôáìáôÞóåé êáé ç åêôÝëåóç ôçò áìÝóùò êáé íá ðåñÜóåé ï Ýëåã÷ïò ðßóù óôç ãñáììÞ áðü ôçí ïðïßá ôçí êáëÝóáìå. ÂëÝðå <function>return</function> ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. <informalexample> <programlisting role="php"> <![CDATA[ function square ($num) { return $num * $num; } echo square (4); // outputs '16'. ]]> </programlisting> </informalexample> </para> <para> Äåí ìðïñïýí íá óáò åðéóôñáöïýí ðïëëÝò ôéìÝò áðü ìéá óõíÜñôçóç, áëëÜ ðáñüìïéá áðïôåëÝóìáôá ìðïñïýí íá åðéôåõ÷èïýí åðéóôñÝöïíôáò ìéáò ëßóôá. <informalexample> <programlisting role="php"> <![CDATA[ function small_numbers() { return array (0, 1, 2); } list ($zero, $one, $two) = small_numbers(); ]]> </programlisting> </informalexample> </para> <para> Ãéá íá åðéóôñÝøåôå ìéá áíáöïñÜ áðü ìéá óõíÜñôçóç, ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôïí ôåëåóôÞ áíáöïñÜò &amp; ôüóï óôç äÞëùóç ôçò óõíÜñôçóçò üóï êáé üôáí áíáèÝôå ôçí åðéóôñåöüìåíç ôéìÞ óå ìéá ìåôáâëçôÞ: <informalexample> <programlisting role="php"> <![CDATA[ function &returns_reference() { return $someref; } $newref =& returns_reference(); ]]> </programlisting> </informalexample> </para> <simpara> Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò óôéò áíáöïñÝò, ðáñáêáëþ åëÝíîôå ôï <link linkend="language.references">ÅîÞãçóç áíáöïñþí</link>. </simpara> </sect1> <sect1 id="functions.old-syntax"> <title><literal>old_function</literal></title> <simpara> Ç äÞëùóç <literal>old_function</literal> óáò åðéôñÝðåé íá äçëþóåôå ìéá óõíÜñôçóç ÷ñçóéìïðïéþíôáò ìéá óýíôáîç üìïé ìå ôçí PHP/FI2 (åêôüò ôïõ üôé ðñÝðåé íá áíôéêáôáóôÞóåôå ôçí 'function' ìå ôçí 'old_function'. </simpara> <simpara> Ôï ÷áñáêôçñéóôéêü áõôü ðñÝðåé íá ÷ñçóéìïðïéåßôáé ìüíï ìå ôïí ìåôáôñïðÝá ôçò PHP/FI2->PHP 3. </simpara> <warning> <para> Ïé óõíáñôÞóåéò ðïõ äçëþíïíôáé ùò <literal>old_function</literal> äåí ìðïñïýí íá êëçèïýí áðü ôïí åóùôåñéêü êþäéêá ôçò PHP. ÁíÜìåóá óå Üëëá ðñÜãìáôá, áõôü óçìáßíåé üôé äåí ìðïñåßôå íá ôéò ÷ñçóéìïðïéÞóåôå óå óõíáñôÞóåéò üðùò ç <function>usort</function>, <function>array_walk</function>, êáé <function>register_shutdown_function</function>. Ìðïñåßôå íá îåðåñÜóåôå áõôüíï ôïí ðåñéïñéóìü ãñÜöïíôáò ìéá wrapper óõíÜñôçóç (óå êáíïíéêÞ PHP 3 ìïñöÞ) ðïõ èá êáëåß ôçí <literal>old_function</literal>. </para> </warning> </sect1> <sect1 id="functions.variable-functions"> <title>ÌåôáâëçôÝò óõíáñôÞóåéò</title> <para> Ç PHP õðïóôçñßæåé ôçí Ýííïéá ôùí ìåôáâëçôþí óõíáñôÞóåùí. Áõôü óçìáßíåé ðùò áí Ýíá üíïìá ìåôáâëçôÞò Ý÷åéðáñåíèÝóåéò, ç PHP èá øÜîåé ãéá ìéá óõíÜñôçóç ìå ôï ßäéï üíïìá ðïõ ðïõ ôçò äßíåé ç ìåôáâëçôÞ êáé èá ðñïóðáèÞóåé íá ôï åêôåëÝóåé. ÁíÜìåóá óôá Üëëá ðñÜãìáôá, áõôü ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôçí õëïðïßçóç callbacks, ðßíáêåò óõíáñôÞóåùí êá. </para> <para> Ïé ìåôáâëçôÝò óõíáñôÞóåéò äå èá äïõëÝøïõí ìå äïìÝò ãëþóóáò üðùò ïé <function>echo</function>, <function>print</function>, <function>unset</function>, <function>isset</function>, <function>empty</function>, <function>include</function>, <function>require</function> êáé Üëëåò ðáñüìïéåò. ×ñåéÜæåôå íá ÷ñçóéìïðïéÞóåôå ôç äéêÞ óáò wrapper óõíÜñôçóç ãéá íá ÷ñçóéìïðïéÞóåôå ïðïéáäÞðïôå áðü ôéò äïìÝò ùò ìåôáâëçôÞ óõíÜñôçóç. </para> <para> <example> <title>ÐáñÜäåéãìá ìåôáâëçôÞò óõíÜñôçóçò</title> <programlisting role="php"> <![CDATA[ <?php function foo() { echo "In foo()<br>\n"; } function bar($arg = '') { echo "In bar(); argument was '$arg'.<br>\n"; } // This is a wrapper function around echo function echoit($string) { echo $string; } $func = 'foo'; $func(); // This calls foo() $func = 'bar'; $func('test'); // This calls bar() $func = 'echoit'; $func('test'); // This calls echoit() ?> ]]> </programlisting> </example> </para> <para> Ìðïñåßôå åðßóçò íá êáëÝóåôå ôç ìÝèïäï åíüò áíôéêåéìÝíïõ ÷ñçóéìïðïéþíôáò ôï ÷áñáêôçñéóôéêü ôùí ìåôáâëçôþí óõíáñôÞóåùí. <example> <title>ÐáñÜäåéãìá ìåôáâëçôÞò ìåèüäïõ</title> <programlisting role="php"> <![CDATA[ <?php class Foo { function Var() { $name = 'Bar'; $this->$name(); // This calls the Bar() method } function Bar() { echo "This is Bar"; } } $foo = new Foo(); $funcname = "Var"; $foo->$funcname(); // This calls $foo->Var() ?> ]]> </programlisting> </example> </para> <para> Äåßôå åðßóçò <function>call_user_func</function>, <link linkend="language.variables.variable"> variable variables</link> êáé <function>function_exists</function>. </para> </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/language/operators.xml +++ phpdoc/language/operators.xml <?xml version="1.0" encoding="iso-8859-7"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.50 Maintainer: daphnie Status: ready --> <chapter id="language.operators"> <title>ÔåëåóôÝò</title> <simpara> </simpara> <sect1 id="language.operators.precedence"> <title>Ðñïôåñáéüôçôá ôåëåóôþí</title> <para> Ç ðñïôåñáéüôçôá ôùí ôåëåóôþí êáèïñßæåé ôï ðüóï "óöé÷ôÜ" óõíäÝåé äõï åêöñÜóåéò ìáæß. Ãéá ðáñÜäåéãìá, óôçí Ýêöñáóç <literal>1 + 5 * 3</literal>, ç áðÜíôçóç åßíáé <literal>16</literal> êáé ü÷é <literal>18</literal> åðåéäÞ ï ôåëåóôÞò ôïõ ðïëëáðëáóéáóìïý ("*") Ý÷åé ðñïôåñáéüôçôá óå ó÷Ýóç ìå ôïí ôåëåóôÞ ôçò ðñüóèåóçò ("+"). Ïé ðáñåíèÝóåéò ìðïñïýí íá ÷ñçóéìïðïéçèïýí ãéá íá áëëÜîïõí ôéò ðñïôåñáéüôçôåò, áí ÷ñåéÜæåôáé. Ãéá ðáñÜäåéãìá: <literal>(1 + 5) * 3</literal> Ý÷åé ùò áðïôÝëåóìá ôï <literal>18</literal>. </para> <para> Ï áêüëïõèïò ðßíáêáò ðáñáèÝôåé ôçí ðñïôåñáéüôçôá ôùí ôåëåóôþí ìå ôçí ÷áìçëüôåñç ðñïôåñáéüôçôá íá ðáñáèÝôåôáé ðñþôç. <table> <title>Operator Precedence</title> <tgroup cols="2"> <thead> <row> <entry>Ó÷åôéêüôçôá</entry> <entry>ÔåëåóôÝò</entry> </row> </thead> <tbody> <row> <entry>áñéóôåñÞ</entry> <entry>,</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>or</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>xor</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>and</entry> </row> <row> <entry>äåîéÜ</entry> <entry>print</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry> = += -= *= /= .= %= &amp;= |= ^= &lt;&lt;= &gt;&gt;= </entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>? :</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>||</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>&amp;&amp;</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>|</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>^</entry> </row> <row> <entry>áñéóôåñÞ</entry> <entry>&amp;</entry> </row> <row> <entry>×ùñßò óýíäåóç</entry> <entry>== != === !==</entry> </row> <row> <entry>×ùñßò óýíäåóç</entry> <entry>&lt; &lt;= &gt; &gt;=</entry> </row> <row> <entry>ÁñéóôåñÞ</entry> <entry>&lt;&lt; &gt;&gt;</entry> </row> <row> <entry>ÁñéóôåñÞ</entry> <entry>+ - .</entry> </row> <row> <entry>ÁñéóôåñÞ</entry> <entry>* / %</entry> </row> <row> <entry>ÄåîéÜ</entry> <entry>! ~ ++ -- (int) (float) (string) (array) (object) @</entry> </row> <row> <entry>ÄåîéÜ</entry> <entry>[</entry> </row> <row> <entry>×ùñßò óýíäåóç</entry> <entry>new</entry> </row> </tbody> </tgroup> </table> </para> <note> <para> Ðáñüëï ðïõ ôï <literal>!</literal> Ý÷åé ðñïôåñáéüôçôá Ýíáíôé ôïõ <literal>=</literal>, ç PHP åðéôñÝðåé åêöñÜóåéò ðáñüìïéåò ìå ôçí áêüëïõèç: <literal>if (!$a = foo())</literal>, êáé óå êÜèå ðåñßðôùóç ôï áðïôÝëåóìá áðü ôçí <literal>foo()</literal> ôïðïèåôåßôáé óôçí <varname>$a</varname>. </para> </note> </sect1> <sect1 id="language.operators.arithmetic"> <title><Áñéèìçôéêïß ÔåëåóôÝò/title> <simpara> ÈõìÜóôå ôç âáóéêÞ áñéèìçôéêÞ áðü ôï ó÷ïëåßï; ÁõôÜ äïõëÝõïõí áêñéâþò üðùò åêåßíç. </simpara> <table> <title>Áñéèìçôéêïß ÔåëåóôÝò</title> <tgroup cols="3"> <thead> <row> <entry>ÐáñÜäåéãìá</entry> <entry>¼íïìá</entry> <entry>ÁðïôÝëåóìá</entry> </row> </thead> <tbody> <row> <entry>$a + $b</entry> <entry>Ðñüóèåóç</entry> <entry>ÁðïôÝëåóìá ôïõ $a êáé ôïõ $b.</entry> </row> <row> <entry>$a - $b</entry> <entry>Áöáßñåóç</entry> <entry>ÄéáöïñÜ ôïõ $a êáé ôïõ $b.</entry> </row> <row> <entry>$a * $b</entry> <entry>Ðïëëáðëáóéáóìüò</entry> <entry>Ãéíüìåíï ôïõ $a êáé ôïõ $b.</entry> </row> <row> <entry>$a / $b</entry> <entry>Äéáßñåóç</entry> <entry>ÁðïôÝëåóìá ôïõ $a êáé ôïõ $b.</entry> </row> <row> <entry>$a % $b</entry> <entry>Modulus</entry> <entry>Õðüëïéðï ôïõ $a äéáéñåìÝíïõ áðü ôï $b.</entry> </row> </tbody> </tgroup> </table> <simpara> Ï ôåëåóôÞò äéáßñåóçò ("/") åðéóôñÝöåé ìéá ôéìÞ êéíçôÞò õðïäéáóôïëÞò êÜèå öïñÜ, áêüìç êáé áí ïé äõï ôåëåóôÝò åßíáé áêÝñáéïé (Þ strings ðïõ ìåôáôñÝðïíôáé óå áêÝñáéïõò). </simpara> <simpara> Äåßôå åðßóçò êáé ôï åã÷åéñßäéï óôç óåëßäá <link linkend="ref.math">ÌáèçìáôéêÝò ÓõíáñôÞóåéò</link>. </simpara> <!-- <simpara> Ï ôåëåóôÞò äéáßñåóçò ("/") åðéóôñÝöåé ìéá áêÝñáéá ôéìÞ (ôï áðïôÝëåóìá ìéáò áêÝñáéáò äéáßñåóçò) áí äõï ôåëåóôÝò åßíáé áêÝñáéïé (Þ strings ðïõ ìåôáôñÝðïíôáé óå áêÝñáéïõò) êáé ôï áðïôÝëåóìá åßíáé áêÝñáéïò. Áí ïðïéïóäÞðïôå ôåëåóôÞò Ý÷åé ôéìÞ êéíçôÞò õðïäéáóôïëÞò, Þ ôï áðïôÝëåóìá ôçò ðñÜîçò åßíáé ìç-áêÝñáéá ôéìÞ, åðéóôñÝöåôáé ìéá ôéìÞ êéíçôÞò õðïäéáóôïëÞò. </simpara> --> </sect1> <sect1 id="language.operators.assignment"> <title>ÁíÜèåóç Ôåëåóôþí</title> <simpara> Ï âáóéêüò ôåëåóôÞò áíÜèåóçò åßíáé ï "=". Ç ðñþôç óáò óêÝøç ßóùò åßíáé üôé áõôü åßíáé ôï ßäéï ìå ôï "equal to". ÁëëÜ äåí åßíáé. Áõôü ðïõ ðñáãìáôéêÜ óçìáßíåé åßíáé üôé ôï áñéóôåñü ìÝñïò ôïõ ôåëåóôÞ ðáßñíåé ôçí ôéìÞ ôçò Ýêöñáóçò óôá äåîéÜ (äçëáäÞ, "áíôßèåôáé ôï"). </simpara> <para> Ç ôéìÞ ìéáò Ýêöñáóçò áíÜèåóçò åßíáé ç ôéìÞ ðïõ ôçò áíáôßèåôáé. ÄçëáäÞ, ç ôéìÞ ôïõ "$a = 3" åßíáé 3. Áõôü óáò åðéôñÝðåé íá êÜíåôå ìåñéêÜ ðñÜãìáôá: <informalexample> <programlisting role="php"> <![CDATA[ $a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4. ]]> </programlisting> </informalexample> </para> <para> ÐÝñá áðü ôï âáóéêü ôåëåóôÞ áíÜèåóçò, õðÜñ÷ïõí "óýíèåôïé ôåëåóôÝò" ãéá üëïõò ôïõò äõáäéêïýò áñéèìçôéêïýò êáé áëöáñéèìçôéêïýò ôåëåóôÝò ðïõ óáò åðéôñÝðïõí íá ÷ñçóéìïðïéÞóåôå ìéá Ýêöñáóç êáé åí óõíå÷åßá íá èÝóåôå ôçí ôéìÞ óôï áðïôÝëåóìá ôçò Ýêöñáóçò. Ãéá ðáñÜäåéãìá: <informalexample> <programlisting role="php"> <![CDATA[ $a = 3; $a += 5; // sets $a to 8, as if we had said: $a = $a + 5; $b = "Hello "; $b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!"; ]]> </programlisting> </informalexample> </para> <para> Óçìåéþóôå üôé ç áíÜèåóç áíôéãñÜöåé ôçí áñ÷éêÞ ìåôáâëçôÞ óôçí êáéíïýñéá (áíÜèåóç ìå ôéìÞ), óõíåðþò áëëáãÝò óôï Ýíá äå èá åðçñåÜóïõí ôï Üëëï. Áõôü ìðïñåß åðßóçò íá Ý÷åé ó÷Ýóç áí ÷ñåéáóôåßíá áíôéãñÜøåôå êÜôé üðùò Ýíáí ìåãÜëï ðßíáêá ìÝóá óå Ýíá óôåíü loop. Ç PHP 4 õðïóôçñßæåé ôçí áíÜèåóç ìå áíáöïñÜ, ÷ñçóéìïðïéþíôáò ôç <computeroutput>$var = &amp;$othervar;</computeroutput> óýíôáîç, áëëÜ áõôü äåí åßíáé äõíáôü óôçí in PHP 3. 'ÁíÜèåóç ìå áíáöïñÜ' óçìáßíåé ðùò êáé ïé äõï ìåôáâëçôÝò êáôáëÞãïõí óôï íá äåß÷íïõí óôá ßäéá äåäïìÝíá, êáé ôßðïôá äåí áíôéãñÜöåôáé ðïõèåíÜ. Ãéá íá ìÜèåôå ðåñéóóüôåñá ãéá ôéò áíáöïñÝò, ðáñáêáëþ äéáâÜóôå ôï <link linkend="language.references">ÅîÞãçóç ôùí áíáöïñþí</link>. </para> </sect1> <sect1 id="language.operators.bitwise"> <title>ÔåëåóôÝò Bitwise</title> <simpara> Ïé ôåëåóôÝò Bitwise óáò åðéôñÝðïõí íá ìåôáôñÝøåôå óõãêåêñéìÝíá åíüò áêåñáßïõò íá åßíáé on Þ off. Áí êáé ïé äõï áñéóôåñïß êáé äåîéïß ðáñÜìåôñïé åßíáé strings, ï ôåëåóôÞò bitwise èá åíåñãÞóåé óôïõò ÷áñáêôÞñåò áõôïý ôïõ string. </simpara> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php echo 12 ^ 9; // Outputs '5' echo "12" ^ "9"; // Outputs the Backspace character (ascii 8) // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8 echo "hallo" ^ "hello"; // Outputs the ascii values #0 #4 #0 #0 #0 // 'a' ^ 'e' = #4 ?> ]]> </programlisting> </informalexample> </para> <table> <title>ÔåëåóôÝò Bitwise</title> <tgroup cols="3"> <thead> <row> <entry>ÐáñÜäåéãìá</entry> <entry>¼íïìá</entry> <entry>ÁðïôÝëåóìá</entry> </row> </thead> <tbody> <row> <entry>$a &amp; $b</entry> <entry>And</entry> <entry>Ôá Bits "óåôÜñïíôáé" (are set) ôüóï óôï $a üóï êáé óôï $b.</entry> </row> <row> <entry>$a | $b</entry> <entry>Or</entry> <entry>Ôá Bits "óåôÜñïíôáé" åßôå óôï $a åßôå óôï $b.</entry> </row> <row> <entry>$a ^ $b</entry> <entry>Xor</entry> <entry> Ôá Bits "óåôÜñïíôáé" åßôå óôï $a åßôå óôï $b áëëÜ ü÷é êáé óôá äõï. </entry> </row> <row> <entry>~ $a</entry> <entry>Not</entry> <entry> Ôá Bits ðïõ äåí "óåôÜñïíôáé" óôï $a, Þ ôï áíôßèåôï. </entry> </row> <row> <entry>$a &lt;&lt; $b</entry> <entry>Shift left</entry> <entry> Ìåôáêßíçóç (óéöôÜñéóìá) ôùí bits ôïõ $a $b âçìÜôùí óôá áñéóôåñÜ (êÜèå âÞìá óçìáßíåé "ðïëëáðëáóéáóìü åðß äýï") </entry> </row> <row> <entry>$a &gt;&gt; $b</entry> <entry>Shift right</entry> <entry> Ìåôáêßíçóç (óéöôÜñéóìá) ôùí bits ôïõ $a $b âçìÜôùí óôá äåîéÜ (êÜèå âÞìá óçìáßíåé "äéáßñåóç ìå ôï äýï") </entry> </row> </tbody> </tgroup> </table> </sect1> <sect1 id="language.operators.comparison"> <title>ÔåëåóôÝò óýãêñéóçò</title> <simpara> Ïé ôåëåóôÝò óýãêñéóçò, üðùò ëÝåé êáé ôï üíïìá ôïõò, óáò åðéôñÝðïõí íá óõãêñßíåôå äõï ôéìÝò. </simpara> <table> <title>ÔåëåóôÝò Óýãêñéóçò</title> <tgroup cols="3"> <thead> <row> <entry>ÐáñÜäåéãìá</entry> <entry>¼íïìá</entry> <entry>ÁðïôÝëåóìá</entry> </row> </thead> <tbody> <row> <entry>$a == $b</entry> <entry>Éóüôçôá</entry> <entry>&true; áí ôï $a åßíáé ßóï ìå ôï $b.</entry> </row> <row> <entry>$a === $b</entry> <entry>Ïìïéüôçôá</entry> <entry> &true; áí ôï $a åßíáé ßóï ìå ôï $b, êáé åßíáé ôïõ ßäéïõ ôýðïõ. (Óôçí PHP 4 ìüíï) </entry> </row> <row> <entry>$a != $b</entry> <entry>¢íéóá</entry> <entry>&true; áí ôï $a äåí åßíáé ßóï ìå ôï $b.</entry> </row> <row> <entry>$a &lt;&gt; $b</entry> <entry>¼÷é ßóá</entry> <entry>&true; áí ôï $a äåí åßíáé ßóï ìå ôï $b.</entry> </row> <row> <entry>$a !== $b</entry> <entry>Áíüìïéá</entry> <entry> &true; áí ôï $a äåí åßíáé ßóï ìå ôï $b, Þ áí äåí åßíáé ôïõ ßäéïõ ôýðïõ. (óôçí PHP 4 ìüíï) </entry> </row> <row> <entry>$a &lt; $b</entry> <entry>Ìéêñüôåñï áðü</entry> <entry>&true; áí ôï $a åßíáé áêñéâþò ìéêñüôåñï áðü ôï $b.</entry> </row> <row> <entry>$a &gt; $b</entry> <entry>Ìåãáëýôåñï áðü</entry> <entry>&true; áí ôï $a åßíáé áõóôõñþò ìåãáëýôåñï áðü ôï $b.</entry> </row> <row> <entry>$a &lt;= $b</entry> <entry>Ìéêñüôåñï áðü Þ ßóï ìå </entry> <entry>&true; áí ôï $a åßíáé ìéêñüôåñï áðü Þ ßóï ìå ôï $b.</entry> </row> <row> <entry>$a &gt;= $b</entry> <entry>Ìåãáëýôåñï áðü Þ ßóï ìå </entry> <entry>&true; áí ôï $a åßíáé ìåãáëýôåñï áðü Þ ßóï ìå ôï $b.</entry> </row> </tbody> </tgroup> </table> <para> Áêüìç Ýíáò ôåëåóôÞò õðüèåóçò åßíáé ï "?:" (Þ ôñéáäéêüò) ôåëåóôÞò, ï ïðïßïò ëåéôïõñãåß üðùò êáé óôç C êáé óå ðïëëÝò Üëëåò ãëþóóåò. <informalexample> <programlisting role="php"> <![CDATA[ <?php // Example usage for: Ternary Operator $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; // The above is identical to this if/else statement if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?> ]]> </programlisting> </informalexample> Ç Ýêöñáóç <literal>(expr1) ? (expr2) : (expr3)</literal> ðáßñíåé ôçí ôéìÞ <replaceable>expr2</replaceable> áí <replaceable>expr1</replaceable> ãßíåé &true;, êáé ôçí <replaceable>expr3</replaceable> áí <replaceable>expr1</replaceable> ãßíåé &false;. </para> <para> Äåßôå åðßóçò ôçí <function>strcasecmp</function>, <function>strcmp</function>, êáé ôï ôìÞìá ôïõ åã÷åéñéäßïõ ó÷åôéêÜ ìå ôïõò <link linkend="language.types">Ôýðïõò</link>. </para> </sect1> <sect1 id="language.operators.errorcontrol"> <title>ÔåëåóôÝò ÅëÝã÷ïõ Ëáèþí</title> <simpara> Ç PHP õðïóôçñßæåé Ýíáí ôåëåóôÞ åëÝã÷ïõ ëáèþí: ôï óýìâïëï (@). ¼ôáí ðñïçãåßôáé óå ìéá Ýêöñáóç óôçí PHP, ïðïéïäÞðïôå ìÞíõìá ëÜèïõò ðïõ ßóùò äçìéïõñãçèåß áðü áõôÞ ôçí Ýêöñáóç èá áãíïçèåß. </simpara> <simpara> Áí ôï ÷áñáêôçñéóôéêü ôùí <link linkend="ini.track-errors">track_errors</link> Ý÷åé åíåñãïðïéçèåß, ïðïéïäÞðïôå ìÞíõìá ëÜèïõò ðïõ èá äçìéïõñãçèåß áðü ôçí Ýêöñáóç èá óùèåß óôç ìåôáâëçôÞ <link linkend="reserved.variables.phperrormsg">$php_errormsg</link>. ÁõôÞ ç ìåôáâëçôÞ èá áëëÜæåé áíÜëïãá ìå êÜèå ëÜèïò, óõíåðþò èá ðñÝðåé íá ôçí åëÝã÷åôå óõ÷íÜ áí èÝëåôå íá ôç ÷ñçóéìïðïéåßôå. </simpara> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php /* Intentional file error */ $my_file = @file ('non_existent_file') or die ("Failed opening file: error was '$php_errormsg'"); // this works for any expression, not just functions: $value = @$cache[$key]; // will not issue a notice if the index $key doesn't exist. ?> ]]> </programlisting> </informalexample> </para> <note> <simpara> Ï ôåëåóôÞò @ äïõëåýåé ìüíï óôéò <link linkend="language.expressions">åêöñÜóåéò</link>. ¸íáò áðëüò êáíüíáò åßíáé ï åîÞò: áí ìðïñåßôå íá ðÜñåôå ôçí ôéìÞ áðü êÜôé, ìðïñåßôáé íá âÜëåôå ùò ðñüèåìá ó'áõôü, ôï @. Ãéá ðáñÜäåéãìá, ìðïñåßôå íá ôï ðñïóèÝóåôå óôéò ìåôáâëçôÝò, óôéò óõíáñôÞóåéò êáé óôéò êëÞóåéò ôïõ <function>include</function> , óôéò óôáèåñÝò ê.ï.ê. Äåí ìðïñåßôå íá ôï ðñïóèÝóåôå óôïõò ïñéóìïýò óõíáñôÞóåùí Þ êëÜóåùí, Þ õðïèåôéêþí äïìþí üðùò ôéò <literal>if</literal> êáé <literal>foreach</literal> ê.ï.ê. </simpara> </note> <simpara> Äåßôå åðßóçò ôçí <function>error_reporting</function> êáé ôï ôìÞìá ôïõ åã÷åéñéäßïõ <link linkend="ref.errorfunc">ÓõíáñôÞóåéò åëÝã÷ïõ ëáèþí êáé óýíäåóçò</link>. </simpara> <note> <para> Ôï ðñüèåìá ôïõ ôåëåóôÞ åëÝã÷ïõ ëáèþí "@" äå èá áðïôñÝøåé ôçí åìöÜíéóç ôùí ìçíõìÜôùí ðïõ åßíáé áðïôÝëåóìá áðü ëÜèç ìåôáãëþôôéóçò. </para> </note> <warning> <para> Ðñïò ôï ðáñüí ôï ðñüèåìá åëÝã÷ïõ ëáèþí "@" èá áðïôñÝøåé áêüìç êáé ôçí áíáöïñÜ ëáèþí ãéá êñßóéìá ëÜèç ðïõ èá ôåñìáôßóïõí ôçí åêôÝëåóç ôïõ êþäéêá. ÁíÜìåóá óå Üëëá, áõôü óçìáßíåé üôé áí ÷ñçóéìïðïéåßôå ôï "@" ãéá íá åîáöáíßóåôå ôá ëÜèç áðü ìéá óõãêåêñéìÝíç óõíÜñôçóç Þ åßôå äåí åßíáé äéáèÝóéìï Þ äåí Ý÷åé ãñáöåß óùóôÜ, ôï script èá óôáìáôÞóåé áìÝóùò åêåß ÷ùñßò êÜðïéá Ýíäåéîç ãéá ôçí áéôßá. </para> </warning> </sect1> <sect1 id="language.operators.execution"> <title>ÔåëåóôÝò ÅêôÝëåóçò</title> <para> Ç PHP õðïóôçñßæåé Ýíáí ôåëåóôÞ åêôÝëåóçò: backticks (``). Óçìåéþóôå üôé áõôÜ äåí åßíáé ìïíÜ åéóáãùãéêÜ (single-quotes)! Ç PHP èá ðñïóðáèÞóåé íá åêôåëÝóåé ôï ðåñéå÷üìåíï ôùí backticks óáí åíôïëÞ shell. Ôï áðïôÝëåóìá èá åðéóôñáöåß (ð.÷., äå èá ðåôá÷ôåß áðëÜ óôçí Ýîïäï, áëëÜ ìðïñåß íá áíáôåèåß óå ìéá ìåôáâëçôÞ). Ç ÷ñÞóç ôïõ backtick ôåëåóôÞ åßíáé üìïéá ìå ôç <function>shell_exec</function>. <informalexample> <programlisting role="php"> <![CDATA[ $output = `ls -al`; echo "<pre>$output</pre>"; ]]> </programlisting> </informalexample> </para> <note> <para> Ï backtick ôåëåóôÞò åßíáé áðåíåñãïðïéçìÝíïò óå &safemode; åßíáé åíåñãïðïéçìÝíïò Þ ç <function>shell_exec</function> åßíáé áðåíåñãïðïéçìÝíç. </para> </note> <para> Äåßôå åðßóçò ôï ôìÞìá ôïõ åã÷åéñéäßïõ <link linkend="ref.exec">ÓõíáñôÞóåéò ÅêôÝëåóçò ÐñïãñáììÜôùí</link>, <function>popen</function> <function>proc_open</function>, êáé <link linkend="features.commandline">×ñçóéìïðïéþíôáò ôçí PHP áðü commandline</link>. </para> </sect1> <sect1 id="language.operators.increment"> <title>ÔåëåóôÝò Áýîçóçò/Ìåéþóçò</title> <para> Ç PHP õðïóôçñßæåé ôåëåóôÝò ðñü- êáé ìåôÜ- áýîçóçò üðùò ç C . </para> <table> <title>ÔåëåóôÝò Áýîçóçò/Ìåéþóçò</title> <tgroup cols="3"> <thead> <row> <entry>ÐáñÜäåéãìá</entry> <entry>¼íïìá</entry> <entry>ÁðïôÝëåóìá</entry> </row> </thead> <tbody> <row> <entry>++$a</entry> <entry>Ðñï-áýîçóç</entry> <entry>ÁõîÜíåé ôï $a êáôÜ Ýíá êáé åðéóôñÝöåé ôï $a.</entry> </row> <row> <entry>$a++</entry> <entry>ÌåôÜ-áýîçóç</entry> <entry>ÅðéóôñÝöåé ôï $a, êáé ìåôÜ áõîÜíåé ôï $a êáôÜ Ýíá.</entry> </row> <row> <entry>--$a</entry> <entry>Ðñï-ìåßùóç</entry> <entry>Ìåéþíåé ôï $a êáôÜ Ýíá, êáé ìåôÜ åðéóôñÝöåé ôï $a.</entry> </row> <row> <entry>$a--</entry> <entry>ÌåôÜ-ìåßùóç</entry> <entry>ÅðéóôñÝöåé ôï $a, êáé ìåôÜ ìåéþíåé ôï $a êáôÜ Ýíá.</entry> </row> </tbody> </tgroup> </table> <para> Åäþ Ý÷ïõìå Ýíá áðëü ðáñÜäåéãìá êþäéêá: <informalexample> <programlisting role="php"> <![CDATA[ <?php echo "<h3>Postincrement</h3>"; $a = 5; echo "Should be 5: " . $a++ . "<br />\n"; echo "Should be 6: " . $a . "<br />\n"; echo "<h3>Preincrement</h3>"; $a = 5; echo "Should be 6: " . ++$a . "<br />\n"; echo "Should be 6: " . $a . "<br />\n"; echo "<h3>Postdecrement</h3>"; $a = 5; echo "Should be 5: " . $a-- . "<br />\n"; echo "Should be 4: " . $a . "<br />\n"; echo "<h3>Predecrement</h3>"; $a = 5; echo "Should be 4: " . --$a . "<br />\n"; echo "Should be 4: " . $a . "<br />\n"; ?> ]]> </programlisting> </informalexample> </para> <para> Ç PHP áêïëïõèåß ôéò óõíèÞêåò ôçò Perl üôáí äéá÷åéñßæåôáé áñéèìçôéêÝò ðñÜîåéò óå ìåôáâëçôÝò ÷áñáêôÞñùí êáé ü÷é áõôÝò ôéò C. Ãéá ðáñÜäåéãìá, óôçí Perl ôï 'Z'+1 åðéóôñÝöåé 'AA', åíþ óôç C ôï 'Z'+1 åðéóôñÝöåé '[' ( ord('Z') == 90, ord('[') == 91 ). Óçìåéþóôå üôé ïé ìåôáâëçôÝò ÷áñáêôÞñùí ìðïñïýí íá áõîçèïýí áëëÜ ü÷é íá ìåéùèïýí. <example> <title>ÁñéèìçôéêÝò ÐñÜîåéò óå ÌåôáâëçôÝò ×áñáêôÞñùí</title> <programlisting role="php"> <![CDATA[ <?php $i = 'W'; for($n=0; $n<6; $n++) echo ++$i . "\n"; /* Produces the output similar to the following: X Y Z AA AB AC */ ?> ]]> </programlisting> </example> </para> </sect1> <sect1 id="language.operators.logical"> <title>Ëïãéêïß ÔåëåóôÝò</title> <table> <title>Ëïãéêïß ÔåëåóôÝò</title> <tgroup cols="3"> <thead> <row> <entry>ÐáñÜäåéãìá</entry> <entry>¼íïìá</entry> <entry>ÁðïôÝëåóìá</entry> </row> </thead> <tbody> <row> <entry>$a and $b</entry> <entry>And</entry> <entry>&true; áí êáé ôï $a êáé ôï $b åßíáé &true;.</entry> </row> <row> <entry>$a or $b</entry> <entry>Or</entry> <entry>&true; áí åßôå ôï $a åßôå ôï $b åßíáé &true;.</entry> </row> <row> <entry>$a xor $b</entry> <entry>Xor</entry> <entry>&true; áí åßôå ôï $a åßôå ôï $b åßíáé &true;, áëëÜ ü÷é êáé ôá äõï.</entry> </row> <row> <entry>! $a</entry> <entry>Not</entry> <entry>&true; áí ôï $a äåí åßíáé &true;.</entry> </row> <row> <entry>$a &amp;&amp; $b</entry> <entry>And</entry> <entry>&true; áí êáé ôï $a êáé ôï $b åßíáé &true;.</entry> </row> <row> <entry>$a || $b</entry> <entry>Or</entry> <entry>&true; áí åßôå ôï $a åßôå ôï $b åßíáé &true;.</entry> </row> </tbody> </tgroup> </table> <simpara> Ï ëüãïò ãéá ôéò äõï äéáöïñåôéêÝò ìïñöÝò ôùí "and" êáé ôùí "or" ôåëåóôþí åßíáé üôé ëåéôïõñãïýí ìå äéáöïñåôéêÝò ðñïôåñáéüôçôåò. (ÂëÝðå <link linkend="language.operators.precedence">Ðñïôåñáéüôçôá Ôåëåóôþí</link>.) </simpara> </sect1> <sect1 id="language.operators.string"> <title>ÔåëåóôÝò Áëöáñéèìçôéêþí (String)</title> <simpara> ÕðÜñ÷ïõí äýï ôåëåóôÝò <type>string</type>. Ï ðñþôïò åßíáé ï ôåëåóôÞò óýíäåóçò ('.'), ï ïðïßïò åðéóôñÝöåé ôç óýíäåóç ôùí áñéóôåñþí êáé ôùí äåîéþí ðáñáìÝôñùí. Ï äåýôåñïò åßíáé ï ôåëåóôÞò áíÜèåóçò óýíäåóçò ('.='), ï ïðïßïò ðñïóèÝôåé ôçí ðáñÜìåôñï ôçò äåîéÜ ðëåõñÜ óôçí ðáñÜìåôñï ôçò áñéóôåñÞò ðëåõñÜò. Ðáñáêáëþ äéáâÜóôå ôçí<link linkend="language.operators.assignment">ÁíÜèåóç Ôåëåóôþí</link> ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. </simpara> <para> <informalexample> <programlisting role="php"> <![CDATA[ $a = "Hello "; $b = $a . "World!"; // now $b contains "Hello World!" $a = "Hello "; $a .= "World!"; // now $a contains "Hello World!" ]]> </programlisting> </informalexample> </para> <para> Äåßôå åðßóçò ôï ôìÞìá ôïõ åã÷åéñéäßïõ ãéá ôïõò <link linkend="language.types.string">Ôýðïõò Áëöáñéèìçôéêþí</link> êáé ãéá ôéò <link linkend="ref.strings">ÓõíáñôÞóåéò Áëöáñéèìçôéêþí</link>. </para> </sect1> <sect1 id="language.operators.array"> <title>ÔåëåóôÝò ÐéíÜêùí</title> <simpara> Ï ìüíïò ôåëåóôÞò ðßíáêá óôçí PHP åßíáé ï <literal>+</literal> ôåëåóôÞò. Áõôüò ðñïóèÝôåé ôç äåîéÜ ìåñéÜ ôïõ ðßíáêá óôçí áñéóôåñÞ ìåñéÜ, åíþ ôá äéðëá êëåéäéÜ ÄÅÍ ðáñáâëÝðïíôáé. </simpara> <para> <informalexample> <programlisting role="php"> <![CDATA[ $a = array("a" => "apple", "b" => "banana"); $b = array("a" =>"pear", "b" => "strawberry", "c" => "cherry"); $c = $a + $b; var_dump($c); ]]> </programlisting> </informalexample> ¼ôáí åêôåëåóôåß, ôï script èá åêôõðþóåé ôá áêüëïõèá: <screen role="php"> <![CDATA[ array(3) { ["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "cherry" } ]]> </screen> </para> <para> Äåßôå åðßóçò ôï ôìÞìá ôïõ åã÷åéñéäßïõ ãéá ôïõò <link linkend="language.types.array">Ôýðïõò ÐéíÜêùí</link> êáé ãéá ôéò <link linkend="ref.array">ÓõíáñôÞóåéò ÐéíÜêùí</link>. </para> </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 -->
« previous php.doc (#969353785) next »