PHP needs better funtion organization, naming and parameter specifications. WAS: Form Validation Issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Thursday 24 May 2007 00:51, Greg Donald wrote:
> > As I watch PHP de-evolve into Java, I find myself wanting something
> > lighter weight and with a smaller syntax. 
> 
> PHP has long since spawned into something uncontrollable. Compare the 
> number of functions (and its aliases) to eg Ruby. The string 
> functions in 
> particular are absolutely bloated, eg ltrim, trim & rtrim - 
> WTF. Why not just have trim() and have the option of specifying
whether 
> left/right/both? The same goes for the case-sensitive and 
> case-insensitive versions of functions.

Amen.

The other thing is why isn't there any consistency with the function
names?! It seems they're just randomly picked by whatever developer
decided to make it. Isn't there some governing body who can at least
make things consistent?

Examples:
=========
isset() vs. is_null()

htmlentities() vs html_entity_decode()
(and why is there "htmlentities()" and "htmlentities" both listed here:
 http://us2.php.net/manual/en/ref.strings.php )

quoted_printable_decode() vs quotemeta()

strnatcasecmp - Case insensitive string comparisons using a "natural
order" algorithm 
strnatcmp - String comparisons using a "natural order" algorithm 
strncasecmp - Binary safe case-insensitive string comparison of the
first n characters 
strncmp - Binary safe string comparison of the first n characters 
strcasecmp - Binary safe case-insensitive string comparison 

Why do we need all those. Use a 'binary' flag. And secondly, why does
this have the word "case" instead of "i" like the other string functions
use?

Why do I have to do this extra function call when I bet a majority of
the time this is what you want:
$bar = 'HELLO WORLD!';
$bar = ucfirst(strtolower($bar)); // Hello world!
Why can't ucfirst() have a parameter to do what I want.

arsort() and asort() should be array_sort() and array_sort_reverse()

natcasesort() should be array_sort_natural() with parameters to make it
case insensitive. Same for the rest of the sort functions.

Why isn't unlink() named file_delete() as that's what it does? 
It's counter-intuitive.

Why do we need lchgrp() and chgrp() -- why do I care if it's a link or
not? 
Use a parameter flag if this is really a concern for people.

No specific examples, but I know I've run into this stuff before:
Sometimes the needle is first, sometimes the haystack is.
Sometimes the pattern and subject are out of order.

Also simple things like naming conventions:
The "ereg*" functions call it $string, 
but the "preg" functions call it $subject

Etc...

I'm sure I could list easily 50 or 100 more examples here, but the point
is that PHP needs some structure and organization and a document/spec
that says how functions should be named and the order of parameters,
ideally with 'optional' ones to the end (much like they are now in most
cases). I would like them all to be prefixed with the general category
they're in, so it's easy to find them. Such as "array_*", "str_*",
"file_*", "date_*"etc.

I think someone should go through and make proper names for all the
current functions, keeping "aliases" for the existing ones to what they
are now (so as not to break everyone's code), but only show the new
proper names in the manual so developers don't use the sloppy old names.
That would at least start us on the right path to fixing this chaos.

BTW, don't get me wrong, I LOVE PHP. 
I've used it every day for maybe 10 years now. 
I just don't think the current "methodology" (or lack thereof) can keep
sustaining the growth of the releases. I also think it's increasingly
confusing for new users to learn. I'm still confused and always
referencing the docs for function names and parameter orders. 

If there needs to be a governing body for the naming, etc as mentioned,
I'm happy to volunteer my time / talent. Contact me off list for resume,
etc and set me up an SVN account and I'll bring my machette and get this
fixed. :)

Daevid Vincent
http://daevid.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux