Re: Simple Namespace Proposal
| From: | Guilherme Blanco | Date: | Sat, 21 Jul 2007 18:31:52 +0000 |
| Subject: | Re: Simple Namespace Proposal | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-31148@lists.php.net to get a copy of this message | ||
Sorry for posting it so late, but I would like to clarify the things
in my head. I hope a final post with compiled definitions and final
decisions is useful for other people interested in this new
functionality.
1 - The official namespace support will not use curly braces? Never or
can be in the future?
IMHO, I am +1 in this subject. A quick explanation why I am a brace's
fan. How do you declare a class?
<?php
class Foo;
public $bar = 0;
static public function test() { echo "Here Mommy!!" }
Or...
<?php
class Foo {
public $bar = 0;
static public function test() { echo "Here Mommy!!" }
}
I suggest to get things standard-ized. If a class uses braces,
functions uses braces, why not use braces for namespaces...?
I read in previous messages (I think from Dmitry) that you want to use
one namespace per file (and allow same namespace in multiple files),
but why should PHP control it? Keep things flexible and let the PHP
programmer decide what should he do.
If he wants to define a global function and a namespace in a single
file, it's up to him decide to do it or not.
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
is better than include hundreds, as you may know.
If you restrict it to a single namespace per file, Doctrine will load
the hundreds, and not a single one anymore. So, any effort to compile
scripts into a single file will be useless. Lukas Smith can provide
more in this subject about how Doctrine works, but I just want to
illustrate that you'll break some functionalities that current exists.
I have another questions regarding commom namespace usage... I am
interested to use, as most of all developers.
2 - Overwrite will be implemented?
Something like: overwrite function strlen( ... ) { ... }
3 - How will PHP behavior on a situation that you have a naming conflict?
Something like...
<?php
class Bar { ... }
<?php
namespace Foo {
class Bar { ... }
}
<?php
import Foo;
$b = new Bar();
4 - Will namespaces support anything else than functions and classes
(like constants, for example)?
Thanks in advance...
Best regards,
On 7/16/07, David Zülke <dz@bitxtender.com> wrote:
As usual, consider Hans' opinion identical to mine ;) Nice job, can't wait for it being out in the wild. David Am 15.07.2007 um 02:37 schrieb Hans Lellelid: As someone that has long clamoured for namespaces in PHP, I have to say that this proposal by Dmitry is exactly what I & others have been hoping for in PHP. Thanks, Dmitry, for creating this patch. I'm sure there are going to be some peculiarities that need to be sorted out, but I can't wait until we can start writing code to use this! I am confidentl that this is something that will be embraced by the OOP PHP community as soon as it is available. Hans Andrei Zmievski wrote:-- Guilherme Blanco - Web Developer CBC - Certified Bindows Consultant Cell Phone: +55 (16) 9166-6902 MSN: guilhermeblanco@hotmail.com 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 -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.phpI love this. Let's ship it. -Andrei On Jul 5, 2007, at 6:49 AM, Dmitry Stogov wrote:I think the following example is much better, however I am not sure it's a right direction. Namespaces are intended to declare names that can conflict with names from other namespaces (including global namespace), do I am not sure that we need special keyword for internal functions. We'll think little bit more. Anyway thank you for feedback and idea. <?php namespace UTF8; overloaded class Exception { } overloaded function strlen() { } ?> Thanks. Dmitry.-----Original Message----- From: david.coallier@gmail.com [mailto:david.coallier@gmail.com] On Behalf Of David Coallier Sent: Thursday, July 05, 2007 5:35 PM To: Stefan Priebsch Cc: Dmitry Stogov; PHP internals Subject: Re: [PHP-DEV] Simple Namespace Proposal On 7/5/07, Stefan Priebsch <stefan.priebsch@e-novative.de> wrote:-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.phpDavid Coallier schrieb:warning whenI would probably be in favor of throwing a notice or aright awaysomeone modifies a built-in function (or even throw an exception) and that way as soon as you do such thing you would knowfor peoplethat you modified something and you would know where the modification happened which would make things much easierfeature asdeveloping and debugging applications.The problem is that this kind of overloading makes a nicewell. This is runied by throwing an exception, and cautiousdeveloperswill at least get nervous when they see a notice. I could imagine that by adding something like "overrides foo()" or "overloads foo()" to a function/method declaration thedeveloper couldmake clear that he willingly overrides a built-in function, and if this is missing, an exception is being thrown. This may be a little over the top, however.Yep I see what you mean.. could even be something like: namespace UTF8; overrides {strlen(); strcmp();} function strlen($string) {return strlen($string) + 666; // This is just anexample ! } ... I kinda like the overrides part, however I wonder if people will actually use it.. Oh well.. my two cents are now gone.Kind regards, Stefan ---- David Coallier, Founder & Software Architect, Agora Production (http://agoraproduction.com) 51.42.06.70.18 -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.phpe-novative> - We make IT work for you.e-novative GmbH - HR: Amtsgericht München HRB 139407 Sitz: Wolfratshausen - GF: Dipl. Inform. Stefan Priebsch http://www.e-novative.de