Unexpected T_PAAMAYIM_NEKUDOTAYIM in PHP 5.2.x
php, php-5.2
Solution
After looking at codepad:
if (is_object($result) === true)
{
$result::id = strval($xpto);
}
... should be
if (is_object($result) === true)
{
$result::$id = strval($xpto);
}
I corrected this in a new paste, and the error still exists... just letting you know about the problem in the demo code.
EDIT
Per PHP documentation page on `static` keyword,
As of PHP 5.3.0, it's possible to reference the class using a variable. The variable's value can not be a keyword (e.g. self, parent and static).
Unfortunately, no detail is given as to WHY to was otherwise in prior versions, nor do I see a workaround presented in the comments.
Because the class is static, though, you should be able to change the property directly:
function instance($xpto = null)
{
static $result = null;
if (is_null($result) === true)
{
$result = new xpto();
}
if (is_object($result) === true)
{
xpto::$id = strval($xpto)
}
return $result;
}
Problem
I'm having a hard time understanding why I'm getting an `Unexpected T_PAAMAYIM_NEKUDOTAYIM` error in the following code, which seems perfecly valid to me... ``` class xpto { public static $id = null; public function __construct() { } public static function getMyID() { return self::$id; } } function instance($xpto = null) { static $result = null; if (is_null($result) === true) { $result = new xpto(); } if (is_object($result) === true) { $result::$id = strval($xpto); } return $result; } ``` Output in PHP 5.3+: ``` echo var_dump(instance()->getMyID()) . "\n"; // null echo var_dump(instance('dev')->getMyID()) . "\n"; // dev echo var_dump(instance('prod')->getMyID()) . "\n"; // prod echo var_dump(instance()->getMyID()) . "\n"; // null ``` In prior versions however, I can't do `$result::$id = strval($xpto);`, does anyone know why? Are there any workarounds for this problem?