<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Examples</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="classobj.constants.html">Predefined Constants</a></div> <div class="next" style="text-align: right; float: right;"><a href="ref.classobj.html">Classes/Object Functions</a></div> <div class="up"><a href="book.classobj.html">Classes/Objects</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="classobj.examples" class="appendix"> <h1>Examples</h1> <p class="para"> In this example, we first define a base class and an extension of the class. The base class describes a general vegetable, whether it is edible or not and what is its color. The subclass <var class="varname"><var class="varname">Spinach</var></var> adds a method to cook it and another to find out if it is cooked. </p> <p class="para"> <div class="example" id="example-5040"> <p><strong>Example #1 classes.inc</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /><br /></span><span style="color: #FF8000">// base class with member properties and methods<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Vegetable </span><span style="color: #007700">{<br /><br /> var </span><span style="color: #0000BB">$edible</span><span style="color: #007700">;<br /> var </span><span style="color: #0000BB">$color</span><span style="color: #007700">;<br /><br /> function </span><span style="color: #0000BB">Vegetable</span><span style="color: #007700">(</span><span style="color: #0000BB">$edible</span><span style="color: #007700">, </span><span style="color: #0000BB">$color</span><span style="color: #007700">=</span><span style="color: #DD0000">"green"</span><span style="color: #007700">) <br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">edible </span><span style="color: #007700">= </span><span style="color: #0000BB">$edible</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">color </span><span style="color: #007700">= </span><span style="color: #0000BB">$color</span><span style="color: #007700">;<br /> }<br /><br /> function </span><span style="color: #0000BB">is_edible</span><span style="color: #007700">() <br /> {<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">edible</span><span style="color: #007700">;<br /> }<br /><br /> function </span><span style="color: #0000BB">what_color</span><span style="color: #007700">() <br /> {<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">color</span><span style="color: #007700">;<br /> }<br /> <br />} </span><span style="color: #FF8000">// end of class Vegetable<br /><br />// extends the base class<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Spinach </span><span style="color: #007700">extends </span><span style="color: #0000BB">Vegetable </span><span style="color: #007700">{<br /><br /> var </span><span style="color: #0000BB">$cooked </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /><br /> function </span><span style="color: #0000BB">Spinach</span><span style="color: #007700">() <br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">Vegetable</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #DD0000">"green"</span><span style="color: #007700">);<br /> }<br /><br /> function </span><span style="color: #0000BB">cook_it</span><span style="color: #007700">() <br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">cooked </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /> }<br /><br /> function </span><span style="color: #0000BB">is_cooked</span><span style="color: #007700">() <br /> {<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">cooked</span><span style="color: #007700">;<br /> }<br /> <br />} </span><span style="color: #FF8000">// end of class Spinach<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </p> <p class="para"> We then instantiate 2 objects from these classes and print out information about them, including their class parentage. We also define some utility functions, mainly to have a nice printout of the variables. </p> <p class="para"> <div class="example" id="example-5041"> <p><strong>Example #2 test_script.php</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <pre><br /><span style="color: #0000BB"><?php<br /><br /></span><span style="color: #007700">include </span><span style="color: #DD0000">"classes.inc"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// utility functions<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">print_vars</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">) <br />{<br />foreach (</span><span style="color: #0000BB">get_object_vars</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">) as </span><span style="color: #0000BB">$prop </span><span style="color: #007700">=> </span><span style="color: #0000BB">$val</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">"\t</span><span style="color: #0000BB">$prop</span><span style="color: #DD0000"> = </span><span style="color: #0000BB">$val</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br />}<br /><br />function </span><span style="color: #0000BB">print_methods</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">) <br />{<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= </span><span style="color: #0000BB">get_class_methods</span><span style="color: #007700">(</span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">));<br />foreach (</span><span style="color: #0000BB">$arr </span><span style="color: #007700">as </span><span style="color: #0000BB">$method</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">"\tfunction </span><span style="color: #0000BB">$method</span><span style="color: #DD0000">()\n"</span><span style="color: #007700">;<br />}<br />}<br /><br />function </span><span style="color: #0000BB">class_parentage</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">, </span><span style="color: #0000BB">$class</span><span style="color: #007700">) <br />{<br />if (</span><span style="color: #0000BB">is_subclass_of</span><span style="color: #007700">(</span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">[</span><span style="color: #0000BB">$obj</span><span style="color: #007700">], </span><span style="color: #0000BB">$class</span><span style="color: #007700">)) {<br /> echo </span><span style="color: #DD0000">"Object </span><span style="color: #0000BB">$obj</span><span style="color: #DD0000"> belongs to class " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_class</span><span style="color: #007700">($</span><span style="color: #0000BB">$obj</span><span style="color: #007700">);<br /> echo </span><span style="color: #DD0000">" a subclass of </span><span style="color: #0000BB">$class</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />} else {<br /> echo </span><span style="color: #DD0000">"Object </span><span style="color: #0000BB">$obj</span><span style="color: #DD0000"> does not belong to a subclass of </span><span style="color: #0000BB">$class</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br />}<br /><br /></span><span style="color: #FF8000">// instantiate 2 objects<br /><br /></span><span style="color: #0000BB">$veggie </span><span style="color: #007700">= new </span><span style="color: #0000BB">Vegetable</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #DD0000">"blue"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$leafy </span><span style="color: #007700">= new </span><span style="color: #0000BB">Spinach</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// print out information about objects<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"veggie: CLASS " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$veggie</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"leafy: CLASS " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">", PARENT " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_parent_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// show veggie properties<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"\nveggie: Properties\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">print_vars</span><span style="color: #007700">(</span><span style="color: #0000BB">$veggie</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// and leafy methods<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"\nleafy: Methods\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">print_methods</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"\nParentage:\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">class_parentage</span><span style="color: #007700">(</span><span style="color: #DD0000">"leafy"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Spinach"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">class_parentage</span><span style="color: #007700">(</span><span style="color: #DD0000">"leafy"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Vegetable"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?><br /></span></pre></span> </code></div> </div> <div class="example-contents"><p> One important thing to note in the example above is that the object <var class="varname"><var class="varname">$leafy</var></var> is an instance of the class <strong class="classname">Spinach</strong> which is a subclass of <strong class="classname">Vegetable</strong>, therefore the last part of the script above will output: </p></div> <div class="example-contents screen"> <div class="cdata"><pre> [...] Parentage: Object leafy does not belong to a subclass of Spinach Object leafy belongs to class spinach a subclass of Vegetable </pre></div> </div> </div> </p> </div> <hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="classobj.constants.html">Predefined Constants</a></div> <div class="next" style="text-align: right; float: right;"><a href="ref.classobj.html">Classes/Object Functions</a></div> <div class="up"><a href="book.classobj.html">Classes/Objects</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>