📄 classobj.examples.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <title>Examples</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body><div 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> <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">Spinach</var> adds a method to cook it and another to find out if it is cooked. </p> <p class="para"> <div class="example"> <p><b>Example #1 classes.inc</b></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"> <p><b>Example #2 test_script.php</b></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$prop = $val\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 $method()\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 $obj 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 $class\n"</span><span style="color: #007700">;<br />} else {<br /> echo </span><span style="color: #DD0000">"Object $obj does not belong to a subclass of $class\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">$leafy</var> is an instance of the class <b class="classname">Spinach</b> which is a subclass of <b class="classname">Vegetable</b>, therefore the last part of the script above will output: </p></div> <div class="example-contents"><pre><div class="cdata"><pre> [...]Parentage:Object leafy does not belong to a subclass of SpinachObject leafy belongs to class spinach a subclass of Vegetable</pre></div> </pre></div> </div> </p></div><hr /><div 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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -