[prev in list] [next in list] [prev in thread] [next in thread]
List: php-doc-cvs
Subject: [DOC-CVS] =?utf-8?q?svn:_/phpdoc/en/trunk/language/_functions.xml?=
From: Pasindu_De_Silva <pasindu () php ! net>
Date: 2015-07-18 12:06:20
Message-ID: svn-pasindu-1437221180-337187-1241741405 () svn ! php ! net
[Download RAW message or body]
pasindu Sat, 18 Jul 2015 12:06:20 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=337187
Log:
Added initial return type declarations
Changed paths:
U phpdoc/en/trunk/language/functions.xml
Modified: phpdoc/en/trunk/language/functions.xml
===================================================================
--- phpdoc/en/trunk/language/functions.xml 2015-07-18 07:50:57 UTC (rev 337186)
+++ phpdoc/en/trunk/language/functions.xml 2015-07-18 12:06:20 UTC (rev 337187)
@@ -774,6 +774,8 @@
returned.
</para>
</note>
+ <sect2>
+ <title>Use of return</title>
<para>
<example>
<title>Use of <function>return</function></title>
@@ -837,6 +839,123 @@
For more information on references, please check out <link
linkend="language.references">References Explained</link>.
</simpara>
+ </sect2>
+ <sect2>
+ <title>Return Type Declarations</title>
+ <para>
+ PHP 7 Introduces Return type delaration where function can be forced to \
return + type that is defined. This done by setting
+ <link linkend="control-structures.declare">declare(strict_types=1)</link>, if \
declare strict_type directive + is set to 0 or not set functions are weakly \
type checked. The directive will have affect on all functions + delcared in \
the file and not functions either included by this file or files that includes this \
file, are + affected. The place where the function is called from is \
irrelavent. + Declarable types are Classes, Interfaces, Array, Int, Float, \
String and Bool. + </para>
+ <para>
+ <example>
+ <title>Affect of strict_types directive </title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+declare(strict_types=1); // file1.php
+
+// file 1 - strictly type checked
+// file 2 - weakly type checked
+
+include "file2.php";
+
+var_dump(a()); // works correctly
+var_dump(b()); // fatal TypeError
+
+
+function b() : int{
+ return "1";
+}
+?>
+
+
+<?php
+// file2.php
+function a(): int{
+ return "1";
+}
+
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <para>
+ <example>
+ <title>More Return types</title>
+ <para>
+ The function signature must match of the parent, if the parent has not been \
declared the + return type the child can declare a type.
+ </para>
+ <programlisting role="php">
+<![CDATA[
+<?php
+declare(strict_types=1);
+
+interface Numbers{
+ abstract public function one() : int ;
+ abstract public function two(); // no return type defined
+}
+
+class NumClass implements Numbers
+{
+ public function one() : int { // return type same as abstract
+ return 0;
+ }
+
+ public function two() { // return type defined due lack of return type
+ return 2; // in parent abstract function
+ }
+}
+
+class display extends NumClass
+{
+ public function one() : int // return type same as parent
+ {
+ return 1;
+ }
+
+ public function two() : int // return type same as parent
+ {
+ return 2;
+ }
+}
+
+$dis = new display();
+var_dump($dis->one());
+var_dump($dis->two());
+
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <para>
+ <example>
+ <title>Return a class;</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+declare(strict_types=1);
+
+interface A {
+ static function make();
+}
+class B implements A {
+ static function make(): B { //valid
+ return new B();
+ }
+}
+]]>
+ </programlisting>
+ </example>
+ </para>
+ </sect2>
</sect1>
<sect1 xml:id="functions.variable-functions">
@@ -1259,4 +1378,4 @@
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
--->
+-->
\ No newline at end of file
--
PHP Documentation Commits Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic