<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Web analytics API</title>
	<atom:link href="http://noteplog.com/web-analytics-api/feed/" rel="self" type="application/rss+xml" />
	<link>http://noteplog.com/web-analytics-api/</link>
	<description>Just another geek who once wanted to blog...</description>
	<lastBuildDate>Thu, 12 Jun 2008 04:10:05 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Daan</title>
		<link>http://noteplog.com/web-analytics-api/comment-page-1/#comment-96</link>
		<dc:creator>Daan</dc:creator>
		<pubDate>Tue, 13 May 2008 09:01:27 +0000</pubDate>
		<guid isPermaLink="false">http://noteplog.com/web-analytics-api/#comment-96</guid>
		<description>StatsPlugger (Www.statsplugger.com) is an analytics solution that works trough XML.</description>
		<content:encoded><![CDATA[<p>StatsPlugger (Www.statsplugger.com) is an analytics solution that works trough XML.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Grossman</title>
		<link>http://noteplog.com/web-analytics-api/comment-page-1/#comment-2</link>
		<dc:creator>Dan Grossman</dc:creator>
		<pubDate>Mon, 02 Jul 2007 22:40:06 +0000</pubDate>
		<guid isPermaLink="false">http://noteplog.com/web-analytics-api/#comment-2</guid>
		<description>I&#039;m the author of W3Counter and its API. Most of the work of providing the API is done through PHP5&#039;s reflection classes. They provide the ability to inspect the classes that provide W3Counter&#039;s data internally, and easily generate the API reference and documentation from the method names, parameter lists, and phpdoc contained in the class files. As the classes are updated, the documentation updates itself automatically through reflection.

Reflection also does most of the work for transforming an API call into an actual class method call. A search through the class for a matching method name with the right privacy level is all that&#039;s needed. Then, the remaining $_GET variables can be thrown into an array passed as parameters to call_user_func_array() to make the actual call.

Returning the result is relatively automated as well. My internal classes return a custom wcDataSet class which encapsulates the data and several attributes, such as a total result count for paging. One method transforms a data set into an XML block.

Thus, again, the API updates itself whenever a method is added to the class without any additional work.</description>
		<content:encoded><![CDATA[<p>I&#8217;m the author of W3Counter and its API. Most of the work of providing the API is done through PHP5&#8242;s reflection classes. They provide the ability to inspect the classes that provide W3Counter&#8217;s data internally, and easily generate the API reference and documentation from the method names, parameter lists, and phpdoc contained in the class files. As the classes are updated, the documentation updates itself automatically through reflection.</p>
<p>Reflection also does most of the work for transforming an API call into an actual class method call. A search through the class for a matching method name with the right privacy level is all that&#8217;s needed. Then, the remaining $_GET variables can be thrown into an array passed as parameters to call_user_func_array() to make the actual call.</p>
<p>Returning the result is relatively automated as well. My internal classes return a custom wcDataSet class which encapsulates the data and several attributes, such as a total result count for paging. One method transforms a data set into an XML block.</p>
<p>Thus, again, the API updates itself whenever a method is added to the class without any additional work.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

