<?xml version="1.0" ?>
<rss version="2.0">
	<channel>
		<title>Keith's Weblog: Comments on &quot;I hate PHP&quot;</title>
		<description>Keith's Weblog: Comments on &quot;I hate PHP&quot;, posted on August 13, 2003</description>
		<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP</link>

		<category>PHP</category>
		<category>Programming</category>
		<category>This website</category>
		<language>en-us</language>
		<image>
			<link>http://keithdevens.com/weblog</link>
			<title>Keith Devens .com</title>
			<url>http://keithdevens.com/images/kbd.gif</url>
		</image>

		<item>
			<title>by Simon Willison</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2695</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2695</guid>
			<pubDate>Wed, 13 Aug 2003 17:09:08 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;THANK YOU! I had the weirdest bug in an XML parsing class I wrote recently: for some reason, calls to update and check a property of the class just weren't working. I spent 2 days pulling my hair out about it before cludging it with a global variable (ugh) and moving on. I've just added the &amp;amp; to the $this in my xml_set_element_handler calls and now it works fine.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;I am so looking forward to PHP5.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2696</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2696</guid>
			<pubDate>Wed, 13 Aug 2003 17:17:47 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Heh, then maybe you can help me get mine to work... &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2697</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2697</guid>
			<pubDate>Wed, 13 Aug 2003 17:20:35 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;The worst thing about all this is that I had (and still have, of course) code that &lt;strong&gt;works&lt;/strong&gt;, but that I have to waste hours of my life rewriting because someone (apparently arbitrarily) decided to deprecate a feature without considering the consequences.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Ben</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2698</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2698</guid>
			<pubDate>Wed, 13 Aug 2003 17:27:38 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Well, I can relate to the &amp;quot;reference angst&amp;quot; in PHP. It's currently  very confusing, though it's not a very new situation. Reference support until now has always been sketchy and impartial. What strikes me particularly as odd is the relationship between arrays and references. For instance,&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;$foo-&amp;gt;test(array(&amp;amp;$bar));&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;where bar is an object does NOT trigger the default error warning. I don't know if it rather should or not, or if it's a perfectly legal PHP statement. Anyway, wrapping a one-element array around the variable enables provides a kludge for optionally passing references, if test() looks like this:&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;function test($param = null) {&lt;br /&gt;
	if (isset($param)) {&lt;br /&gt;
		$param[0]-&amp;gt;add('hi');&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;PHP horrid? Perhaps. Inconsistent? Indeed.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt; &lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Moss Collum</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2701</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2701</guid>
			<pubDate>Wed, 13 Aug 2003 17:57:35 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;&lt;em&gt;I hate PHP&lt;/em&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Now there's something all of us, liberal or conservative, can agree on.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2702</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2702</guid>
			<pubDate>Wed, 13 Aug 2003 18:01:34 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;&lt;em&gt;Definitely&lt;/em&gt; inconsistent. So much so that I constantly have to look to the reference to find out which functions take parameters in which order, since &amp;quot;needle&amp;quot; and &amp;quot;haystack&amp;quot; are so often reversed.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;&amp;quot;Horrid&amp;quot; includes other major pain in the butt features like magic_quotes, trans_sid, etc.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by 82.36.196.38</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2703</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2703</guid>
			<pubDate>Wed, 13 Aug 2003 18:11:40 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Ben,&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;The reason for that is that a copy of the array is made (including a copy of the reference).&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Inconsistency and bad planning are my two main gripes with PHP.  Magic quotes, for example.  &amp;quot;I know, let's put backslashes into strings from the user, just on the off-chance that the author is going to dump them into a database without quoting them!  Who cares about sane authors?&amp;quot;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Not to mention the fact that it's impossible to use nl2br() with current versions of PHP and valid HTML (it only generates XHTML-style br elements).&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2704</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2704</guid>
			<pubDate>Wed, 13 Aug 2003 18:18:17 +0000</pubDate>
			<description>&lt;blockquote class=&quot;st-markup&quot;&gt;&lt;p&gt;Not to mention the fact that it's impossible to use nl2br() with current versions of PHP and valid HTML (it only generates XHTML-style br elements).&lt;/p&gt;&lt;/blockquote&gt;

&lt;p class=&quot;st-markup&quot;&gt;Yeah, and highlight_string, et al, still use &amp;lt;font&amp;gt; tags to do the highlighting. In my markup library, where I want to allow PHP code highlighting, I had to do a regular expression replacement on the generated string to replace '&amp;lt;font color=&amp;quot;' with '&amp;lt;span style=&amp;quot;color: ' and '&amp;lt;/font&amp;gt;' with '&amp;lt;/span&amp;gt;'.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2705</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2705</guid>
			<pubDate>Wed, 13 Aug 2003 18:20:04 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Actually, I don't know what your problem is with XHTML style &amp;lt;br /&amp;gt; tags. AFAIK, they should work with everything... that's a feature, not a problem. I didn't read your comment carefully enough originally.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2706</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2706</guid>
			<pubDate>Wed, 13 Aug 2003 18:27:21 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Grr... one more correction. I didn't do a regular expression replacement like I said above... just a plain string replacement.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Sterling Hughes</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2707</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2707</guid>
			<pubDate>Wed, 13 Aug 2003 19:34:26 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;call time pass by reference is sometimes necessary, in this case just use it.  You'll only get these errors if you are using E_NOTICE.  E_NOTICE just tells you cases where you could be doing something that is possibly wrong, not necessarily wrong.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Its sorta like: &amp;quot;Tell me when I might be doing something stupid mode.&amp;quot;  It doesn't mean you actually did something wrong.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Most of the object inconsistencies will be fixed in PHP5, btw.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2708</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2708</guid>
			<pubDate>Wed, 13 Aug 2003 20:40:08 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;At first I thought they were notices, but since the error messages said &amp;quot;Warning:&amp;quot; and not &amp;quot;Notice:&amp;quot; I figured they were E_WARNING level messages. Thanks Sterling, I may just go and turn off E_NOTICE's for those and save myself the headache.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;The problem, for people like me who want to write libraries, is that we can't just worry about our own configurations. So for every function I may have to turn off error_reporting() of E_NOTICES. &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Sterling, do you know why call-time pass-by-reference was deprecated in the first place?&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Harry Fuecks</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2710</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2710</guid>
			<pubDate>Thu, 14 Aug 2003 00:41:49 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;If you're looking for some entertainment, how about trying &lt;a href=&quot;http://pear.php.net/XML_HTMLSax&quot;&gt;HTMLSax&lt;/a&gt; instead?&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Thanks to  some great input via Sitepointforums, managed to get it ramped up to be &lt;em&gt;almost&lt;/em&gt; as fast as the native PHP XML extension. I've also done my best to make the API as similar as possible so it should mean only minor modifications to a &lt;em&gt;class&lt;/em&gt; currently using Expat. Thats the downside though - the handlers must be available via an object. Oh and HTMLSax wont warn you if the XML was badly formed. &lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;But $parser-&amp;gt;set_object($this) will mean $this is referenced...&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Scott Johnson</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2712</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2712</guid>
			<pubDate>Thu, 14 Aug 2003 11:59:40 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Hi Keith, &lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Well I'll definitely agree with you on php's inconsistencies.  They suck.  But different languages work for different folks.  PHP works for me so I'll stay with it.  It does sound like you're just not happy and maybe Python is a better place for you (though it would be a shame to lose you although I'll benefit since I'll learn from your learning process (and blogging about it)).&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Best&lt;br /&gt;
Scott&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by anand</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment2718</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment2718</guid>
			<pubDate>Fri, 15 Aug 2003 16:05:01 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Personally I prefer ruby though I do a lot of plugin development in PHP for nucleus.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment3580</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment3580</guid>
			<pubDate>Wed, 17 Dec 2003 07:28:12 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Just wanted to update this post: The errors given to complain about call time pass by refererce are definitely E_WARNINGs and not E_NOTICEs.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Markus</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment3623</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment3623</guid>
			<pubDate>Wed, 24 Dec 2003 15:54:30 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;about PHP being inconsistent, I can only agree&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;see &lt;a href=&quot;http://tnx.nl/php.txt&quot;&gt;http://tnx.nl/php.txt&lt;/a&gt; for more&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment3626</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment3626</guid>
			<pubDate>Wed, 24 Dec 2003 18:47:53 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Hey, I think that's the article I &lt;a href=&quot;/weblog/archive/2003/Nov/12/PHP.core-functions&quot;&gt;linked to here&lt;/a&gt;, but the link broke almost immediately.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Hong</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment4283</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment4283</guid>
			<pubDate>Fri, 02 Apr 2004 15:52:20 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Workaround for &amp;quot;Call-time pass-by-reference has been deprecated&amp;quot;:&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;call_user_func_array(array(&amp;amp;$obj,$method),array(&amp;amp;$arg1,$arg2));&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Jeff</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment4941</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment4941</guid>
			<pubDate>Wed, 07 Jul 2004 19:05:38 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I find it funny that this site is powered by PHP.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment4942</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment4942</guid>
			<pubDate>Wed, 07 Jul 2004 19:16:12 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;&lt;a href=&quot;/weblog/archive/2004/Jun/11/language-vs-platform&quot;&gt;Language vs. platform&lt;/a&gt; man.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by tomm</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment5141</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment5141</guid>
			<pubDate>Thu, 29 Jul 2004 21:34:02 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I just was curious about PHP, since our apprentice loves it a lot... So far, I resisted to touch anything else than Perl and Bourne Shell, and I'm happy with it. &amp;quot;Give the customer what he wants, not what he needs&amp;quot; - oh god, I'm sick of it. I've seen guys claiming to be pros in any known language. The first Perl snippets I encountered said all enough...&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Ah, PHP is perfectly suited for the unexperienced, wannabe hacker. Yes, you get some results quickly. Just an example which gave me a really bad impression about PHP: Compare PHP's DB stuff with Perl's DBI interface.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Stick at your programming language of your choice, and really &lt;em&gt;learn&lt;/em&gt; how to code. Keep it simple (not stupid, simple &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;. Write concepts. End up with clean, well commented code, and enjoy! &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Cheers from Switzerland,&lt;br /&gt;
tomm&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by sotto</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment7132</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment7132</guid>
			<pubDate>Sat, 05 Mar 2005 15:15:31 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Thanks! ... thanks to your post i finally found out how i can pass my parameters by reference with call_user_func ... :-)&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Perlisbetter</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment7186</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment7186</guid>
			<pubDate>Fri, 11 Mar 2005 19:21:13 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Not to mention that marrying design elements with logic is&lt;br /&gt;
bad for sites where you actually care about design. It means your designers must code around logic, and programmers usually suck at final design, and having different people fighting over the same files is a pain. That's why I use templates for design, and PERL for logic. PERL's better anyway. No qq with PHP is enough for me to not want to use it. Having to escape quotes is a ridiculous and unnecessary pain in the neck.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by ME</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment7335</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment7335</guid>
			<pubDate>Wed, 30 Mar 2005 07:27:00 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;If you hate PHP what do you use then..and why are you still using PHP?&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment7337</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment7337</guid>
			<pubDate>Wed, 30 Mar 2005 07:32:19 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Because PHP site == done, while {other language} site == not done. Plus, that language vs. platform thing I mentioned a few comments up. PHP is a crappy language, but a pretty fair platform for making web pages. And PHP 5 is less crappy.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Hendy Irawan</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment7554</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment7554</guid>
			<pubDate>Thu, 28 Apr 2005 00:33:58 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I hate PHP. PHP sucks.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Unfortunately there's no entirely feasible alternative that can replace PHP completely. By &amp;quot;PHP&amp;quot; is also mean &amp;quot;PHP and libraries and applications built on it&amp;quot;.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Eric Boutin</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment7700</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment7700</guid>
			<pubDate>Thu, 09 Jun 2005 04:14:28 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I hate PHP too; so many bugs !!!  I find one every week.  Plus your not even shure your application is going to run on the next php release.  That sucks really as soon as I can I move to jsp/j2ee damn php&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Elliot Anderson</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment8031</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment8031</guid>
			<pubDate>Sun, 31 Jul 2005 12:25:35 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I found if you want to unshift an array with references, you have to write your own function to take the array, reverse it, do something like $array[] = &amp;amp;$reference; and then reverse again. &lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Mobile developer</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment9519</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment9519</guid>
			<pubDate>Mon, 19 Jun 2006 08:16:20 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I don't hate PHP, but now I battle with parsing of XML where are used rare char-set CP850 (yeh .. &amp;quot;Deutsche Post World Net&amp;quot; still use it). PHP does not support it and PHP does not support Unicode - one more nightmare of PHP ...&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by insta</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment9546</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment9546</guid>
			<pubDate>Fri, 07 Jul 2006 14:37:07 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Some problems with PHP have nothing to do with the language, but the programmer.  Keith, why don't you try checking the INI file for things like how to wrap the source code?  You can overwrite values with ini_set.  They default to &amp;lt;font, but you can change them to &amp;lt;span&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;That said, PHP still sucks.  Far too easy barrier of entry lets people vomit all over a keyboard and PHP will run it.  Then they put on their resume that they're &amp;quot;expert PHP developers&amp;quot;, and take my (and other skilled developers') job for half the pay, only to ruin everything a month later with their ineptitude in the language.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Not that I work with anyone like that ...&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment9547</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment9547</guid>
			<pubDate>Fri, 07 Jul 2006 16:18:15 +0000</pubDate>
			<description>&lt;blockquote class=&quot;st-markup&quot;&gt;&lt;p&gt;Keith, why don't you try checking the INI file for things like how to wrap the source code?  You can overwrite values with ini_set.  They default to &amp;lt;font, but you can change them to &amp;lt;span&lt;/p&gt;&lt;/blockquote&gt;

&lt;p class=&quot;st-markup&quot;&gt;No, you can't. Here's the documentatation on PHP's syntax highlighting: first &lt;a href=&quot;http://us3.php.net/manual/en/ref.misc.php#ini.syntax-highlighting&quot;&gt;the ini settings&lt;/a&gt;, and next the documentation for &lt;a href=&quot;http://us3.php.net/manual/en/function.highlight-string.php&quot;&gt;highlight_string&lt;/a&gt;.  It seems that it uses &amp;quot;&amp;lt;span...&amp;quot; in PHP 5 and &amp;quot;&amp;lt;font...&amp;quot; in PHP 4, with no way to change that in either version.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Before &amp;quot;blaming the programmer&amp;quot; (i.e. me) how about you show me in the documentation where it can be changed like you say?&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Hannibal</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment9551</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment9551</guid>
			<pubDate>Mon, 10 Jul 2006 20:38:14 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Is there anything you don't hate? PHP, ASP, ASP.NET? I'm sure you are going to hate RoR too.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;You are a hater.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment9552</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment9552</guid>
			<pubDate>Mon, 10 Jul 2006 20:46:58 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I don't hate Python :-P&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Ivo</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment9579</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment9579</guid>
			<pubDate>Mon, 31 Jul 2006 13:08:48 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Ai, Python. We (two average experienced Linux system administrators) have spent one full working day on trying to get Python to run as a module on Apache. Tweaking some .py file that came with the package finally 'did' it.&lt;br /&gt;
PHP is installed and runs correctly in seconds (with good package manager, that is &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;).&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Not flaming Python, just one of my annoyances &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Michael Goodell</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment9648</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment9648</guid>
			<pubDate>Wed, 13 Sep 2006 21:31:48 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Yes PHP is the anti-Christ! Tell your friends!  The end is near!&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Just a &lt;em&gt;few&lt;/em&gt; of my reasons:&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;1. Post-mortem debugging. Adds hours to finding the simplest bugs. I stopped doing post-mortem debugging in the late 1980's&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;2. OOP / OOD is an afterthought and does it show!!!&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;3. Can shut off error reporting! I guess the problem does not exist if you can't see it.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;4. Obvious syntax error go unnoticed and Pee-H-Pee thinks all is well. ie foo shoud be $foo and nothing is said.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;5. Exception handling? Pee-H-Peez structured exception handling in 5.x is laughable. Nice try boys.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;6. It's obvious Pee-H-Pee grew out of a set of PERL scripts.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;7. Can scatter settings all over the place. No structure to any applicaitons.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Bottom line: Pee-H-Pee? It's the VB3 for the web.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;In other words:&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;&amp;quot;You can only polish a turd so much before it starts to smear!&amp;quot;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Personally, when the enterprise application calls I break out Java / Servlets / JSP. Apache-&amp;gt;Tomcat-&amp;gt;FreeBSD!!&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Anyone ever gone away from JSP / Java / Servlets to Pee-H-Pee? Anyone who has done so for &lt;em&gt;valid&lt;/em&gt; reasons? Not becuase you don't get Java? Anyone? . . . . Didn't think so.....&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by M.Hirsch</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment10007</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment10007</guid>
			<pubDate>Tue, 06 Mar 2007 21:31:31 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Another problem related to references that I recently encountered:&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;I tried to write a (php) replacement for the mysqli functions because my script is supposed to also work without this extension.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;90% through writing the wrapper, I noticed that there is no way to replace &lt;a href=&quot;http://www.php.net/mysqli-stmt-bind-result&quot;&gt;mysqli_stmt_bind_result()&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Variable function arguments don't support references. &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_frown.gif&quot; alt=&quot;Smiley frowning&quot; /&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Dave</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment10296</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment10296</guid>
			<pubDate>Wed, 12 Sep 2007 10:24:18 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Some interesting comments on this blog. Coming from a C++ background I can understand some of the frustrations of dealing with a &amp;quot;hacker language&amp;quot; like PHP, though I think the development community should maybe be a bit more patient with relatively new languages. PHP 5 seems to make a bit more sense, and things like WASP are attempting to drive consistency and proper design/architecture.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Also I don't think PHP is the only language that can be criticised for its &amp;quot;bolting on&amp;quot; of OOP &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_wink_animated.gif&quot; alt=&quot;Smiley winking&quot; /&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by king game</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment10509</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment10509</guid>
			<pubDate>Sat, 02 Feb 2008 15:25:19 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;If you hate PHP what do you use then..and why are you still using PHP?&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment10510</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment10510</guid>
			<pubDate>Mon, 04 Feb 2008 02:44:14 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Thought I explained this above...&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Webmaster</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment10826</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment10826</guid>
			<pubDate>Thu, 18 Sep 2008 18:33:54 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;When Basic, Pascal &amp;amp; Comal 80 programmers heard about DOS, the same &amp;quot;mud&amp;quot; was flying around!&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment10827</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment10827</guid>
			<pubDate>Thu, 18 Sep 2008 18:35:13 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Thank you for the relevant comment.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Alex Ndungu</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment10870</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment10870</guid>
			<pubDate>Sat, 11 Oct 2008 06:35:29 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Elliot Anderson,&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Dude!! You the man! The reverse replacement for array_unshift() worked like a charm.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by KC</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment11000</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment11000</guid>
			<pubDate>Wed, 10 Dec 2008 16:21:50 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Yeah, after reading this...I am a novice who barely remembers reference variables and OOP (even though I took C, C++, Java, and VB 6.0), so I am working on a PHP site without using it in an OOP way and am rarely using functions.  So for me, it is good, although the magic quotes thing has been frustrating me some.  My next site I want to learn something new.  What about ASP?&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment11001</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment11001</guid>
			<pubDate>Wed, 10 Dec 2008 17:21:46 +0000</pubDate>
			<description>&lt;blockquote class=&quot;st-markup&quot;&gt;&lt;p&gt;What about ASP?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p class=&quot;st-markup&quot;&gt;No.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by nicola</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment11183</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment11183</guid>
			<pubDate>Sun, 07 Jun 2009 15:22:55 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I don't hate PHP so much, but maybe only because I used worst languages. It is inconsistent, not portable (every PHP update on you VPS is a dangerous bet) and quite error prone. But the most annoying thing is this assertion:&lt;/p&gt;

&lt;blockquote class=&quot;st-markup&quot;&gt;&lt;p&gt;PHP makes it easy to get things done for a beginner&lt;/p&gt;&lt;/blockquote&gt;

&lt;p class=&quot;st-markup&quot;&gt;In every way I read it, I don't see any advantage. I must thank PHP for a lot of internet crap?&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Last but not least: in PHP 5 the objects are not passed by reference! They are treated as an id and passed by value. This usual gives a similar result but I'm pretty sure it will give a lot of troubles to anyone trying to use PHP seriously:&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;&lt;a href=&quot;http://www.php.net/manual/en/language.oop5.references.php&quot;&gt;http://www.php.net/manual/en/language.oop5.references.php&lt;/a&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by </title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment11435</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment11435</guid>
			<pubDate>Sat, 31 Oct 2009 18:36:32 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I hate PHP! I feel so dity working with PHP...&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by josef cullhed</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment11455</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment11455</guid>
			<pubDate>Wed, 02 Dec 2009 11:30:07 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I hate php to. One horrible example is&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;function fooBAR($a) {&lt;br /&gt;
  echo $a;&lt;br /&gt;
}&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;foobar(1);&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Will output 1. Case insesitive functions?!? who is the idiot designing this?&lt;br /&gt;
The worst is that it has became so popular. Young programmers start with php and does not understand how bad it is..&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;PHP is also very slow &lt;a href=&quot;http://xodian.net/serendipity/index.php?/archives/27-Benchmark-PHP-vs.-Python-vs.-Perl-vs.-Ruby.html&quot;&gt;http://xodian.net/serendipity/index.php?...PHP-vs.-Python-vs.-Perl-vs.-Ruby.html&lt;/a&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Ray Rosure</title>
			<link>http://keithdevens.com/weblog/archive/2003/Aug/13/HATE-PHP#comment11486</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/4180#comment11486</guid>
			<pubDate>Tue, 26 Jan 2010 15:07:00 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Php sucks for me &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;&lt;/p&gt;

</description>
		</item>
	</channel>
</rss>
