Re: [PATCH] Inclusion of new constant: NS_SEPARATOR

From: Date: Thu, 18 Jun 2009 18:35:19 +0000
Subject: Re: [PATCH] Inclusion of new constant: NS_SEPARATOR
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-44363@lists.php.net to get a copy of this message
On a PC (finnish layout) it's 2. AltGr + ? :) And it's not a big deal, people like me are quite used to doing that. People with Macs should be used to weird key combinations anyway. :D --Jani Guilherme Blanco kirjoitti:
Actually... on finnish keyboard on mac... 3 (Shift + Alt + 7). =P I don't know if there's another constant to it... that's my first patch ever! Anyway... let's see other's opinions. Cheers, On Thu, Jun 18, 2009 at 12:57 PM, Kalle Sommer Nielsen<kalle@php.net> wrote:
Hi Guilherme 2009/6/18 Guilherme Blanco <guilhermeblanco@gmail.com>:
Hi guys, First of all, don't laugh! =D The idea and patch are extremely simple. Based on recent experiments with Namespaces and FQCN thing I spoke with Johannes a couple of days ago, I decided to dive into source and try a possible patch. That's my first attempt to contribution to internals. Mainly I try to help on PHP side.
I don't think we should introduce a new special constant for this, seems sort of useless to me, I know theres issues with FQCN, but I'll rather write: $ns = '\\' . $dynamic_class_name . '\\' . $blah; than: $ns = NS_SEPARATOR . $dynamic_class_name . NS_SEPARATOR . $blah; so im a -1 for introducing this in PHP, even though im using a danish keyboard that doesn't have \, but thats not a reason not to press 2 buttons at once, that you're already used to if you code.
The idea is to create a new global constant NS_SEPARATOR to be used. I know constants are used to represent internal values or values that differ between different OS's, but the main idea here is to prevent possible issues from user land and also to help people that do not have "\" key in their keyboard (like finnish keyboards). Here is a clear usage of this new constant: http://www.php.net/manual/en/language.namespaces.dynamic.php#91552 I don't really know if the file is the right one to have this constant, but it works for me perfectly. Index: Zend/zend_constants.c =================================================================== RCS file: /repository/ZendEngine2/zend_constants.c,v retrieving revision 1.71.2.5.2.7.2.17 diff -u -r1.71.2.5.2.7.2.17 zend_constants.c
--- Zend/zend_constants.c       12 Jan 2009 21:54:37 -0000
1.71.2.5.2.7.2.17
+++ Zend/zend_constants.c       18 Jun 2009 15:29:52 -0000
-151,6 +151,13 @@
               c.value.type = IS_BOOL;
               zend_register_constant(&c TSRMLS_CC);
       }
+
+       /* Namespace separator constant */
+       static char nssep_str[2];
+       nssep_str[0] = '\\';
+       nssep_str[1] = '\0';
+
+       REGISTER_MAIN_STRING_CONSTANT("NS_SEPARATOR", nssep_str,
CONST_PERSISTENT | CONST_CS); }
This is most likely to break the Windows build without looking at the code any closer because of the declaring, just use: REGISTER_MAIN_STRING_CONSTANT("NS_SEPARATOR", ZEND_NS_NAME, CONST_PERSISTENT | CONST_CS); (I think it was ZEND_NS_NAME for the seperator)
Cheers, -- Guilherme Blanco - Web Developer CBC - Certified Bindows Consultant Cell Phone: +55 (16) 9215-8480 MSN: guilhermeblanco@hotmail.com URL: http://blog.bisna.com São Paulo - SP/Brazil -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
-- regrads, Kalle Sommer Nielsen kalle@php.net


« previous php.internals (#44363) next »