> -----Original Message-----
> From: Guilherme Blanco [mailto:[EMAIL PROTECTED]
> Sent: Monday, July 23, 2007 8:21 PM
> To: David Coallier
> Cc: David Zulke; Dmitry Stogov; Arpad Ray; Hans Lellelid; PHP
> internals
> Subject: Re: [PHP-DEV] Simple Namespace Proposal
>
>
> > >
> > > 2) In short and clear, why are braces not being used ?
> C++, C# uses
> > > it. (Short answer and if the answer is "Developer didn't
> want to do
> > > it..." just say "Usual"
> >
> > We are not C++. Python doesn't use braces.
> > The only neediness for braces is placing several namespaces
> into one
> > file, but one of the goal of our concept is avoiding this.
>
>
> Your answered like "We are not like C#, but we are like
> Python.". I'm not the one that will point that Python always
> try to be a unique language or will criticize you.
Ok. Look into Pascal, Ada, Modula, Oberon, ...
All of them allows only one module per file.
Java even allows one class per file.
> I've read dozen of PHP books, and what I suggested earlier is
> only based on what I've read. The topic is always entitled as
> "block scope". Since namespace is a block scope too, so it's
> a commom sense. It's easier to read, easier to understand, etc.
"Block scope" has nothing common with namespaces and classes.
Class declaration uses braces but it doesn't mean that it is a "block
scope".
> Your short answer is "no, because it's not needed, since
> there'll be only one namespace per file."
>
> It doesn't matter is one, two or hundreds namespaces are
> defined in a single file, but the KIS idea must remain.
> Stanislav mentioned that file names, directories, etc do not
> require braces.
>
> Ok, but we are not talking about File System, we are talking
> about language structure and standards. PHP uses braces to
> define new scope, like block scope, loops, if-else, switch,
> function, classes, etc.
Again. "block scope" or "block statement" may be used instead of statement,
but it doesn't relay with class and even function.
> But namespaces are different!
> Why different? It's another language functionality, as all
> others I mentioned. So, let's change the PHP to allow only
> one class per file, and remove the braces' need too. Classes
> are different too. Or maybe better... only one namespace per
> file and only in one file. Namespaces are different, as you
> said! If PHP supports more than one namespace per file, why
> not provide it to developers? It's a functionality, not a
> bug. Do not restrict functionalities because you do not like them.
Namespaces are really different. They like packages in Java and one file
cannot belong to several packages.
> I'm repeating... it's up to the PHP developer decide if he
> wants this or that way to code. Currently he's able to define
> more than one class in a single file. Ok, I don't do it, and
> will do one namespace per file (and continue one class per
> file), but I don't think that this restriction is really necessary.
>
> That's my final point, and my last try to talk about braces.
> Seems you do not like external ideas.
I developed concepts with braces and without and after thoughts and
discussions decide that having braces makes only mess.
Thanks. Dmitry.
>
> > > I'll give you an example... PHP Doctrine package has a
> lot of files,
> > > hundreds... there is a way to compile it in a single
> file, to save
> > > some memory usage for including these files. Including a
> single file
> >
> > Putting all code together in the same file rarely saves any
> > significant amount of memory and leads to a very messy code. Of
> > course, it's your application and your decision, but I
> don't see any
> > reason to promote such style on the language level. Anyway,
> if you can
> > do with everything in single file, I think having single namespace
> > won't hurt.
>
>
> It saves the time needed to include all the files and also
> the memory that it saves for calling require_once,
> include_once, etc. Forget this, it was only one illustration
> that such optimizations (what Doctrine call as compile into a
> single file) does. You keep all the hundred files but you
> have one "compiled" with all the code.
>
>
> > > 2 - Overwrite will be implemented?
> > > Something like: overwrite function strlen( ... ) { ... }
> >
> > What it's supposed to do?
>
> I think it's overload. Someone mentioned earlier and I was
> curious if you implemented this or not.
>
>
> > > <?php
> > > class Bar { ... }
> > >
> > > <?php
> > > namespace Foo {
> > > class Bar { ... }
> > > }
> > >
> > > <?php
> > > import Foo;
> >
> > For 100th time, import Foo is a no-op. I'm thinking about
> prohibiting
> > it at all... If you do import Foo::bar you'll get an error
> if Bar is
> > already defined.
>
> I was supposed to suggest triggering a E_NOTICE that Bar is
> already defined and instantiate the Bar class of "global".
> But if you want something more radical... =)
>
>
> > > 4 - Will namespaces support anything else than functions
> and classes
> > > (like constants, for example)?
> >
> > Not likely, since there's no such thing as free-form
> constant. Though,
> > in fact, we might add one (i.e. const X = 'foo' which is define('X',
> > 'foo')) ... But, if you need a constant, why not put it
> into a class?
>
> Bad example I did. I was supposed to ask for namespace level
> variables. Not in global scope, not in class scope. =)
>
>
>
> I have another questions regarding namespace support... well,
> about function support.
>
> 1- How will is_a, instanceof, will behave in this situation?
>
> $a = new NS1::SubNS1::MyClass();
>
> echo is_a( $a, "MyClass" ); ????? true/false?
> echo is_a( $a, "NS1::SubNS1::MyClass" ); ???
>
>
> 2- Will exist some namespace specific functions? Examples:
>
> $a = namespace_contains( "SomeClass" );
> $b = namespace_exists( "NS1" );
> $c = is_a_namespace_class ( $NS1ObjString );
> // ......
>
>
>
> Best regards,
>
> --
> Guilherme Blanco - Web Developer
> CBC - Certified Bindows Consultant
> Cell Phone: +55 (16) 9166-6902
> MSN: [EMAIL PROTECTED]
> URL: http://blog.bisna.com
> São Carlos - SP/Brazil
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php