4 ms·
Curious as to why you think PHP's namespace feature (I'll assume you mean the real one introduced in 5.3) sucks. It seems like you didn't read the whole RFC. T
by ary 16y ago
Curious as to why you think PHP's namespace feature (I'll assume you mean the real one introduced in 5.3) sucks.
It seems like you didn't read the whole RFC. The configuration is actually very simple (just the command line options), and not meant to be a front-facing HTTP server.
- acabal 16y agoOff the top of my head, because when I want to reference My.Namespace.MyClass.Foo(), I have to do something like: use \My\Namespace; $var = new Namespace\MyClass(); $var->Foo(); I have to remember and type the parent namespace for every imported class I want to use. In a big project this gets to be too much typing and too much for my brain to remember. Contrast with say, C#: using My.Namespace; MyClass var = new MyClass(); var.Foo(); You import a namespace, and the compiler figures out what goes where without you having to remember anything. Plus the weird exceptions required for backwards compatibility, and the global namespace: I often forget where a root \ is required and where it isn't (not when declaring a namespace, but often--not always!--when referencing one). And of course there's the monstrous choice of namespace separator. End of the world? Not really. Sucks? Yeah. And possibly a dealbreaker for me for larger projects with complicated namespaces and lots of classes. I'd love for this to be just a misunderstanding on my part, because it would make my life a lot easier if PHP namespaces where more like C# ones!
- soulclap 16y agoHaven't worked with the PHP namespaces a lot myself yet but there seem to be more convenient ways: http://www.rooftopsolutions.nl/blog/taking-advantage-of-php-namespaces-with-older-code http://www.rooftopsolutions.nl/blog/taking-advantage-of-php-... And a good read on PHP namespaces in general: http://weierophinney.net/matthew/archives/254-Why-PHP-Namespaces-Matter.html http://weierophinney.net/matthew/archives/254-Why-PHP-Namesp...
- ary 16y agoYour PHP example is possible to write in a way that is nearly identical to the C# you provided. Why are you prefixing Namespace\MyClass(); when you declared your namespace scope in 'use \My\Namespace'? Your assignment can just be: $var = new MyClass(); This brings it pretty much in line with your C# example. Have you read the PHP docs on namespaces? http://www.php.net/manual/en/language.namespaces.basics.php http://www.php.net/manual/en/language.namespaces.basics.php
- acabal 16y agoThat's the point; the PHP doesn't compile without the namespace prefix. In fact I just tried it to make sure I'm remembering right.
- ary 16y agoI was taken aback when I tested this for myself as my initial reading of the PHP docs lead me to a very different conclusion. You are indeed correct, and in my opinion that is very broken. Touché.
- roel_v 16y agoYou can't import everything from a whole namespace, but you can do it on a per-class basis. The following works as expected: namespace My { class MyClass { public function Foo() { echo 'Foo'; } } } namespace { use My\MyClass; $var = new MyClass(); $var->Foo(); }