Those who pay attention to my occasional ramblings may remember that I
once suggested implementing "type hints", which is a more generic
version of this.  Type hints is like your string types, except that they
apply to any type.

I guess the core issue here is whether adding an int to zval or
zval.value.str is worth the cost.  With all the zval copying going on,
there will be a cpu overhead as well as memory.  Back when Andi moved
zval.value.strlen and zval.value.strval into the str struct, thus saving
4 bytes in the zval struct, PHP 3 was generally speeded up by 25%.  Not
sure if the PHP 4 or PHP 5 overhead will be in the same ballpark, but
it's something to think about.

IMHO the syntax you suggest is a bit terse, what about this instead:

echo url"http://$host:$port/$path";;

As for the SQL string type, there needs to be at least two, some
databases quote "'" as "''", others quote it as "\'".

But I would like to extend the idea beyond reformatting inserted
strings.  For example, for easy soap/xmlrpc serialization, being able to
tag a value as a date or some other soap/xmlrpc-specific type is very
useful.

 - Stig

On Thu, 2002-05-02 at 06:18, [EMAIL PROTECTED] wrote:
> Dear PHP developers,
> 
> I propose a feature that I call "string types". I have also already
> coded a first version of it that you can try. There's a bug for it
> here: http://bugs.php.net/?id=16480 and a homepage with a description
> and a patch here: http://nebuchadnezzar.zion.cz/php_strings.php
> Please be patient when downloading. The server is behind a 64k line.
> :-(
> 
> About the feature: It introduces five types of strings: plain string,
> SQL string, HTML string, URL (query) string and undefined (unknown
> type) string. The difference is in escaping characters that have
> special meaning in SQL (quotes, nul), HTML (ampersand, less-than,
> greater-than, double-quote) and URL (nearly everything except plain
> letters and digits). The conversion is done automatically when
> requested. This language extension is fully backwards-compatible;
> users who don't know about the new features (or don't want to know)
> need not worry: their existing scripts should work the same without
> any change. For users who do know about this and want to use it, I
> believe this new feature should bring significant improvement of code
> readability, reduction of code size and reduced probability of bugs.
> 
> I think that the best explanation is by example, so see this:
> 
> $data = p"a string with 'apostrophes', \"double-quotes\" etc.";
> mysql_query(s"INSERT INTO table VALUES ('$data')");
> 
> Because we include a plain string in an SQL string, the plain string
> is automatically converted to an SQL string, i.e. AddSlashes is
> applied to it. Strings from GET/POST/COOKIE have the right type,
> which makes it possible to easily write scripts that do not depend on
> the setting of magic_quotes_gpc. (An SQL string included in another
> SQL string is not converted, of course.)
> 
> Another one:
> 
> $data = p"a string with <less-than, >greater-than, &ampersand";
> echo h"<INPUT TYPE=HIDDEN NAME=parameter VALUE=\"$data\">";
> 
> Here, the $data string is automatically HtmlSpecialChars'ed when
> included in a HTML string.
> 
> Read more about it on the above mentioned homepage. Try it, test it,
> tell me what you think about it! Just remember that this is alpha
> code, and it is very little tested. I make no guarantees whatsoever,
> except that it has bugs. :-)
> 
> Please cc me in any replies. I am not subscribed to the list (so in
> fact, I don't know if it will allow me to post this). I realize that
> this is not a good practice, but I couldn't handle the loads of mail -
>  and according to http://www.php.net/mailing-lists.php this list
> isn't available in digest form. :-(
> 
> Thanks for your attention.
> 
> Vaclav Dvorak  ([EMAIL PROTECTED])
> http://nebuchadnezzar.zion.cz/
> 
> -- 
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php


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

Reply via email to