#45207 [Opn->Csd]: Incorrect or missing documentation for languages.variables
| From: | ross@php.net | Date: | Wed, 08 Oct 2008 19:51:04 +0000 |
| Subject: | #45207 [Opn->Csd]: Incorrect or missing documentation for languages.variables | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-1195@lists.php.net to get a copy of this message | ||
ID: 45207
Updated by: ross@php.net
Reported By: chrisvroberts at gmail dot com
-Status: Open
+Status: Closed
Bug Type: Documentation problem
Operating System: n/a
PHP Version: Irrelevant
Assigned To: ross
New Comment:
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
Previous Comments:
------------------------------------------------------------------------
[2008-10-08 19:31:49] ross@php.net
PHP is not a fully typed language, because of this variables' types are
only used depending on the context in which they are referred to.
I have a rather lengthy example to explain this (see below) but I'll
try to trim that down before it's committed.
// Example:
<?php
// Unset variable; outputs NULL
var_dump($unset_var);
// Boolean usage; outputs 'false'
echo("Boolean\n");
// See ternary operators for more on this syntax
echo($unset_bool ? "true\n" : "false\n");
echo("\n");
// String usage; outputs 'string(3) "abc"'
echo("String\n");
$unset_str .= 'abc';
var_dump($unset_str);
echo("\n");
// Integer usage; outputs 'int(25)'
echo("Integer\n");
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);
echo("\n");
// Float/double usage; outputs 'float(1.25)'
echo("Float\n");
$unset_float += 1.25;
var_dump($unset_float);
echo("\n");
// Array usage; outputs array(1) { [3]=> string(3) "def" }
echo("Array\n");
$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 =>
"def")
var_dump($unset_arr);
echo("\n");
// Object usage; creates new stdClass object (see
http://www.php.net/manual/en/reserved.classes.php)
// Outputs:
// object(stdClass)#1 (1) {
// ["foo"]=>
// string(3) "bar"
// }
echo("Object\n");
$unset_obj->foo = 'bar';
var_dump($unset_obj);
echo("\n");
?>
------------------------------------------------------------------------
[2008-06-08 12:13:23] chrisvroberts at gmail dot com
Description:
------------
On "http://www.php.net/manual/en/language.variables.php",
it says:
"It is not necessary to initialize variables in PHP however it is a
very good practice. Uninitialized variables have a default value of
their type - FALSE, zero, empty string or an empty array."
However, I was unable to find in the documentation how to define a
variable and specify it's type without assigning a value to it.
When a variable is declared and not initialized, which of the values
described above would the variable take.
If it is used in a context which specifies say boolean, then value
would be FALSE but if it is used in an overloaded context, which value
would it take and is there a precedence? Is this implementaitn rather
than language specific?
If it is possible to specify a variables type without assigning to it,
perhaps this should be described in the documentation in order to put
the above quote into context?
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=45207&edit=1