Cool i do like the idea of havin the namespace keyword
for defining namespaces....

namespace foo
{
}

class bar
{
}

calling $foo = new foo(); shouldn't work
don't think you should ever have an 'instance' 
of a namespace. namespaces should be used for static uses.

how about
//default namespace is foo
namespace class foo
{
 function strlen()
 {
 }
 function test()
 {
   return strlen(); //calls foo::strlen
 }
}
class bar
{
// default namespace is global
 function strlen()
 {
 }
 function test()
 {
   return strlen(); //calls main::strlen
 }
}
namespace foobar
{
 function strlen()
 {
 }
 function test()
 {
   return strlen(); //calls foobar::strlen
 }
}

$foo = new foo(); 
$bar = new bar();
$foobar = new foobar(); //error - no class foobar
foobar::strlen(); //works

something like that...

and having a namespace with no class 
can only have static members and functions.


--- Andi Gutmans <[EMAIL PROTECTED]> wrote:
> There is another option.
> We could have an additional reserved word called "namespace" which would be 
> exactly the same as a class but when you call a method of the namespace the 
> scope would change to it like it does today in ZE2 for classes (i.e. 
> lookups for functions would be first local to the namespace and only then 
> to the global scope). Calling a method on a class would not switch into the 
> classes namespace and its methods would still need to be called either by 
> $this->method() or self::method(). In both cases, accessing the 
> classes/namespaces static variables would be via self::$var in order not to 
> mix it up with the functions local variables (which is a very clean way of 
> separating the two). Also we could make classes defined as namespaces not 
> to be instantiable.
> So we could have the following:
> 
> <?
>          namespace Foo {

class Foo implements namspace
{
}

>                  function strlen()
>                  {
>                  }
>                  function hello()
>                  {
>                          strlen(); <-- calls self::strlen();
>                          main::strlen(); <-- calls global strlen();
>                          self::strlen(); <-- calls self::strlen();
>                  }
>          }
> 
>          class Bar {
>                  function strlen()
>                  {
> 
>                  }
>                  function hello()
>                  {
>                          strlen(); <-- calls main::strlen();
>                          main::strlen(); <-- calls global strlen();
>                          self::strlen(); <-- calls self::strlen();
>                  }
>          }
> }
> 
> I'm not sure if this won't just end up being confusing because we'd have 
> two things which are extremely similar with just minor differences in 
> semantics but it's an option.
> 
> Andi
> 
> At 10:35 AM 2/8/2002 -0800, brad lafountain wrote:
> >Yeah it has bit me too...
> >I would totaly be for getting rid of the "default" namespace
> >and force developers to use $this-> it pretty much has become
> >normal practice... i really don't like the main namespace ither.
> >
> >Just my thoughts....
> >  - Brad
> >
> >--- Harald Radi <[EMAIL PROTECTED]> wrote:
> > >
> > > -----BEGIN PGP SIGNED MESSAGE-----
> > > Hash: SHA1
> > >
> > > this is exactly what affects me and what i mean with 'a lot'
> > >
> > > > The question is how often does this breakage actually happen
> > > > in real life
> > > > and not theoretically on the mailing list.
> > > >
> > > > >-------
> > > > >Script as follows will be executed w/o any error
> > > > >and gives totally wrong result.
> > > > >
> > > > >This is really "bad" BC problem, is't this?
> > > > >
> > > > ><?php
> > > > >
> > > > >compute_rate() {
> > > > >   // do standard rate calc here
> > > > >   return $some_rate;
> > > > >}
> > > > >
> > > > >class A() {
> > > > >    function get_rate($is_class_specific_rate) {
> > > > >       if (%is_class_specific_rate) {
> > > > >          // compute class specific rate
> > > > >           return $this->compute_rate();
> > > > >       }
> > > > >       else {
> > > > >          // use standard rate function
> > > > >          return compute_rate();
> > > > >       }
> > > > >    }
> > > > >
> > > > >    function compute_rate() {
> > > > >       // do a little different rate calc here
> > > > >       return $some_rate;
> > > > >    }
> > > > >}
> > > > >
> > > > >?>
> > >
> > > -----BEGIN PGP SIGNATURE-----
> > > Version: PGP 7.0.4
> > >
> > > iQA/AwUBPGQYcK1+myS9SSHxEQIoVgCg+mM26j4ZsrwhYNEet8NJFlE3eVYAoOIh
> > > EpCvN8NynvHGu54e63kNkzJ6
> > > =GuQI
> > > -----END PGP SIGNATURE-----
> > >
> >
> >
> >__________________________________________________
> >Do You Yahoo!?
> >Send FREE Valentine eCards with Yahoo! Greetings!
> >http://greetings.yahoo.com
> 


__________________________________________________
Do You Yahoo!?
Send FREE Valentine eCards with Yahoo! Greetings!
http://greetings.yahoo.com

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to