<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5217436438174054965</id><updated>2026-04-11T07:24:31.413-07:00</updated><title type='text'>MRTG with Nagios</title><subtitle type='html'>This blog is for Nagios, JOOMLA , OS Commerce</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-1007545436932297220</id><published>2010-09-22T04:56:00.000-07:00</published><updated>2010-09-22T04:56:40.697-07:00</updated><title type='text'>Creating a file based logging script</title><content type='html'>In this tutorial I will show you how you can create a small and simple &lt;span class=&quot;searchhighlight&quot;&gt;PHP&lt;/span&gt; &lt;span class=&quot;searchhighlight&quot;&gt;script&lt;/span&gt; &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; log your visitors activity into a file. You just need &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; add 1 line &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; each of your page &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; enable logging and the statistics will be collected in a html file so you  don&#39;t have &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; setup any database for this task.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Step 1.&lt;br /&gt;
&lt;/strong&gt;A basic logging &lt;span class=&quot;searchhighlight&quot;&gt;script&lt;/span&gt; need &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; log visitors &lt;span class=&quot;searchhighlight&quot;&gt;information&lt;/span&gt; in an easy and well-arranged format. In general the site owner want &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; know which pages of his/her site were visited most often, what source was the referrer and so on.&lt;br /&gt;
&lt;br /&gt;
In this tutorial we will collect the following &lt;span class=&quot;searchhighlight&quot;&gt;information&lt;/span&gt; about the &lt;span class=&quot;searchhighlight&quot;&gt;visitor&lt;/span&gt;:  &lt;ul&gt;&lt;li class=&quot;MsoNormal&quot;&gt;     Visiting date   &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;     &lt;span class=&quot;searchhighlight&quot;&gt;Visitor&lt;/span&gt; IP   &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;     &lt;span class=&quot;searchhighlight&quot;&gt;Visitor&lt;/span&gt; hostname   &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;     &lt;span class=&quot;searchhighlight&quot;&gt;Visitor&lt;/span&gt; browser type   &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;     The visited page   &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;     The referrer &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; the page   &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
From this &lt;span class=&quot;searchhighlight&quot;&gt;information&lt;/span&gt; you can the site owner can make any decision how &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; improve the site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Step 2.&lt;/strong&gt;&lt;br /&gt;
Now it&#39;s time &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; make some coding as well. &lt;span class=&quot;searchhighlight&quot;&gt;To&lt;/span&gt; &lt;span class=&quot;searchhighlight&quot;&gt;get&lt;/span&gt; the visitors IP, browser, referrer and visited page we can use the &lt;span class=&quot;searchhighlight&quot;&gt;PHP&lt;/span&gt; built in super global variable the $_SERVER. From this array we can read out the above mentioned properties and their values.&lt;br /&gt;
&lt;br /&gt;
So the code is the following:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$userAgent&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_USER_AGENT&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_USER_AGENT&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_USER_AGENT&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$userIp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REMOTE_ADDR&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REMOTE_ADDR&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REMOTE_ADDR&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$refferer&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_REFERER&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_REFERER&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_REFERER&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$uri&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REQUEST_URI&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REQUEST_URI&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REQUEST_URI&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Explanation:&lt;br /&gt;
&lt;/strong&gt;The $_SERVER array key definition are the following:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;HTTP_USER_AGENT &lt;/strong&gt;:  Contents of the User-Agent: header from the current request, if there  is one. This is a string denoting the user agent being which is  accessing the page. A typical example is: Mozilla/4.5 [en] (X11; U;  Linux 2.2.9 i586).&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;REMOTE_ADDR:&lt;/strong&gt; The IP address from which the user is viewing the current page.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
HTTP_REFERER:&lt;/strong&gt; The address of the page (if any) which referred the user agent &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; modify HTTP_REFERER as a feature. In short, it cannot really be trusted.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;REQUEST_URI: &lt;/strong&gt;The URI which was given in order &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; access this page; for instance, &#39;/index.html&#39;.&lt;br /&gt;
&lt;br /&gt;
So we try &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; read this &lt;span class=&quot;searchhighlight&quot;&gt;information&lt;/span&gt; if the actual properties doesn&#39;t exists or empty than we set it &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; &#39;Unknown&#39;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;searchhighlight&quot;&gt;To&lt;/span&gt; &lt;span class=&quot;searchhighlight&quot;&gt;get&lt;/span&gt; the hostname from the userIp I use the &lt;span class=&quot;searchhighlight&quot;&gt;PHP&lt;/span&gt; built in function &lt;strong&gt;gethostbyaddr()&lt;/strong&gt; which gets the Internet host name corresponding &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; a given IP address. Besides this getting the actual date is quite easy by using the &lt;strong&gt;date()&lt;/strong&gt; function with a predefined date format string.&lt;br /&gt;
&lt;br /&gt;
This part of the code looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;define&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;DATE_FORMAT&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;d-m-Y&amp;nbsp;H:i:s&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$hostName&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;gethostbyaddr&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$userIp&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$actualTime&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;DATE_FORMAT&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Step 3.&lt;/strong&gt;&lt;br /&gt;
Now as we have the all of the visitors &lt;span class=&quot;searchhighlight&quot;&gt;information&lt;/span&gt; so we need &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; store it in a file. &lt;span class=&quot;searchhighlight&quot;&gt;To&lt;/span&gt; make it easier &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; read the file I will surround the data with a HTML table elements. As result when you open the log file you will &lt;span class=&quot;searchhighlight&quot;&gt;get&lt;/span&gt; all of the &lt;span class=&quot;searchhighlight&quot;&gt;information&lt;/span&gt; in a nice formatted HTML table.&lt;br /&gt;
&lt;br /&gt;
The code which composes a log entry looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$logEntry&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$actualTime&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$userIp&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$hostName&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$userAgent&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$uri&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$refferer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\n&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
Now we have &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; make some file handling. First of all we need &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; check whether the log file exists or not. If the file not exists yet than we will create a new one and write some HTML header &lt;span class=&quot;searchhighlight&quot;&gt;information&lt;/span&gt; at the beginning. If the file already exists than we open it &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; append a new log entry.&lt;br /&gt;
After it we can write the log entry &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; the file and close it afterwards. That&#39;s all. As the file is a html file you can easy open/display it.&lt;br /&gt;
&lt;br /&gt;
The complete logger coode looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;define&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;DATE_FORMAT&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;d-m-Y&amp;nbsp;H:i:s&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;LOG_FILE&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;visitors.html&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logfileHeader&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$userAgent&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_USER_AGENT&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_USER_AGENT&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_USER_AGENT&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$userIp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REMOTE_ADDR&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REMOTE_ADDR&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REMOTE_ADDR&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$refferer&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_REFERER&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_REFERER&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;HTTP_REFERER&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$uri&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;(&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REQUEST_URI&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REQUEST_URI&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;REQUEST_URI&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$hostName&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;gethostbyaddr&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$userIp&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$actualTime&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;DATE_FORMAT&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logEntry&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;$actualTime$userIp$hostName$userAgent$uri$refferer\n&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;file_exists&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;LOG_FILE&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logFile&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fopen&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;LOG_FILE&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fwrite&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logFile&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logfileHeader&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logFile&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fopen&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;LOG_FILE&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fwrite&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logFile&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logEntry&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fclose&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$logFile&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Step 4.&lt;br /&gt;
&lt;/strong&gt;Using the logger &lt;span class=&quot;searchhighlight&quot;&gt;script&lt;/span&gt; is quite easy. Each of your page you want &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; log you need &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; add a new line: &lt;strong&gt;require_once(&quot;logger.&lt;span class=&quot;searchhighlight&quot;&gt;php&lt;/span&gt;&quot;); &lt;/strong&gt;&lt;br /&gt;
If the page is not a &lt;span class=&quot;searchhighlight&quot;&gt;Php&lt;/span&gt; page than you need &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; rename it from html &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;searchhighlight&quot;&gt;Php&lt;/span&gt; or tell the &lt;span class=&quot;searchhighlight&quot;&gt;Php&lt;/span&gt; &lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt; interpret the *.html pages as well.&lt;br /&gt;
&lt;br /&gt;
So an example file looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;php&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;require_once(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;logger.&lt;span class=&quot;searchhighlight&quot;&gt;php&lt;/span&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;&lt;h3&gt;This&amp;nbsp;is&amp;nbsp;an&amp;nbsp;example&amp;nbsp;page&amp;nbsp;&lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt;&amp;nbsp;show&amp;nbsp;you&amp;nbsp;how&amp;nbsp;&lt;span class=&quot;searchhighlight&quot;&gt;to&lt;/span&gt;&amp;nbsp;use&amp;nbsp;logger.&lt;/h3&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Just&amp;nbsp;insert&amp;nbsp;the&amp;nbsp;following&amp;nbsp;code&amp;nbsp;into&amp;nbsp;your&amp;nbsp;files:&lt;br /&gt;
&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;require_once(&quot;logger.&lt;span class=&quot;searchhighlight&quot;&gt;php&lt;/span&gt;&quot;);&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; </content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/1007545436932297220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/creating-file-based-logging-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/1007545436932297220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/1007545436932297220'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/creating-file-based-logging-script.html' title='Creating a file based logging script'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-6550406567189249637</id><published>2010-09-13T03:25:00.000-07:00</published><updated>2010-09-13T03:27:49.027-07:00</updated><title type='text'>Introduction To Xajax</title><content type='html'>&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;1&quot;&gt;Abstract&lt;/a&gt;&lt;/h3&gt;The Xajax class has come far in its progress and now the API has  stabilized it is ready for work. This tutorial brings the absolute  basics to get started with Xajax. &lt;br /&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;2&quot;&gt;Hello World&lt;/a&gt;&lt;/h3&gt;Like all things, starting at the beginning is best. This script provides  the absolute basics to getting Xajax working. The process is quite  simply when broken down into smaller chunks. Like any PHP library, the  class definition needs to be included. With xajax it is the  xajax.inc.php bootstrap file that loads up the xajax environment and  makes ready the ajax processes internally. &lt;br /&gt;
Xajax generates javascript code and provides a bridge, or callback, to  PHP functions. To let Xajax know which functions are to be called, they  must first be registered. The simple API of Xajax provides a register()  function for this task. In the example below, the showText PHP function  is registered. &lt;br /&gt;
When the register function is called, the returned object can be used to  set parameters. In this example, the object is assigned to a variable  named $rqstButton which is used later in the HTML to gene rate the onclick event code. &lt;br /&gt;
With the function registered, the requested function can be processed.  This means the javascript for required to make a callback to PHP is  generated internally and is ready to be retrieved with either the  printJavascript() or getJavascript() methods. &lt;br /&gt;
The printJavascript() method, as the name suggests, just prints the  javascript. However, a little more separation is nice, so the generated  javascript can be assigned to a variable with the getJavascript()  method. In these examples, the getJavascript() method is used to provide  an level of separation between the HTML display code, and the PHP  logic. &lt;br /&gt;
&lt;br /&gt;
In the HTML, a simple echo statement is used to display the javascript  generated by xajax. A little further down a call is made with javascript  onClick event. The value for the onClick event is held in the  rqstButton object and is simply echoed and that is really about all the  javascript knowledge needed to get started, Xajax will do the rest. &lt;br /&gt;
But what of the showText() function itself? This function now becomes  the engine room for the process. The content is contain in this  function, however, in larger applications, the data may be sourced from  external resources such as a database or file. A new response object is  created, which will contain the information needed by xajax to perform  the required actions. Again, the simple API provides a method to assign  the content contained in the $content variable, to the innerHTML  property of the target div named &quot;my_div&quot;. The object response is  returned and the task is complete. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;include&amp;nbsp;the&amp;nbsp;xajax&amp;nbsp;bootstrap&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;xajax/xajax_core/xajax.inc.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;xajax&amp;nbsp;object&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;register&amp;nbsp;a&amp;nbsp;PHP&amp;nbsp;function&amp;nbsp;with&amp;nbsp;xajax&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$rqstButton&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;register&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;XAJAX_FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;showText&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;the&amp;nbsp;request&amp;nbsp;button&amp;nbsp;parameters&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$rqstButton&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setParameter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;XAJAX_JS_VALUE&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;process&amp;nbsp;the&amp;nbsp;request&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;processRequest&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showText&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;content&amp;nbsp;to&amp;nbsp;assign&amp;nbsp;to&amp;nbsp;the&amp;nbsp;target&amp;nbsp;div&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$content&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Hello&amp;nbsp;World&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;response&amp;nbsp;object&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$objResponse&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;xajaxResponse&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;assign&amp;nbsp;the&amp;nbsp;innerHTML&amp;nbsp;attribute&amp;nbsp;to&amp;nbsp;the&amp;nbsp;new&amp;nbsp;$content&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$objResponse&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;assign&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;my_div&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;innerHTML&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$content&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;return&amp;nbsp;the&amp;nbsp;object&amp;nbsp;response&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$objResponse&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;process&amp;nbsp;the&amp;nbsp;request&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;processRequest&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;path&amp;nbsp;is&amp;nbsp;relative&amp;nbsp;to&amp;nbsp;the&amp;nbsp;web&amp;nbsp;root&amp;nbsp;mmmk&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax_js&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getJavascript&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;/xajax&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;title&gt;PHPRO.ORG&lt;/title&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax_js&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;button&amp;nbsp;type=&quot;button&quot;&amp;nbsp;onclick=&quot;&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printScript&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&quot;&amp;gt;Click&amp;nbsp;me&lt;br /&gt;
&lt;div&amp;nbsp;id=&quot;my_div&quot;&gt;New&amp;nbsp;text&amp;nbsp;will&amp;nbsp;happen&amp;nbsp;here&lt;/div&amp;nbsp;id=&quot;my_div&quot;&gt;&lt;/span&gt;&lt;/button&amp;nbsp;type=&quot;button&quot;&amp;nbsp;onclick=&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;3&quot;&gt;Manually Calling Requests&lt;/a&gt;&lt;/h3&gt;In the above code, the javascript to create the onClick event was  generated by an object returned by the register() function. While the  registration of the function needs to occur, the assigning of the  variable does not, and the call could be made manually in the HTML  document. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;include&amp;nbsp;the&amp;nbsp;xajax&amp;nbsp;bootstrap&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;xajax/xajax_core/xajax.inc.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;xajax&amp;nbsp;object&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;register&amp;nbsp;a&amp;nbsp;PHP&amp;nbsp;function&amp;nbsp;with&amp;nbsp;xajax&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;register&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;XAJAX_FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;showText&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;process&amp;nbsp;the&amp;nbsp;request&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;processRequest&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showText&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;content&amp;nbsp;to&amp;nbsp;assign&amp;nbsp;to&amp;nbsp;the&amp;nbsp;target&amp;nbsp;div&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$content&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Hello&amp;nbsp;World&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;response&amp;nbsp;object&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$objResponse&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;xajaxResponse&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;assign&amp;nbsp;the&amp;nbsp;innerHTML&amp;nbsp;attribute&amp;nbsp;to&amp;nbsp;the&amp;nbsp;new&amp;nbsp;$content&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$objResponse&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;assign&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;my_div&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;innerHTML&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$content&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;return&amp;nbsp;the&amp;nbsp;object&amp;nbsp;response&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$objResponse&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;process&amp;nbsp;the&amp;nbsp;request&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;processRequest&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;path&amp;nbsp;is&amp;nbsp;relative&amp;nbsp;to&amp;nbsp;the&amp;nbsp;web&amp;nbsp;root&amp;nbsp;mmmk&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax_js&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getJavascript&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;/xajax&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;title&gt;PHPRO.ORG&lt;/title&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax_js&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;button&amp;nbsp;type=&quot;button&quot;&amp;nbsp;onclick=&quot;xajax_showtext();&quot;&gt;Click&amp;nbsp;me&lt;br /&gt;
&lt;div&amp;nbsp;id=&quot;my_div&quot;&gt;New&amp;nbsp;text&amp;nbsp;will&amp;nbsp;happen&amp;nbsp;here&lt;/div&amp;nbsp;id=&quot;my_div&quot;&gt;&lt;/button&amp;nbsp;type=&quot;button&quot;&amp;nbsp;onclick=&quot;xajax_showtext();&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-edit.do&quot; name=&quot;4&quot;&gt;Debugging&lt;/a&gt;&lt;/h3&gt;Perhaps the most important functionality in the Xajax library is the  debug option. When set, the debug option sends a print-out of the whole  request process. This will prove invaluable when a script is not  behaving as expected. &lt;br /&gt;
The debug flag is set, in most instances, immediately after the xajax  object is instantiated. This means it will look a little like this. &lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;include&amp;nbsp;the&amp;nbsp;xajax&amp;nbsp;bootstrap&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;include&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;xajax/xajax_core/xajax.inc.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;xajax&amp;nbsp;object&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;the&amp;nbsp;debug&amp;nbsp;flag&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$xajax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setFlag&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;debug&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;rest&amp;nbsp;of&amp;nbsp;script&amp;nbsp;follows&amp;nbsp;...&amp;nbsp;***/&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/6550406567189249637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/introduction-to-xajax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/6550406567189249637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/6550406567189249637'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/introduction-to-xajax.html' title='Introduction To Xajax'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-4277952633670725452</id><published>2010-09-13T03:19:00.000-07:00</published><updated>2010-09-13T03:19:08.621-07:00</updated><title type='text'>PHP Class functions</title><content type='html'>&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;11&quot;&gt;PHP Class functions&lt;/a&gt;&lt;/h2&gt;PHP has available several class functions to help you through the OOP mine field. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;get_declared_interfaces()&lt;/li&gt;
&lt;li&gt;class_exists()&lt;/li&gt;
&lt;li&gt;get_class()&lt;/li&gt;
&lt;li&gt;get_declared_classes()&lt;/li&gt;
&lt;/ul&gt;Each of these is shown here beginning with the get_declared_interfaces(). &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;11.1&quot;&gt;get_declared_interfaces()&lt;/a&gt;&lt;/h2&gt;This helper function provides an array of all the available declared interfaces. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;interface&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;dial&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;recieve&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printBlack&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printColor&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printDraft&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;kick&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;our&amp;nbsp;interface&amp;nbsp;implementation&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printerFax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;implements&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;dial&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;recieve&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printBlack&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printColor&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printDraft&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;kick&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;create&amp;nbsp;and&amp;nbsp;printerfax&amp;nbsp;object&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$object&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printerFax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;get&amp;nbsp;the&amp;nbsp;declared&amp;nbsp;interfaces&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;foreach(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;get_declared_interfaces&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;as&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$interface&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;=&amp;gt;&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$interface&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The above code should produce a list such as this:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;0 =&amp;gt; Traversable&lt;/li&gt;
&lt;li&gt;1 =&amp;gt; IteratorAggregate&lt;/li&gt;
&lt;li&gt;2 =&amp;gt; Iterator&lt;/li&gt;
&lt;li&gt;3 =&amp;gt; ArrayAccess&lt;/li&gt;
&lt;li&gt;4 =&amp;gt; Serializable&lt;/li&gt;
&lt;li&gt;5 =&amp;gt; RecursiveIterator&lt;/li&gt;
&lt;li&gt;6 =&amp;gt; OuterIterator&lt;/li&gt;
&lt;li&gt;7 =&amp;gt; SeekableIterator&lt;/li&gt;
&lt;li&gt;8 =&amp;gt; Countable&lt;/li&gt;
&lt;li&gt;9 =&amp;gt; SplObserver&lt;/li&gt;
&lt;li&gt;10 =&amp;gt; SplSubject&lt;/li&gt;
&lt;li&gt;11 =&amp;gt; Reflector&lt;/li&gt;
&lt;li&gt;12 =&amp;gt; fax&lt;/li&gt;
&lt;li&gt;13 =&amp;gt; printer&lt;/li&gt;
&lt;/ul&gt;From the list above you can see the &lt;a href=&quot;http://www.phpro.org/tutorials/Introduction-to-SPL.html&quot;&gt;SPL&lt;/a&gt;  interfaces available and at the bottom is our fax and printer  interfaces. The printerfax is not listed as it is not an interface,  rather it is an implentation of an interface. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;11.2&quot;&gt;Other functions&lt;/a&gt;&lt;/h2&gt;Here we will see three helper functions for our classes &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;get_class()&lt;/li&gt;
&lt;li&gt;class_exists()&lt;/li&gt;
&lt;li&gt;get_declared_classes&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;pretend&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;dial&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;recieve&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;another&amp;nbsp;pretend&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printBlack&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printColor&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printDraft&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;kick&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;create&amp;nbsp;an&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;fax&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$foo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;create&amp;nbsp;an&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;printer&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$bar&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;$foo&amp;nbsp;is&amp;nbsp;from&amp;nbsp;the&amp;nbsp;&#39;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;get_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$foo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;class&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;class_exists&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;printer&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Declared&amp;nbsp;classes&amp;nbsp;are:&lt;br&amp;nbsp;&gt;&amp;nbsp;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
foreach(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;get_declared_classes&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;as&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$classname&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;-&amp;gt;&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$classname&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The little snippet above will produce over one hundred available  classes, shortened here for the sake of sanity, such as these below.  Note our fax and printer classes at the bottom of the list. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;$foo is from the fax class&lt;/li&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;li&gt;0 -&amp;gt; stdClass&lt;/li&gt;
&lt;li&gt;1 -&amp;gt; Exception&lt;/li&gt;
&lt;li&gt; ---8&amp;lt;--- snip ---&lt;/li&gt;
&lt;li&gt;106 -&amp;gt; fax&lt;/li&gt;
&lt;li&gt;107 -&amp;gt; printer&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;12&quot;&gt;Autoload&lt;/a&gt;&lt;/h2&gt;Earlier in this tutorial we stated that the class definition must be  included in every call to an object. This is commonly achieved with the  include() or require() functions such as below. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;include&amp;nbsp;our&amp;nbsp;class&amp;nbsp;definitions&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;include(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;classes/vehicle.class.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
include(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;classes/motorcycle.class.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
include(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;classes/printer.class.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
include(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;classes/printer.class.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;vehicle&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
***&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;instantiate&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;motorcycle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;object&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$bike&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;motorcycle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
***&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;instantiate&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;object&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$printer&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
***&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;instantiate&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;object&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$fax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;As you can see, this is quite cumbersome. The solution to this sort of  mess is __autoload(). The __autoload() function will internally search  out the class and load its definition. So the above block of code could  be reduced to this.  &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;Autoload&amp;nbsp;class&amp;nbsp;files&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__autoload&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;require(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;classes/&#39;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;strtolower&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;)&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;.class.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;vehicle&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;motorcycle&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$bike&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;motorcycle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;printer&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$printer&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;fax&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$fax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;Now we can load up as many class definitions as we like because they  will be autoloaded when we try to use a class that has not been defined.  This can save much coding and much searching for code. It is important  to remember the naming convention of your classes and class files. Each  class file should be named the same as the class definition itself. eg: a  class definition file named fax would have the filename fax.class.php &lt;br /&gt;
The use of the strtolower() function assures compatibility of naming  conventions as windows machines fail to be case sensitive for filenames. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;13&quot;&gt;Serializing Objects&lt;/a&gt;&lt;/h2&gt;We have seen a lot of code above for the use of objects and how they can  save us time (and $$$) by re-using them. But what if we needed to  somehow store an object for later retrieval, perhaps in a database or in  a session variable? PHP has given us the serialize() function to make  this rather effortless. There are some limitations, but this can be a  very useful tool for applications. Lets see how it performs with a  little code. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;code&amp;nbsp;here&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;14&quot;&gt;Overloading&lt;/a&gt;&lt;/h2&gt;Comes a time in every programmers life when...hmm&lt;br /&gt;
Overloading in PHP has caused much confusion for no real reason. PHP Overloading can be broken downinto two basic components &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Method overloading&lt;/li&gt;
&lt;li&gt;Property overloading&lt;/li&gt;
&lt;/ul&gt;Simply put, Method Overloading is achieved by a special function named &lt;span class=&quot;codechar&quot;&gt;__call()&lt;/span&gt;.  It is available as a sort of method wildcard for calls to undefined  methods within a class. This special function is only called when the  original method name does not exist. The &lt;span class=&quot;codechar&quot;&gt;__call()&lt;/span&gt; will only work when the class method you are trying to access does not exist. Lets take it for a spin.. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;This&amp;nbsp;is&amp;nbsp;the&amp;nbsp;foo&amp;nbsp;function&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;a&amp;nbsp;non-existant&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;bar&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;Of course the above snippet of code will produce an error such as&lt;br /&gt;
Fatal error: Call to undefined method my_class::bar() in /www/overload.php on line 12&lt;br /&gt;
because we have called the bar() class method that does not exist. Enter  __call(). With the __call() function in place, PHP will try to create  the function and you have any code within the _call() method that you  like. The __call() method takes two arguements, the method name, and the  arguements. Your call to the undefined method may have many arguements  and these are returned in an array. Lets put it to the test with two  args. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;This&amp;nbsp;is&amp;nbsp;the&amp;nbsp;foo&amp;nbsp;function&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;__call()&amp;nbsp;method&amp;nbsp;with&amp;nbsp;two&amp;nbsp;args&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__call&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$method&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$arg&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$method&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;print_r&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$arg&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;a&amp;nbsp;non-existant&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;bar&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;arg1&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;arg2&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The above code will print the following&lt;br /&gt;
bar&lt;br /&gt;
Array ( [0] =&amp;gt; arg1 [1] =&amp;gt; arg2 ) The __call() method has returned the method name that we called along with the array of args passed to it.  &lt;br /&gt;
Lets now look at we can dynimically manipulate or overload our data. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;readyGetSet&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;declare&amp;nbsp;$item&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;private&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$item&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Skate&amp;nbsp;Board&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;declare&amp;nbsp;the&amp;nbsp;price&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;private&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$price&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;our&amp;nbsp;call&amp;nbsp;function&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__call&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$method&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$arguments&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;property&amp;nbsp;and&amp;nbsp;prefix&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$prefix&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;strtolower&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$method&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;));&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$property&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;strtolower&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$method&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;if&amp;nbsp;(empty(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$prefix&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;)&amp;nbsp;||&amp;nbsp;empty(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$property&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$prefix&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;==&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;get&#39;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;amp;&amp;amp;&amp;nbsp;isset(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$property&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$property&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$prefix&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;==&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;set&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$property&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$arguments&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;readyGetSet&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Item:&amp;nbsp;&#39;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Price:&amp;nbsp;&#39;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setItem&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;CD&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;25&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Item:&amp;nbsp;&#39;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Price:&amp;nbsp;&#39;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$obj&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The second part of overloading refers to properties and the ability to  be able to dynamically get and set object properties. The &lt;span class=&quot;codechar&quot;&gt;__get()&lt;/span&gt; function is called when reading the value of an undefined property, and &lt;span class=&quot;codechar&quot;&gt;__set()&lt;/span&gt;  is called when trying to change that properties value. I hope this is  clear as it can get a little confusing... Lets see how it works by  example. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;candy&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;declare&amp;nbsp;a&amp;nbsp;property&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$type&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;chocolate&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;normal&amp;nbsp;method&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;wrap&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Its&amp;nbsp;a&amp;nbsp;wrap&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;our&amp;nbsp;__set()&amp;nbsp;function&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__set&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$index&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;The&amp;nbsp;value&amp;nbsp;of&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$index&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;is&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;candy&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$candy&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;candy&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;a&amp;nbsp;non&amp;nbsp;existant&amp;nbsp;property&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$candy&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;bar&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Blue&amp;nbsp;Smarties&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The result from above will be:&lt;br /&gt;
The value of bar is Blue Smarties&lt;br /&gt;
Lets see what we have done. We have described a class named candy which  contains a public property named $type. It has a simple method and our  __set() method. After the class our user code creates a new instance of  the candy class. Then we try to set a variable that does not exist in  the class. Here the __set method takes control and assigns it for us. We  then see in our __set method that it echoes the name of the variable,  plus its intended value. The __set() method takes two arguements, the  name of the non existant variable, and its intended value.  &lt;br /&gt;
&lt;br /&gt;
The &lt;span class=&quot;codechare&quot;&gt;__get()&lt;/span&gt; method .... &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;candy&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;declare&amp;nbsp;a&amp;nbsp;property&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$type&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;chocolate&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$choctype&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;array(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;milk&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;dark&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;plain&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;normal&amp;nbsp;method&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;wrap&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Its&amp;nbsp;a&amp;nbsp;wrap&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;our&amp;nbsp;__set()&amp;nbsp;function&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__get&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$index&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Retrieving&amp;nbsp;element&amp;nbsp;of&amp;nbsp;$choctype&amp;nbsp;property&amp;nbsp;with&amp;nbsp;index&amp;nbsp;of&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$index&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;choctype&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$index&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;];&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;candy&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$candy&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;candy&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;a&amp;nbsp;non&amp;nbsp;existant&amp;nbsp;property&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;The&amp;nbsp;value&amp;nbsp;of&amp;nbsp;the&amp;nbsp;following&amp;nbsp;element&amp;nbsp;property&amp;nbsp;is&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$candy&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;milk&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;From the above code we get the result&lt;br /&gt;
Retrieving element of $choctype property with index of milk&lt;br /&gt;
The value of the following element property is 0&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;12&quot;&gt;Class Constants&lt;/a&gt;&lt;/h2&gt;You have more than likely seen the use standard constants in PHP. To define a standard constant we use this code: &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
/***&amp;nbsp;define&amp;nbsp;an&amp;nbsp;error&amp;nbsp;message&amp;nbsp;***/&lt;br /&gt;
define(&#39;_ERROR_MSG&#39;,&amp;nbsp;&#39;An&amp;nbsp;Error&amp;nbsp;has&amp;nbsp;occured!&#39;);&lt;br /&gt;
/***&amp;nbsp;echo&amp;nbsp;the&amp;nbsp;constant&amp;nbsp;***/&lt;br /&gt;
echo&amp;nbsp;_ERROR_MSG;&lt;br /&gt;
?&amp;gt;&lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The above snippit would output&lt;br /&gt;
An Error has occured! &lt;br /&gt;
To define a class constant we use the &lt;span class=&quot;codechar&quot;&gt;const&lt;/span&gt; keyword. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;define&amp;nbsp;a&amp;nbsp;class&amp;nbsp;constant&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;const&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;_ERROR_MSG&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;An&amp;nbsp;Error&amp;nbsp;has&amp;nbsp;occured!&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;show&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;_ERROR_MSG&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;There are now three ways the class constant can be access from this example. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;static&amp;nbsp;call&amp;nbsp;to&amp;nbsp;constant&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;_ERROR_MSG&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;instantiate&amp;nbsp;a&amp;nbsp;class&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$my_class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;can&amp;nbsp;run&amp;nbsp;the&amp;nbsp;show()&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;show&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;static&amp;nbsp;call&amp;nbsp;to&amp;nbsp;the&amp;nbsp;show&amp;nbsp;method()&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;my_class&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;show&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;Each of the above methods would output the same line&lt;br /&gt;
An Error has occured!&lt;br /&gt;
A class constant, like standard constants, must be exactly as the name  suggests, a constant value. It cannot be a variable or the result of a  function or method. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;77&quot;&gt;Credits&lt;/a&gt;&lt;/h2&gt;This concludes our little insight into PHP OOP. If you have anything you would like to see here just &lt;a href=&quot;http://www.phpro.org/contact/&quot;&gt;contact us&lt;/a&gt; and we will do our best to help.&lt;br /&gt;
&lt;div id=&quot;right&quot;&gt;&lt;div id=&quot;download&quot;&gt;&lt;form action=&quot;http://www.phpro.org/search&quot; method=&quot;get&quot; target=&quot;_top&quot;&gt;&lt;table bgcolor=&quot;#ffffff&quot; border=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;32&quot; nowrap=&quot;nowrap&quot; valign=&quot;top&quot;&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/4277952633670725452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/php-class-functions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/4277952633670725452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/4277952633670725452'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/php-class-functions.html' title='PHP Class functions'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-400873458774739425</id><published>2010-09-13T03:16:00.000-07:00</published><updated>2010-09-13T03:16:46.467-07:00</updated><title type='text'>PHP - Visibility (public, private, protected)</title><content type='html'>&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;6&quot;&gt;Visibility (public, private, protected)&lt;/a&gt;&lt;/h2&gt;The visibility of class members, (properties, methods), relates to how  that member may be manipulated within, or from outside the class. Three  levels of visibilty exist for class members. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;public&lt;/li&gt;
&lt;li&gt;private&lt;/li&gt;
&lt;li&gt;protected&lt;/li&gt;
&lt;/ul&gt;By default, all class members are public. This means if you do not  declare a property or method within the class, it will be public. It is  good practice to declare the visibility of class members for the sake of  readability for yourself and others. It is much easier for another  programmer to see your intentions. This will also future proof your  scripts should access modifiers be deprecated. &lt;br /&gt;
Public class members (properties and methods) are available through-out  the script and may be accessed from outside the class as we demonstrated  in our car class. Lets create a simple new class to demonstrate. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;&amp;nbsp;number&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Add&amp;nbsp;two&amp;nbsp;to&amp;nbsp;a&amp;nbsp;number&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;Instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;class&amp;nbsp;instance&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;the&amp;nbsp;number&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;the&amp;nbsp;addTwo&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;We can see in the above example that the public variable $num is set  from user space and we call a public method that adds two the number and  returns the value of $num+2. Having our properties (variables) visible,  or accessible from any part of our script works in our favour here, but  it can also work against us. A could arise if we lost track of our  values and changed the value of $num. To counter this problem we can  create a method to set the value for us. Even with this in place it is  still possible for somebody to simply access the $num variable. So we  make the variable private. This ensures us that the property is only  available within the class itself. It is private to the calling class.  Consider the following code. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;&amp;nbsp;number&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;private&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Set&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;$num&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@param&amp;nbsp;$num&amp;nbsp;The&amp;nbsp;number&amp;nbsp;to&amp;nbsp;set&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setNum&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Add&amp;nbsp;two&amp;nbsp;to&amp;nbsp;a&amp;nbsp;number&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;Instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;class&amp;nbsp;instance&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;the&amp;nbsp;number&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setNum&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;the&amp;nbsp;addTwo&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
?&amp;gt;&lt;/span&gt; &lt;/code&gt;&lt;/div&gt;Any further attempt to reset the $num property without the setNum() method would result in a Fatal Error such as&lt;br /&gt;
Fatal error: Cannot access private property mathematics::$num in /www/mathematics.class.php on line 43&lt;br /&gt;
Even if you were to try to access the private $num property from a child  class it would fail. This is because private methods and properties in a  parent class are not visible to child classes and cannot be accessed.  To access a parent method or property from a child class you need to use  the &lt;span class=&quot;codechar&quot;&gt;protected&lt;/span&gt; keyword. Like the private  keyword, protetected methods and properties are available only to the  class that created them. But unlike private, protected methods and  properties are visible from a parent class. Lets see how this works. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;&amp;nbsp;number&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;protected&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Set&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;$num&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@param&amp;nbsp;$num&amp;nbsp;The&amp;nbsp;number&amp;nbsp;to&amp;nbsp;set&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setNum&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Add&amp;nbsp;two&amp;nbsp;to&amp;nbsp;a&amp;nbsp;number&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;divide&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Divide&amp;nbsp;a&amp;nbsp;number&amp;nbsp;by&amp;nbsp;two&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;divideByTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;divide&amp;nbsp;number&amp;nbsp;by&amp;nbsp;two&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$new_num&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;return&amp;nbsp;the&amp;nbsp;new&amp;nbsp;number&amp;nbsp;and&amp;nbsp;round&amp;nbsp;to&amp;nbsp;2&amp;nbsp;decimal&amp;nbsp;places&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;round&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$new_num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;Instantiate&amp;nbsp;a&amp;nbsp;new&amp;nbsp;class&amp;nbsp;instance&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;divide&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;the&amp;nbsp;number&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setNum&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;14&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;divideByTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;We can see here the the user space code has called the setNum() method  in the parent mathematics class. This method, in turn, sets the $num  property. We are able to do this because the $num property has been  declared protected and is visible to the child class. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;7&quot;&gt;Final&lt;/a&gt;&lt;/h2&gt;As we saw in the previous section there are ways to protect your code  from being used in an improper manner. Another way of protecting  yourself is the &lt;span class=&quot;codechar&quot;&gt;Final&lt;/span&gt; keyword. Any method  or class that is declared as Final cannot be overridden or inherited by  another class. Lets put it to the test. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;final&amp;nbsp;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;divide&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;By running the above code you will get an error such as&lt;br /&gt;
Fatal error: Class divide may not inherit from final class (mathematics) in /www/final.php on line 8&lt;br /&gt;
This can protect us from those who wish to use our code for a purpose other than that for which it was intended. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;8&quot;&gt;Abstract Classes&lt;/a&gt;&lt;/h2&gt;An abstract class is a class that cannot be instantiated on its own. You  cannot create a new object from it. To see this lets make a basic  class. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;  &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;abstract&amp;nbsp;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Add&amp;nbsp;two&amp;nbsp;to&amp;nbsp;a&amp;nbsp;number&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;try&amp;nbsp;to&amp;nbsp;create&amp;nbsp;new&amp;nbsp;object&amp;nbsp;from&amp;nbsp;the&amp;nbsp;mathematics&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$math&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt; &lt;/div&gt;Using the code above, you will get an error something like this&lt;br /&gt;
Fatal error: Cannot instantiate abstract class mathematics in /www/abstract.php on line 23.&lt;br /&gt;
As you can see, this is not allowed. Also if you declare any class  method to be abstract, you must also declare the class itself as  abstract too. So, whats the point you ask? Well, you can inherit from an  abstract class. Any class that extends an abstract parent class must  create an interface of the parent abstract methods. If this is not done a  fatal error is generated. This ensures that the implementation is  correct. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;  &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;abstract&amp;nbsp;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;child&amp;nbsp;class&amp;nbsp;must&amp;nbsp;define&amp;nbsp;these&amp;nbsp;methods&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;abstract&amp;nbsp;protected&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getMessage&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;br /&gt;
abstract&amp;nbsp;protected&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num1&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;method&amp;nbsp;common&amp;nbsp;to&amp;nbsp;both&amp;nbsp;classes&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showMessage&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getMessage&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;myMath&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;mathematics&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Prefix&amp;nbsp;to&amp;nbsp;the&amp;nbsp;answer&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;string&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;protected&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getMessage&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;The&amp;nbsp;anwser&amp;nbsp;is:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;add&amp;nbsp;two&amp;nbsp;to&amp;nbsp;a&amp;nbsp;number&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@param&amp;nbsp;$num1&amp;nbsp;A&amp;nbsp;number&amp;nbsp;to&amp;nbsp;be&amp;nbsp;added&amp;nbsp;to&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num1&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;)&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num1&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;a&amp;nbsp;new&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;myMath&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$myMath&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;myMath&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;show&amp;nbsp;the&amp;nbsp;message&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$myMath&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showMessage&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;do&amp;nbsp;the&amp;nbsp;math&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$myMath&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;addTwo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;9&quot;&gt;Static Methods and Properties&lt;/a&gt;&lt;/h2&gt;The use of the &lt;span class=&quot;codechar&quot;&gt;static&lt;/span&gt; keyword allows class  members (methods and properties) to be used without needing to  instantiate a new instance of the class. The static declaratin must come  after the visibility declaration, eg:&lt;br /&gt;
public static myClass{&lt;br /&gt;
Because there is no object created when using a static call, the keyword &lt;span class=&quot;codechar&quot;&gt;$this&lt;/span&gt; and the arrow operator, &lt;span class=&quot;codechar&quot;&gt;-&amp;gt;&lt;/span&gt;  are not available. Static variables belong to the class itself and not  to any object of that class. To access withing the class itself you need  to use the &lt;span class=&quot;codechar&quot;&gt;self&lt;/span&gt; keyword along with the &lt;span class=&quot;codechar&quot;&gt;::&lt;/span&gt; scope resolution operator. Lets whip up a quick example of using static. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;  &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;simple&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;myClass&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;static&amp;nbsp;variable&amp;nbsp;***/&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;static&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$foo&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&amp;nbsp;give&amp;nbsp;the&amp;nbsp;static&amp;nbsp;variable&amp;nbsp;a&amp;nbsp;value&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;myClass&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$foo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Bar&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;echo&amp;nbsp;the&amp;nbsp;static&amp;nbsp;variable&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;myClass&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$foo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt; &lt;/div&gt;The above snippet will echo &lt;br /&gt;
Bar This is rather basic as an example, so lets use something practical.  Static properties are often used as counters. Here we will use a basic  counter class. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;  &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;our&amp;nbsp;count&amp;nbsp;variable&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;private&amp;nbsp;static&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$count&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&amp;nbsp;Constructor,&amp;nbsp;duh&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__construct&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$count&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;++;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;get&amp;nbsp;the&amp;nbsp;current&amp;nbsp;count&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;static&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getCount&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$count&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;instance&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$count&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;get&amp;nbsp;the&amp;nbsp;count&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getCount&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;()&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;create&amp;nbsp;another&amp;nbsp;instance&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$next&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;echo&amp;nbsp;the&amp;nbsp;new&amp;nbsp;count&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getCount&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;and&amp;nbsp;a&amp;nbsp;third&amp;nbsp;instance&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$third&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;getCount&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt; &lt;/div&gt;Hopefully by the end of the above snippet you can see what is happening.  At each new instance the counter class we increment by one. Not also  the use of the &lt;span class=&quot;codechar&quot;&gt;::&lt;/span&gt; scope resolution operator and &lt;span class=&quot;codechar&quot;&gt;self&lt;/span&gt; keyword to refer to the static variable within the class itself. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;10&quot;&gt;Interfaces&lt;/a&gt;&lt;/h2&gt;Interfaces in PHP allow you to define a common structure for your  classes. An interface cannot be instantiated on its own. One of the  goals of OOP is re-use of code. Interfaces make this a much easier  process. The interface methods have no internal logic, they are simply a  &quot;mapping&quot; or constraint of what the class, or classes, should  implement. Here we will demonstrate how this works using our vehicle  class from earlier, with the addition of a stop() function. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;  &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;implements&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;testdrive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;define&amp;nbsp;public&amp;nbsp;properties&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;the&amp;nbsp;color&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$color&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num_doors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;price&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$price&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;shape&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$shape&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;brand&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$brand&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;constructor&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__construct&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;About&amp;nbsp;this&amp;nbsp;Vehicle.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;define&amp;nbsp;some&amp;nbsp;public&amp;nbsp;methods&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;a&amp;nbsp;method&amp;nbsp;to&amp;nbsp;show&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;price&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;This&amp;nbsp;vehicle&amp;nbsp;costs&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;price&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;method&amp;nbsp;to&amp;nbsp;show&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;numDoors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;This&amp;nbsp;vehicle&amp;nbsp;has&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num_doors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;doors.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;method&amp;nbsp;to&amp;nbsp;drive&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;VRRROOOOOOM!!!&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&amp;nbsp;a&amp;nbsp;method&amp;nbsp;to&amp;nbsp;stop&amp;nbsp;the&amp;nbsp;car&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;stop&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;SSSCCRRREEEEEECCHH!!!&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;declare&amp;nbsp;our&amp;nbsp;interface&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;interface&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;testdrive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;some&amp;nbsp;functions&amp;nbsp;that&amp;nbsp;must&amp;nbsp;be&amp;nbsp;implemented&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;stop&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;an&amp;nbsp;new&amp;nbsp;vehicle&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$object&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;some&amp;nbsp;methods&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$object&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$object&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;stop&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt; &lt;/div&gt;You may of course create multiple classes to implement your interface,  but they will not inherit from each other. When you inherit from a  parent class, you may choose to override some of parent methods. If you  had multiple parent class methods with the same name, but different  functionality or charactaristics, PHP would have no way of telling which  of these methods to use. This is why multiple inheritance does not work  in PHP. In contrast, classes that implement an interface, must  implement every method so there is no ambiguity. &lt;br /&gt;
In the real world interfaces provide us with the tools harness parts of  multiple classes. Consider this scenario. If we had two classes, one for  a fax and the other for a printer. Each has seperate uses and could be  described like this: &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;dial&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;recieve&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printBlack&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printColor&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printDraft&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;Both of the above classes give the required usage for each item, but  they do not take into consideration the existance of a printer/fax  machine. To get the usage of both classes we would do something like  this: &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;dial&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;recieve&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printBlack&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printColor&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printDraft&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;kick&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printerFax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$object&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printerFax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;This code works by creating a stack of classes. The grandparent class  is fax. Then the printer class extends the fax class and inherits all  the methods from that class. This is where some problems may arise. The  printer class now has the function dial() available to it which is  clearly going to cause some confusion and possibly errors in logic. &lt;br /&gt;
To counter this problem an interface can be used to tell the classes  what functions (methods) are required. Lets look at the design. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;interface&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;dial&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;recieve&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printBlack&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printColor&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printDraft&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;kick&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printerFax&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;implements&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;fax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printer&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;dial&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;recieve&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printBlack&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printColor&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printDraft&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;kick&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$object&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;printerFax&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;Before we go further, it is recommended you run the above code. It  will produce no output but we need to be sure all is well. Having run  the code, remove the line&lt;br /&gt;
public function kick(){ }&lt;br /&gt;
and run it again. What you should now get is an error such as:&lt;br /&gt;
Fatal error: Class printerFax contains 1 abstract method and must  therefore be declared abstract or implement the remaining methods  (printer::kick) in /www/oop.php on line 22 &lt;br /&gt;
With the kick() function removed from our implementation, we have  essentially broken the contract that says we will implement every  function (method) specified in the interface. We can gather these  functions fractionally from multiple classes, but we MUST have them all  or we will get errors such as the one above. &lt;br /&gt;
Interfaces play a major role in with &lt;a href=&quot;http://www.phpro.org/tutorials/Introduction-to-SPL.html&quot;&gt;SPL&lt;/a&gt; and it is recommend you implement the interfaces from &lt;a href=&quot;http://www.phpro.org/tutorials/Introduction-to-SPL.html&quot;&gt;SPL&lt;/a&gt; and not just the class methods.</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/400873458774739425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/php-visibility-public-private-protected.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/400873458774739425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/400873458774739425'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/php-visibility-public-private-protected.html' title='PHP - Visibility (public, private, protected)'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-135762568899229224</id><published>2010-09-13T03:12:00.000-07:00</published><updated>2010-09-13T03:12:32.568-07:00</updated><title type='text'>PHP 5 with OOPs</title><content type='html'>&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;1&quot;&gt;What is OOP&lt;/a&gt;&lt;/h2&gt;OOP was first invented for the purpose of physical modelling in the Simula-67. &lt;br /&gt;
Whilst there is no  hard and fast definition of what Object Oriented  Programming (OOP) is, we can define. So lets just use this loose  definition for now and it is left to reader to make up their own minds  about what a decent definition is. Object Oriented Programming (OOP) is a  programming concept that treats functions and data as objects. OK, not  the best definition but gives us an opening. The key word here is  objects. As we progress through this tutorial we will see how data and  functions can be represented as re-usable objects, thus cutting down on  code and time. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;2&quot;&gt;What is an Object&lt;/a&gt;&lt;/h2&gt;Simply put, an oject is a bunch of variables and functions all lumped  into a single entity. The object can then be called rather than calling  the variables or functions themselves. Within an object there are  methods and properties. The methods are functions that manipulate data  withing the object. The properties are variables that hold information  about the object. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;3&quot;&gt;What is a Class&lt;/a&gt;&lt;/h2&gt;A class is the blueprint for your object. The class contains the methods  and properties, or the charactaristics of the object. It defines the  object. Lets just start with some examples to see how it all pieces  together. We will use a vehicle as our object. All vehicles share  similar charactaristics, eg: number of doors, they are painted some  color, they each have a price. All vehicles do similar things also,  drive, turn left, turn right, stop etc. These can be described as  functions, or in OOP parlance, &lt;span class=&quot;codechar&quot;&gt;methods&lt;/span&gt;. So, the class holds the definition, and the object holds the value. You declare class in PHP by using the &lt;span class=&quot;codechar&quot;&gt;class&lt;/span&gt; keyword.&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;define&amp;nbsp;public&amp;nbsp;properties&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;the&amp;nbsp;color&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$color&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num_doors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;price&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$price&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;shape&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$shape&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;brand&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$brand&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;constructor&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__construct&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;About&amp;nbsp;this&amp;nbsp;Vehicle.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;define&amp;nbsp;some&amp;nbsp;public&amp;nbsp;methods&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;a&amp;nbsp;method&amp;nbsp;to&amp;nbsp;show&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;price&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;This&amp;nbsp;vehicle&amp;nbsp;costs&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;price&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;method&amp;nbsp;to&amp;nbsp;show&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;numDoors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;This&amp;nbsp;vehicle&amp;nbsp;has&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num_doors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;doors.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;method&amp;nbsp;to&amp;nbsp;drive&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;VRRROOOOOOM!!!&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
With this simple class definition we can now create one, or many,  vehicle objects. Lets see how its done, then we will step through it  all. To create a new object from the class definition we use the &lt;span class=&quot;codechar&quot;&gt;new&lt;/span&gt; keyword. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;  &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;vehicle&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;brand&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;brand&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Porsche&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;shape&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;shape&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Coupe&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;color&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;color&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Red&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num_doors&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;cost&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;price&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;100000&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;the&amp;nbsp;showPrice&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;the&amp;nbsp;numDoors&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;numDoors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;drive&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt; &lt;/div&gt;Using the combination of the two code boxes above, you should have something like..&lt;br /&gt;
About this vehicle.&lt;br /&gt;
This vehicle costs 100000.&lt;br /&gt;
This vehicle has 2 doors. &lt;br /&gt;
Lets step through the class definition first to see what its all about.&lt;br /&gt;
We began the class with the &lt;span class=&quot;codechar&quot;&gt;class&lt;/span&gt; keyword. This tells PHP that what follows is a class definition. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt;  &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt; &lt;/div&gt;Next we declared some variables, or as they are known in the OOP world, &lt;span class=&quot;codechar&quot;&gt;properties&lt;/span&gt;. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;color&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$color&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num_doors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;price&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$price&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;shape&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$shape&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;brand&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$brand&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt; &lt;/div&gt;The properties are the individual charactaristics of the vehicle object. The &lt;span class=&quot;codechar&quot;&gt;public&lt;/span&gt;  declares that this property may be accessed within the public scope.  This means you may set it from within your code. Next in the class  definition is this code.. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;constructor&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;__construct&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;About&amp;nbsp;this&amp;nbsp;vehicle.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The constructor method (function) is a special function that is executed  every time a new object is created or &quot;instantiated&quot;. If a class needs  to do something before running some code, then this is the place to do  it. It is often used to set properties within the class. You may pass a  variable directly to the constructor from your code, but more of that  later. Following the constructor is several methods (functions) that do  things. These methods are also preceded by the &lt;span class=&quot;codechar&quot;&gt;public&lt;/span&gt; meaning they are available with the scope of your code. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;method&amp;nbsp;to&amp;nbsp;show&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;price&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;This&amp;nbsp;vehicle&amp;nbsp;costs&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;price&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;a&amp;nbsp;method&amp;nbsp;to&amp;nbsp;show&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;numDoors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;This&amp;nbsp;vehicle&amp;nbsp;has&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num_doors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;doors.&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;method&amp;nbsp;to&amp;nbsp;drive&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;VRRROOOOOOM&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;As you see above, our methods are similar to normal PHP functions.  However you may note the use of variables like $this-&amp;gt;price and  $this-&amp;gt;num_doors. The keyword &lt;span class=&quot;codechar&quot;&gt;$this&lt;/span&gt; is used to refer to properties or methods within the class itself. The &lt;span class=&quot;codechar&quot;&gt;$this&lt;/span&gt;  keyword is reserved in PHP, so it cannot be used as a variable or  property name. Finally we finished our class definition with a closing &lt;span class=&quot;codechar&quot;&gt;}&lt;/span&gt;. I like to put a comment beside it so I dont delete it or get it confused with a function I am writing. &lt;br /&gt;
Following on from the class definition we see our userland code. This is  the code we use to instantiate (create) a new instance, or new object,  of our vehicle class. As mentioned earlier we do this with the use of  the &lt;span class=&quot;codechar&quot;&gt;new&lt;/span&gt; keyword. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;vehicle&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The code above creates a new object from our class definition called &lt;span class=&quot;codechar&quot;&gt;$vehicle&lt;/span&gt;.  It is at this time that the constructor is called and any code within  the constructor is executed. Once we have a new object we can then begin  to assign values to the properties of that object as seen here. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;brand&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;brand&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Porsche&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;shape&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;shape&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Coupe&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;color&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;color&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Red&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num_doors&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;With the properties set as above, it is now simple to use the object  methods to manipulate the object by calling the methods. The methods are  executed like this below. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;the&amp;nbsp;showPrice&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;the&amp;nbsp;numDoors&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;numDoors&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;drive&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;So, thats the step-by-step of your first class. You see how easy it  would be now to create a new car object. Perhaps a Red Ferrari with 4  doors costing $250,000.00. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;4&quot;&gt;Commenting Code&lt;/a&gt;&lt;/h2&gt;In the previous sections you have seen comments for almost every line of  code. This is a good practice, although some may find it excessive, as  it may not be you who has to edit the code next time. OOP can get very  abstracted and if you are not careful it is easy to lose site of your  programmatical work flow. Most methods within a class will return a  value, rather than echo a line of HTML code. A class method may also  take one, or several, arguements. It is good practice to show what these  arguements are and there types. An example follows below. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;span style=&quot;color: #0000bb;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&amp;nbsp;adds&amp;nbsp;an&amp;nbsp;array&amp;nbsp;of&amp;nbsp;numbers&amp;nbsp;and&amp;nbsp;returns&amp;nbsp;the&amp;nbsp;value&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;array&amp;nbsp;$numbers&amp;nbsp;An&amp;nbsp;array&amp;nbsp;of&amp;nbsp;numbers&amp;nbsp;to&amp;nbsp;add&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&amp;nbsp;@access&amp;nbsp;private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&amp;nbsp;int&amp;nbsp;Returns&amp;nbsp;sum&amp;nbsp;of&amp;nbsp;numbers&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;private&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;sum_of_numbers&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$numbers&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;return&amp;nbsp;the&amp;nbsp;sum&amp;nbsp;of&amp;nbsp;the&amp;nbsp;$numbers&amp;nbsp;array&amp;nbsp;***/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;array_sum&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$numbers&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;The above function is rather simplistic, but shows well the commenting  of code. The comments begin in a block of C type multiline comments and  gives us a brief description of what it does, followed by the parameter  it takes, in this case an array of numbers. It tells us that access to  the function is private (more on this in the next section). Finally the  comment block tells us that the return value is of type INT. We can also  see within the function itself a single line comment just to show what  is happening within the funtion itself. If you follow these practices  you code will always be readable and easy to follow by yourself and  others. &lt;br /&gt;
&lt;h2&gt;&lt;a class=&quot;anchor&quot; href=&quot;&quot; name=&quot;5&quot;&gt;Inheritance (Extending a class)&lt;/a&gt;&lt;/h2&gt;Probably the greatest feature of the PHP OOP model is Inheritence.  Inheritence is the ability of php to extend classes (child classes) that  inherit the charactaristics of the parent class. The resulting object  of an extend class has all the charactaristics of the parent class, plus  whatever is in the new child, or extended class. In this instance we  will extend the vehicle class and add a motorcyle. A motorcycle is still  a vehicle and shares many of the same attributes such as price, drive  etc. But a motorcycle has some unique features that a car does not.  &lt;br /&gt;
Rather than type out the whole of the vehicle class definition again, we  will save it in a file of its own called vehicle.class.php. It is  important here to note the naming convention here as it will be  important later in this tutorial. Lets see how it works. &lt;br /&gt;
&lt;div class=&quot;codebox&quot;&gt; &lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0000bb;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;include&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;class&amp;nbsp;definition&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;include(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;vehicle.class.php&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;motorcycle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;{&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;side&amp;nbsp;cars&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;private&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$num_sidecars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
private&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$handlebars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;set&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;handlebars&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@param&amp;nbsp;string&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;string&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setHandlebars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$handlebarType&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;handlebars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$handlebarType&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Set&amp;nbsp;number&amp;nbsp;of&amp;nbsp;side&amp;nbsp;cars&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@access&amp;nbsp;public&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@param&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;int&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setSidecar&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$numSidecars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;numSidecars&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$numSidecars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/**&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;Show&amp;nbsp;the&amp;nbsp;numbers&amp;nbsp;of&amp;nbsp;sidecars&lt;br /&gt;
*&lt;br /&gt;
*&amp;nbsp;@return&amp;nbsp;string&lt;br /&gt;
*&lt;br /&gt;
**/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showSideCar&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;This&amp;nbsp;motorcyle&amp;nbsp;has&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;numSidecars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&amp;nbsp;sidecar&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;our&amp;nbsp;userland&amp;nbsp;code&amp;nbsp;***/&lt;br /&gt;
&lt;br /&gt;
/***&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;vehicle&amp;nbsp;object&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;motorcycle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;brand&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;brand&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Harley&amp;nbsp;Davidson&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;shape&amp;nbsp;of&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;shape&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Sportster&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;the&amp;nbsp;color&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;color&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Black&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;number&amp;nbsp;of&amp;nbsp;doors&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;num_doors&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;cost&amp;nbsp;of&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;price&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;25000&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;type&amp;nbsp;of&amp;nbsp;handle&amp;nbsp;bars&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setHandlebars&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;Ape&amp;nbsp;Hangers&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;set&amp;nbsp;the&amp;nbsp;sidecar&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;setSidecar&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;show&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;brand&amp;nbsp;and&amp;nbsp;type&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;brand&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;:&amp;nbsp;&#39;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;shape&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&lt;br&amp;nbsp;&gt;&#39;&lt;/br&amp;nbsp;&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;call&amp;nbsp;the&amp;nbsp;showPrice&amp;nbsp;method&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showPrice&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;show&amp;nbsp;the&amp;nbsp;sidecars&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;showSideCar&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #ff8000;&quot;&gt;/***&amp;nbsp;drive&amp;nbsp;the&amp;nbsp;vehicle&amp;nbsp;***/&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;$vehicle&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;drive&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;?&amp;gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt;You see in the motorcycle class that we have used the keyword &lt;span class=&quot;codechar&quot;&gt;extends&lt;/span&gt;  to extend our vehicle class. We can then proceed to set vars in the  both the parent class and the child class. The child class has inherited  all the characaristics of the parent vehicle class. &lt;br /&gt;
If you run the above code with out including the parent class, you will get a Fatal Error like this:&lt;br /&gt;
Fatal error: Class &#39;vehicle&#39; not found in /www/oop.php on line 3&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;You MUST include the class definition on *every page* when you store an object&lt;/h5&gt;This means when you use an object or wish to extend from it. you must  include the class file. Either as code, or most commonly, with an  include() statement. &lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;color: #0000bb;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/135762568899229224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/php-5-with-oops.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/135762568899229224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/135762568899229224'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/php-5-with-oops.html' title='PHP 5 with OOPs'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-5214036358663118913</id><published>2010-09-08T23:26:00.000-07:00</published><updated>2010-09-08T23:26:28.778-07:00</updated><title type='text'>New features in PHP 6</title><content type='html'>As you may be aware the core PHP  group of developers all met in Paris on November the 11th and 12th 2005.  The minutes from the meeting are fascinating reading, but there is a  lot to go through. So I&#39;ve gone through all of the points raised and  chewed them over from a developers point of view. Your comments as  always are welcome.                                       &lt;br /&gt;
Before  I get started however I&#39;d just like to make one thing very clear: what  you read here (or in the original minutes) are in no way the &#39;fully 100%  decided&#39; end results / changes that we&#39;ll see in PHP6. They will most  likely all be discussed further (on internals and wider), but even so we  can take the information presented in the minutes as being the PHP  teams most &#39;current&#39; way of thinking about any given subject.&lt;br /&gt;
&lt;h2&gt;Unicode&lt;/h2&gt;Unicode support at present can be set on a per request basis. This  equates to PHP having to store both Unicode and non-Unicode variants of  class, method and function names in the symbol tables. In short - it  uses up more resources. Their decision is to make the Unicode setting  server wide, not request wide. Turning Unicode off where not required  can help performance and they quote some string functions as being up to  300% slower and whole applications 25% slower as a result. The decision  to move it to the php.ini in my mind does take the control away from  the user, and puts it into the hands of the Web Host.&lt;br /&gt;
If you compile PHP yourself or are responsible for this on your  servers then you may be interested to know that PHP 6 will require the  ICU libs (regardless if Unicode is turned on or off). The build system  will bail out if the required ICU libs cannot be found. In a nutshell,  you&#39;ll have another thing to install if you want to compile PHP.&lt;br /&gt;
&lt;h2&gt;Register Globals to go&lt;/h2&gt;Say goodbye folks, this one is finally going. It will no longer be an  ini file setting, and if found it will raise an E_CORE_ERROR, pointing  you to the documentation on why it&#39;s &quot;bad&quot;. This means that PHP6 will  finally break all PHP3 era scripts (or any script using reg globals)  with no recourse at all but to re-code it. That&#39;s a bold move, but a  needed one.&lt;br /&gt;
&lt;h2&gt;Magic Quotes to go&lt;/h2&gt;The magic quotes feature of PHP will be going, and as with register  globals it&#39;s going to raise an E_CORE_ERROR if the setting is found  anywhere. This will affect magic_quotes, magic_quotes_sybase and  magic_quotes_gpc.&lt;br /&gt;
&lt;h2&gt;Safe Mode to go&lt;/h2&gt;This may please developers who have web hosts that insist upon safe  mode! But it will now go totally, again raising an E_CORE_ERROR if  found. The reason is that apparently they felt it gave the &#39;wrong  signal&#39;, implying that it made PHP secure, when infact it didn&#39;t at all.  open_basedir will (thankfully) be kept.&lt;br /&gt;
&lt;h2&gt;&#39;var&#39; to alias &#39;public&#39;&lt;/h2&gt;PHP4 used &#39;var&#39; within classes. PHP5 (in its OO move) caused this to  raise a warning under E_STRICT. This warning will be removed in PHP6 and  instead &#39;var&#39; will mean the same thing as &#39;public&#39;. This is a nice move  but I if anyone has updated their scripts to work under E_STRICT in  PHP5 it will be a redundant one for them.&lt;br /&gt;
&lt;h2&gt;Return by Reference will error&lt;/h2&gt;Both &#39;$foo =&amp;amp; new StdClass()&#39; and &#39;function &amp;amp;foo&#39; will now raise an E_STRICT error.&lt;br /&gt;
&lt;h2&gt;zend.ze1 compatbility mode to go&lt;/h2&gt;ze1 always tried to retain old PHP4 behaviour, but apparently it  &quot;doesn&#39;t work 100%&quot; anyway, so it will be removed totally and throw an  E_CORE_ERROR if detected.&lt;br /&gt;
&lt;h2&gt;Freetype 1 and GD 1 support to go&lt;/h2&gt;Support for both of these (very very old) libs will be removed.&lt;br /&gt;
&lt;h2&gt;dl() moves to SAPI only&lt;/h2&gt;Each SAPI will register the use of this function as required, only  the CLI and embed SAPIs will do this from now on. It will not be  available elsewhere.&lt;br /&gt;
&lt;h2&gt;FastCGI always on&lt;/h2&gt;The FastCGI code will be cleaned up and always enabled for the CGI SAPI, it will not be able to be disabled.&lt;br /&gt;
&lt;h2&gt;Register Long Arrays to go&lt;/h2&gt;Remember the HTTP_*_VARS globals from yesteryear? Well if you&#39;re not  already using $_GET, $_POST, etc - start doing so now, because the  option to enable long arrays is going (and will throw an E_CORE_ERROR).&lt;br /&gt;
&lt;h2&gt;Extension Movements&lt;/h2&gt;The XMLReader and XMLWriter extensions will move into the core distribution and will be on by default.&lt;br /&gt;
The ereg extension will move to PECL (and thus be removed from PHP).  This means that PCRE will not be allowed to be disabled. This will make  way for the new regular expression extension based on ICU.&lt;br /&gt;
The extremely useful Fileinfo exntesion will move into the core distribution and enabled by default.&lt;br /&gt;
&lt;h2&gt;PHP Engine Additions&lt;/h2&gt;&lt;strong&gt;64 bit integers&lt;/strong&gt;&lt;br /&gt;
A new 64 bit integer will be added (int64). There will be no int32 (it is assumed unless you specify int64)&lt;br /&gt;
&lt;strong&gt;Goto&lt;/strong&gt;&lt;br /&gt;
No &#39;goto&#39; command will be added, but the  break keyword will be extended with a static label - so you could do  &#39;break foo&#39; and it&#39;ll jump to the label foo: in your code.&lt;br /&gt;
&lt;strong&gt;ifsetor()&lt;/strong&gt;&lt;br /&gt;
It looks like we won&#39;t be seeing this  one, which is a shame. But instead the ?: operator will have the &#39;middle  parameter&#39; requirement dropped, which means you&#39;d be able to do  something like this: &quot;$foo = $_GET[&#39;foo&#39;] ?: 42;&quot; (i.e. if foo is true,  $foo will equal 42). This should save some code, but I personally don&#39;t  think it is as &#39;readable&#39; as ifsetor would have been.&lt;br /&gt;
&lt;strong&gt;foreach multi-dim arrays&lt;/strong&gt;&lt;br /&gt;
This is a nice change - you&#39;ll be able to foreach through array lists, i.e. &quot;foreach( $a as $k =&amp;gt; list($a, $b))&quot;.&lt;br /&gt;
&lt;strong&gt;{} vs []&lt;/strong&gt;&lt;br /&gt;
You can currently use both {} and [] to  access string indexes. But the {} notation will raise an E_STRICT in  PHP5.1 and will be gone totally in PHP6. Also the [] version will gain  substr and array_slice functionality directly - so you could do &quot;[2,]&quot;  to access characters 2 to the end, etc. Very handy.&lt;br /&gt;
&lt;h2&gt;OO changes&lt;/h2&gt;&lt;strong&gt;Static Binding&lt;/strong&gt;&lt;br /&gt;
A new keyword will be created to  allow for late static binding - static::static2(), this will perform  runtime evaluation of statics.&lt;br /&gt;
&lt;strong&gt;Namespaces&lt;/strong&gt;&lt;br /&gt;
It looks like this one is still  undecided - if they do implement namespaces it will be using their style  only. My advice? Don&#39;t hold your breath!&lt;br /&gt;
&lt;strong&gt;Type-hinted Return Values&lt;/strong&gt;&lt;br /&gt;
Although they decided  against allowing type-hinted properties (becaue it&#39;s &quot;not the PHP way&quot;)  they will add support for type-hinted return values, but have yet to  decide on a syntax for this. Even so, it will be a nice addition.&lt;br /&gt;
&lt;strong&gt;Calling dynamic functions as static will E_FATAL&lt;/strong&gt;&lt;br /&gt;
At  the moment you can call both static and dynamic methods, whether they  are static or not. Calling a dynamic function with the static call  syntax will raise an E_FATAL.&lt;br /&gt;
&lt;h2&gt;Additions to PHP&lt;/h2&gt;&lt;strong&gt;APC to be in the core distribution&lt;/strong&gt;&lt;br /&gt;
The opcode  cache APC will be included in the core distribution of PHP as standard,  it will not however be turned on by default (but having it there saves  the compilation of yet another thing on your server, and web hosts are  more likely to allow it to be enabled)&lt;br /&gt;
&lt;strong&gt;Hardened PHP patch&lt;/strong&gt;&lt;br /&gt;
This patch implements a bunch  of extra security checks in PHP. They went over it and the following  changes will now take place within PHP: Protection against HTTP Response  Splitting will be included. allow_url_fopen will be split into two:  allow_url_fopen and allow_url_include. allow_url_fopen will be enabled  by default. allow_url_include will be disabled by default.&lt;br /&gt;
&lt;strong&gt;E_STRICT merges into E_ALL&lt;/strong&gt;&lt;br /&gt;
Wow, this is quite a  serious one! E_STRICT level messages will be added to E_ALL by default.  This shows a marked move by the PHP team to educate developers on &#39;best  practises&#39; and displaying language-level warnings in a &quot;Hey, you&#39;re  doing it the wrong way&quot;.&lt;br /&gt;
&lt;strong&gt;Farewell &amp;lt;%&lt;/strong&gt;&lt;br /&gt;
They will remove support for the  ASP style tags, but the PHP short-code tag will remain (  &lt;br /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;PHP6 is taking an interesting move in my mind - it&#39;s as if the PHP  developers want to now educate developers about the right way to code  something, and remove those lingering issues with &quot;Well you SHOULD be  doing it this way, but you can still do it the old way&quot;. This will not  be the case any longer. Removing totally the likes of register globals,  magic quotes, long arrays, {} string indexes and  call-time-pass-by-references will force developers to clean up their  code.&lt;br /&gt;
It will also break a crapload of scripts beyond repair that doesn&#39;t  involve some serious re-writing. Is this a bad thing? I don&#39;t think so  myself, but I see it making the adoption of PHP6 even slower than that  of PHP5, which is a real shame. However they have to leap this hurdle at  some point, and once they&#39;ve done it progression to future versions &lt;em&gt;should&lt;/em&gt; be swifter.</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/5214036358663118913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/new-features-in-php-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/5214036358663118913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/5214036358663118913'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/new-features-in-php-6.html' title='New features in PHP 6'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-7086156623063209296</id><published>2010-09-04T00:25:00.000-07:00</published><updated>2010-09-04T00:25:38.510-07:00</updated><title type='text'>Add mrtg to nagios</title><content type='html'>Mrtg software may install during initial installation; you can verify if MRTG installed or not with following RPM command:&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;rpm -qa | grep mrtg&lt;/pre&gt;If mrtg already installed please see &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/mrtg/mrtg_config_step_5.php&quot;&gt;step # 5&lt;/a&gt;; else use &lt;a href=&quot;http://rpmfind.net/&quot;&gt;rpmfind.net&lt;/a&gt; to find MRTG rpm or up2date command to install MRTG software:&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;# up2date -v -i mrtg&lt;/pre&gt;Fedora Linux user can use yum command as follows to install MRTG:&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;# yum install mrtg

&lt;/pre&gt;&lt;h3&gt;Step # 5 : Commands to Configure mrtg &lt;/h3&gt;(a) Create document root to store mrtg graphs/html pages:&lt;br /&gt;
# mkdir -p /var/www/html/mymrtg/ &lt;br /&gt;
(b) Run any one of the following cfgmaker command to create mrtg configuration file:&lt;br /&gt;
#cfgmaker --global &#39;WorkDir: /var/www/html/mymrtg&#39; --output /etc/mrtg/mymrtg.cfg public@localhost &lt;br /&gt;
OR (make sure your FQDN resolves, in following example i&#39;m using rh9.test.com which is my router FQDN address)&lt;br /&gt;
# cfgmaker --global &#39;WorkDir: /var/www/html/mymrtg&#39; --output /etc/mrtg/mymrtg1.cfg public@rh9.test.com &lt;br /&gt;
(c) Create default index page for your MRTG configuration:&lt;br /&gt;
# indexmaker --output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg&lt;br /&gt;
(d) Copy all tiny png files to your mrtg path:&lt;br /&gt;
# cp -av /var/www/html/mrtg/*.png /var/www/html/mymrtg/&lt;br /&gt;
Run mrtg command from command line with your configuration file: &lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;# mrtg /etc/mrtg/mymrtg.cfg&lt;/pre&gt;&lt;u&gt;Note:&lt;/u&gt; You may get few warning message for first time; ignore them.&lt;br /&gt;
(b) Fire your favorite web browser (like FireFox :D ) and type url http://www.your.com/mymrtg/ or http://your-ip/mymrtg/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
******************************&lt;br /&gt;
Now Your MRTG is running fine. Integrate it to nagios&lt;br /&gt;
************************************&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Procedure to monitor Bandwidth Usages in Nagios:&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
1. Default installation directory of nagios is /usr/local/nagios/.&lt;br /&gt;
&lt;br /&gt;
2. Open switch.cfg file&lt;br /&gt;
vi /usr/local/nagios/etc/objects/switch.cfg&lt;br /&gt;
&lt;br /&gt;
3. Make changes according to your router specifications. Like,&lt;br /&gt;
define host{&lt;br /&gt;
use             generic-switch  &lt;br /&gt;
host_name       Router_1        &lt;br /&gt;
alias           Router 1&lt;br /&gt;
address         172.17.42.22    &lt;br /&gt;
hostgroups      switches&lt;br /&gt;
}&lt;br /&gt;
4. You can also set PING, Uptime, Ports Link Status etc.&lt;br /&gt;
define service{&lt;br /&gt;
use                     generic-service ; Inherit values from a template&lt;br /&gt;
host_name               Router_1        ; The name of the host the service is associated with&lt;br /&gt;
service_description     PING            ; The service description&lt;br /&gt;
check_command           check_ping!200.0,20%!600.0,60%  ; The command used to monitor the service&lt;br /&gt;
normal_check_interval   5               ; Check the service every 5 minutes under normal conditions&lt;br /&gt;
retry_check_interval    1               ; Re-check the service every minute until its final/hard state is determined&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
define service{&lt;br /&gt;
use                     generic-service ; Inherit values from a template&lt;br /&gt;
host_name               Router_1&lt;br /&gt;
service_description     Uptime&lt;br /&gt;
check_command           check_snmp!-C public -o sysUpTime.0 -H 172.17.42.22&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
define service{&lt;br /&gt;
use                     generic-service ; Inherit values from a template&lt;br /&gt;
host_name               Router_1&lt;br /&gt;
service_description     Port 2 Link Status&lt;br /&gt;
check_command           check_snmp!-C public -o ifOperStatus.2 -r 1 -H 172.17.42.22&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
define service{&lt;br /&gt;
use                     generic-service ; Inherit values from a template&lt;br /&gt;
host_name               Router_1&lt;br /&gt;
service_description     Port 2 Bandwidth Usage&lt;br /&gt;
check_command           check_local_mrtgtraf!/var/www/html/mrtg/172.17.42.22_2.log!AVG!1000000,1000000!5000000,5000000&lt;br /&gt;
!10&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
5. Verify the configuration of nagios&lt;br /&gt;
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg&lt;br /&gt;
&lt;br /&gt;
6. Restart nagios service.&lt;br /&gt;
/etc/init.d/nagios restart &lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/7086156623063209296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/08/add-mrtg-to-nagios.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/7086156623063209296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/7086156623063209296'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/08/add-mrtg-to-nagios.html' title='Add mrtg to nagios'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-2947652558471949150</id><published>2010-09-03T22:29:00.000-07:00</published><updated>2010-09-03T22:32:05.064-07:00</updated><title type='text'>Install and Enable SNMP Service in Windows XP, Vista and 2003</title><content type='html'>SNMP (Simple &lt;a id=&quot;KonaLink0&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;color: blue ! important;font-family:&amp;quot;;font-size:13px;color:transparent;&quot;   &gt;Network &lt;/span&gt;&lt;span class=&quot;kLink&quot; style=&quot;color: blue ! important;font-family:&amp;quot;;font-size:13px;color:transparent;&quot;   &gt;Management &lt;/span&gt;&lt;span class=&quot;kLink&quot; style=&quot;color: blue ! important;font-family:&amp;quot;;font-size:13px;color:transparent;&quot;   &gt;Protocol&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;position: relative;&quot; class=&quot;preLoadWrap&quot; id=&quot;preLoadWrap0&quot;&gt;&lt;div style=&quot;position: absolute; z-index: 2147482647; top: -32px; left: -18px; display: none;&quot; id=&quot;preLoadLayer0&quot;&gt;&lt;img style=&quot;border: medium none; width: 22px; height: 22px;&quot; src=&quot;http://kona.kontera.com/javascript/lib/imgs/grey_loader.gif&quot; class=&quot;preloadImg&quot; /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/a&gt;)  is an internet protocol used in network management systems to monitor  network-attached devices such as computers, servers, routers, switches,  gateways, wireless access points, VoIP phones, and etc. for conditions  that warrant administrative attention. SNMP provides management data in  the form of variables on the managed &lt;a id=&quot;KonaLink1&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;systems&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;,  which describe the system configuration parameter or current status  value. These variables can then be read and queried (or sometimes set or  write) by managing applications. Windows system running XP, Vista or  2003 does not turn on SNMP service by default, thus users need to  manually install and enable SNMP service.&lt;br /&gt;&lt;p&gt; &lt;span id=&quot;more-5505&quot;&gt;&lt;/span&gt;&lt;br /&gt;Note that you must be logged on as an administrator or a member of the  Administrators group in order to complete this procedure. If your &lt;a id=&quot;KonaLink8&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;computer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; is connected to a network, network policy settings may also prevent you from completing this procedure. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;How to Install and Enable the SNMP Service&lt;/strong&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;In Windows XP and &lt;a id=&quot;KonaLink5&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;Windows &lt;/span&gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;2003&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, click &lt;strong&gt;Start&lt;/strong&gt; button, then go to &lt;strong&gt;Control Panel&lt;/strong&gt; and run &lt;strong&gt;Add or &lt;a id=&quot;KonaLink6&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;color: blue ! important;font-family:&amp;quot;;font-size:13px;color:transparent;&quot;   &gt;Remove &lt;/span&gt;&lt;span class=&quot;kLink&quot; style=&quot;color: blue ! important;font-family:&amp;quot;;font-size:13px;color:transparent;&quot;   &gt;Programs&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;position: relative;&quot; class=&quot;preLoadWrap&quot; id=&quot;preLoadWrap6&quot;&gt;&lt;div style=&quot;position: absolute; z-index: 2147482649; top: -32px; left: -18px; display: none;&quot; id=&quot;preLoadLayer6&quot;&gt;&lt;img style=&quot;border: medium none; width: 22px; height: 22px;&quot; src=&quot;http://kona.kontera.com/javascript/lib/imgs/grey_loader.gif&quot; class=&quot;preloadImg&quot; /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; applet. On Add or Remove Programs dialog, click &lt;strong&gt;Add/Remove Windows Components&lt;/strong&gt; to open Windows Components wizard. &lt;p&gt;In &lt;a id=&quot;KonaLink9&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;Windows &lt;/span&gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;Vista&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, click &lt;strong&gt;Start&lt;/strong&gt; button, then go to &lt;strong&gt;Control Panel&lt;/strong&gt;. Click on &lt;strong&gt;Programs&lt;/strong&gt; link and then click on &lt;strong&gt;Turn Windows features on or off&lt;/strong&gt;. If you’re prompted with User Account Control dialog, click “Continue”. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;In Components of Windows XP and 2003, click on the &lt;strong&gt;Management and Monitoring Tools&lt;/strong&gt; (make sure that you do not select or clear, tick or untick its check box to change the existing selection), and then click &lt;strong&gt;Details&lt;/strong&gt;. &lt;p&gt;In Windows Features of Vista, locate &lt;strong&gt;SNMP feature&lt;/strong&gt;. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;Select and tick the check box of &lt;strong&gt;Simple Network Management Protocol&lt;/strong&gt; or &lt;strong&gt;SNMP feature&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;. Also click &lt;strong&gt;Next&lt;/strong&gt; if  you’re in Windows XP or 2003. SNMP service will be installed on the  system. You may require to insert the Windows setup CD/DVD disc into &lt;a id=&quot;KonaLink7&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;optical &lt;/span&gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;drive&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;SNMP will start automatically after installation. But it’s  recommended to verify the service status from Services in Control Panel,  and if it’s stopped, you can start the SNMP service from there. &lt;p&gt;Two new services will be created:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;SNMP Service which is the main engine with agents that monitor the  activity in the network devices and report the information to the  monitoring console workstation.&lt;/li&gt;&lt;li&gt;SNMP Trap Service which receives trap messages generated by local or  remote SNMP agents and forwards the messages to SNMP management  programs running on this computer.&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Windows doesn’t assign any community string to the SNMP service by  default, and also only allow access from localhost or local devices.  Further configuration is needed to add in desired community string,  which act as the password to grant reply to any SNMP request from remote  system.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How to Configure SNMP Service (Add “public” community string)&lt;/strong&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Click on &lt;strong&gt;Start&lt;/strong&gt; button, then go to &lt;strong&gt;Control Panel&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;In Windows Vista, click on &lt;strong&gt;System and Maintenance&lt;/strong&gt; link.&lt;/li&gt;&lt;li&gt;Open &lt;strong&gt;Adminstrative Tools&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Run &lt;strong&gt;Services&lt;/strong&gt; applet.&lt;/li&gt;&lt;li&gt;Locate and right click on &lt;strong&gt;SNMP Service&lt;/strong&gt;, then select &lt;strong&gt;Properties&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;In SNMP Service Properties window, click on &lt;strong&gt;Traps&lt;/strong&gt; tab.&lt;/li&gt;&lt;li&gt;In the “Community name” text box, enter &lt;strong&gt;public&lt;/strong&gt; or any other case-sensitive SNMP community name to which this computer will send trap messages.&lt;/li&gt;&lt;li&gt;Click on &lt;strong&gt;Add to list&lt;/strong&gt; button. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to Configure &lt;a id=&quot;KonaLink10&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://www.mydigitallife.info/2007/11/01/install-and-enable-snmp-service-in-windows-xp-vista-and-2003/#&quot;&gt;&lt;span style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;;font-family:&amp;quot;;font-size:13px;color:#b00000;&quot;   &gt;Security&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; for SNMP Service for a Community&lt;/strong&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt;Continue from above steps, click on &lt;strong&gt;Security&lt;/strong&gt; tab. If you already close SNMP Service Properties window, re-open it.&lt;/li&gt;&lt;li&gt;Under “Accepted community names” section, click &lt;strong&gt;Add&lt;/strong&gt; button.&lt;/li&gt;&lt;li&gt;Select the appropriate permission level for the community string in  the “Community Rights” drop down list to specify how the host processes  SNMP requests from the selected community. Normally &lt;strong&gt;READ ONLY&lt;/strong&gt; is recommended.&lt;/li&gt;&lt;li&gt;In the “Community Name” box, type &lt;strong&gt;public&lt;/strong&gt; or any case-sensitive community name that you want.&lt;/li&gt;&lt;li&gt;Click on &lt;strong&gt;Add&lt;/strong&gt; button.&lt;/li&gt;&lt;li&gt;In order for the SNMP service to accept and receive SNMP request  packets from any host on the network, including external remote host  regardless of identity, click &lt;strong&gt;Accept SNMP packets from any host&lt;/strong&gt;. &lt;p&gt;To limit the acceptance of SNMP packets, click &lt;strong&gt;Accept SNMP packets from these hosts&lt;/strong&gt;, and then click &lt;strong&gt;Add&lt;/strong&gt;,  and then type the appropriate host name, IP or IPX address in the Host  name, IP or IPX address box. You can restrict the access to local host  or limited servers only by using this setting. Finish off by clicking &lt;strong&gt;Add&lt;/strong&gt; button again.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt;Click OK when done. Note that you may need to reboot for the settings to take effect.&lt;/li&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/2947652558471949150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/install-and-enable-snmp-service-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/2947652558471949150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/2947652558471949150'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/install-and-enable-snmp-service-in.html' title='Install and Enable SNMP Service in Windows XP, Vista and 2003'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-6822976269987508597</id><published>2010-09-01T05:35:00.001-07:00</published><updated>2010-09-01T05:35:58.950-07:00</updated><title type='text'>iftop</title><content type='html'>&lt;p&gt;iftop show bandwidth usage like top show cpu and memory usage. &lt;/p&gt;&lt;p&gt;First install required software. &lt;/p&gt; &lt;pre&gt;yum install libpcap libpcap-devel ncurses ncurses-devel&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Now install iftop. Make sure you download latest version from visiting the site &lt;a href=&quot;http://www.ex-parrot.com/pdw/iftop/&quot; class=&quot;external free&quot; rel=&quot;nofollow&quot;&gt;http://www.ex-parrot.com/pdw/iftop/&lt;/a&gt; &lt;/p&gt; &lt;pre&gt;cd /usr/local/src&lt;br /&gt;wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz&lt;br /&gt;tar -zxvf iftop-0.17.tar.gz&lt;br /&gt;cd iftop-0.17&lt;br /&gt;./configure&lt;br /&gt;make &amp;amp;&amp;amp; make install&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;By default iftop monitor eth0. To monitor traffic on eth1, run &lt;/p&gt; &lt;pre&gt;iftop -i eth1&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/6822976269987508597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/iftop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/6822976269987508597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/6822976269987508597'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/iftop.html' title='iftop'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-5581941112649071675</id><published>2010-09-01T05:26:00.000-07:00</published><updated>2010-09-01T05:28:24.850-07:00</updated><title type='text'>Install VNstat on nagios</title><content type='html'>&lt;pre&gt;cd /usr/local/src&lt;br /&gt;wget http://humdi.net/vnstat/vnstat-1.10.tar.gz&lt;br /&gt;tar -zxvf vnstat-1.10.tar.gz&lt;br /&gt;cd vnstat-*&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Create Database&lt;/b&gt; &lt;/p&gt;&lt;p&gt;To monitor eth1 &lt;/p&gt;&lt;p&gt;/usr/bin/vnstat -u -i eth1 &lt;/p&gt;&lt;p&gt;For eth0 &lt;/p&gt;&lt;p&gt;/usr/bin/vnstat -u -i eth0 &lt;/p&gt;&lt;h2&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Set_init_Script&quot;&gt;Set init Script &lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;pre&gt;cp examples/init.d/redhat/vnstat /etc/init.d&lt;br /&gt;chkconfig --add vnstat&lt;br /&gt;chkconfig vnstat on&lt;br /&gt;service vnstat start&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;After installation, it take some time to generate bandwidth usage  stats. So you need to wait few hours before you can check the stats.  During the time, vnstat cronjob runs and collect data from your server  to generate the report. &lt;/p&gt;&lt;p&gt;To see the bandwidth usage stat&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;vnstat&lt;br /&gt;vnstat -d&lt;br /&gt;vnstat -m&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;Here is an sample vnstat report&lt;br /&gt;[root@server18 vnstat-1.5]# vnstat&lt;br /&gt;Database updated: Thu Jan 10 10:52:36 2008&lt;br /&gt;&lt;br /&gt;       eth1&lt;br /&gt;&lt;br /&gt;          received:       5.24 MB (3.3%)&lt;br /&gt;       transmitted:     147.44 MB (96.7%)&lt;br /&gt;             total:     152.68 MB&lt;br /&gt;&lt;br /&gt;                       rx     |     tx     |  total&lt;br /&gt;       -----------------------+------------+-----------&lt;br /&gt;           today      5.24 MB |  147.44 MB |  152.68 MB&lt;br /&gt;       -----------------------+------------+-----------&lt;br /&gt;       estimated        11 MB |     324 MB |     335 MB&lt;br /&gt;[root@server18 vnstat-1.5]#&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/5581941112649071675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/install-vnstat-on-nagios.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/5581941112649071675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/5581941112649071675'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2010/09/install-vnstat-on-nagios.html' title='Install VNstat on nagios'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217436438174054965.post-4463915243560354995</id><published>2009-10-12T00:29:00.001-07:00</published><updated>2009-10-12T00:29:51.992-07:00</updated><title type='text'>New version joomla 1.5.14</title><content type='html'>Some changes</content><link rel='replies' type='application/atom+xml' href='http://shuchishukla.blogspot.com/feeds/4463915243560354995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shuchishukla.blogspot.com/2009/10/new-version-joomla-1514.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/4463915243560354995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217436438174054965/posts/default/4463915243560354995'/><link rel='alternate' type='text/html' href='http://shuchishukla.blogspot.com/2009/10/new-version-joomla-1514.html' title='New version joomla 1.5.14'/><author><name>Shuchi Shukla</name><uri>http://www.blogger.com/profile/13751094603203070729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>