> Hi all,
>
> I have only one caveat with the \ separator, which is that it
> is a little bit too similar to division with /, and can
> result in some confusing code like:
>
> <?php
> namespace name1 {
> class name2{}
> }
> define('name1', 1);
> define('name2', 2);
>
> $a = new name1\name2;
> $b = name1/name2;
> ?>
>
> The same issue exists with all colon based separators (that
> sounds bad when read the wrong way...) because of the ternary
> operator, and :: with static classes/methods.
>
> <?php
> namespace name1 {
> class name2{}
> }
> define('name1', 1);
> define('name2', 2);
> // this may be a parse error with the current namespace
> patch, // but need not be if we use -> class name1 {
> const name2 = 1;
> }
>
> $a = new name1:::name2;
> $b = name1::name2; // do you see the difference? I get confused ?>
>
> What about using the T_OBJECT_OPERATOR? This is a parse
> error in existing versions, and also implies some separation.
>
> <?php
> namespace name1 {
> class name2{}
> }
> define('name1', 1);
> define('name2', 2);
> // this may be a parse error with the current namespace
> patch, // but need not be if we use -> class name1 {
> const name2 = 1;
> }
>
> $a = new name1->name2;
> $b = name1::name2;
> ?>
>
> I also proposed on IRC using \\ as this is similar to netware driver
> separators:
>
> <?php
> define('name1', 1);
> define('name2', 2);
>
> $a = new name1\\name2;
> $b = name1/name2;
> ?>
>
> However, I know Andrei hated this :). I very much prefer the
> use of ->, as this has the same advantage as :: of "rhyming"
> with current syntax.
Hi,
I was thinking -> too.. Had ideas of namespaces being object instances
in their own right..
namespace foo { const ACONST = '1'; class bar {} }
echo $foo->bar; // some mangled internal class name
(foo_bar_123 or something) to make it unique
$a = new $foo->bar();
$ref = new ReflectionClass($foo->bar);
Jared
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php