For web development? You faggots bash PHP all the time. Is it because it's popular it's 'cool' not to like it?
Name:
Anonymous2007-08-20 4:59 ID:xB93OUZg
PHP originally inserted data received over the network directly into the global namespace, leading to confusion between trusted and untrusted data, and unnecessary potential for security holes in PHP applications. This behavior was turned off by default from version 4.2.0 released in April 2002. However, this feature is still being used by some legacy applications
Name:
Anonymous2007-08-20 5:00 ID:xB93OUZg
PHP has traditionally used features such as "magic_quotes_gpc" and "magic_quotes_runtime" which attempt to escape apostrophes (') and quotes (") in strings in the assumption that they will be used in databases, to prevent SQL injection attacks. This leads to confusion over which data is escaped and which is not, and to problems when data is not in fact used as input to a database.
Name:
Anonymous2007-08-20 5:00 ID:xB93OUZg
PHP does not have complete native support for Unicode or multibyte strings.
Name:
Anonymous2007-08-20 5:00 ID:xB93OUZg
PHP does not enforce the declaration of variables prior to their use, and variables which have not been initialized can have operations (such as concatenation) performed on them; an operation on an uninitialized variable raises an E_NOTICE level error, but this is hidden by default.
Name:
Anonymous2007-08-20 5:00 ID:xB93OUZg
PHP has no namespace support, which leads to a very large amount of globally available functions that can easily number into the thousands.
Name:
Anonymous2007-08-20 5:01 ID:xB93OUZg
PHP's dynamic type conversion could potentially cause problems. Variable types in PHP, although they exist, are transparent to the programmer. Some may consider this a feature, as a variable can change from a number to a string and back again without extra lines of code. However, variable type errors are not detected at compile-time, and the dynamic-typing behavior lacks full predictability.
Name:
Anonymous2007-08-20 5:01 ID:xB93OUZg
The standard function library lacks internal consistency. Many functions perform relatively similar actions and have different name standards and argument orders. For example:
* Argument consistency: strpos($haystack, $needle) vs. in_array($needle, $haystack)
* Naming convention: both of these work case-insensitively strcasecmp() vs. stristr() but the former indicates this with "case" while the later does with "i"
* Function name consistency: strpos() vs. str_replace()
Name:
Anonymous2007-08-20 5:01 ID:xB93OUZg
Functions are not first-class objects. This requires referencing functions by strings and object methods as a two-element array of the object and method name as a string. Consequently, anonymous functions are also referenced by string.