📄 language.oop.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <title>Classes and Objects (PHP 4)</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="functions.internal.html">Internal (built-in) functions</a></div> <div class="next" style="text-align: right; float: right;"><a href="keyword.extends.html">extends</a></div> <div class="up"><a href="langref.html">Language Reference</a></div> <div class="home"><a href="index.html">PHP Manual</a></div></div><hr /><div> <h1>Classes and Objects (PHP 4)</h1><h2>Table of Contents</h2><ul class="chunklist chunklist_chapter"><li><a href="keyword.extends.html">extends</a></li><li><a href="language.oop.constructor.html">Constructors</a></li><li><a href="keyword.paamayim-nekudotayim.html">Scope Resolution Operator (::)</a></li><li><a href="keyword.parent.html">parent</a></li><li><a href="language.oop.serialization.html">Serializing objects - objects in sessions</a></li><li><a href="language.oop.magic-functions.html">The magic functions __sleep and __wakeup</a></li><li><a href="language.oop.newref.html">References inside the constructor</a></li><li><a href="language.oop.object-comparison.html">Comparing objects</a></li></ul> <div id="keyword.class" class="sect1"> <h2 class="title"><i>class</i></h2> <p class="para"> A class is a collection of variables and functions working with these variables. Variables are defined by <i>var</i> and functions by <i>function</i>. A class is defined using the following syntax: </p> <p class="para"> <div class="informalexample"> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Cart </span><span style="color: #007700">{<br /> var </span><span style="color: #0000BB">$items</span><span style="color: #007700">; </span><span style="color: #FF8000">// Items in our shopping cart<br /><br /> // Add $num articles of $artnr to the cart<br /><br /> </span><span style="color: #007700">function </span><span style="color: #0000BB">add_item</span><span style="color: #007700">(</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">, </span><span style="color: #0000BB">$num</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">] += </span><span style="color: #0000BB">$num</span><span style="color: #007700">;<br /> }<br /><br /> </span><span style="color: #FF8000">// Take $num articles of $artnr out of the cart<br /><br /> </span><span style="color: #007700">function </span><span style="color: #0000BB">remove_item</span><span style="color: #007700">(</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">, </span><span style="color: #0000BB">$num</span><span style="color: #007700">) {<br /> if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">] > </span><span style="color: #0000BB">$num</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">] -= </span><span style="color: #0000BB">$num</span><span style="color: #007700">;<br /> return </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /> } elseif (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">] == </span><span style="color: #0000BB">$num</span><span style="color: #007700">) {<br /> unset(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">]);<br /> return </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /> } else {<br /> return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /> }<br /> }<br />}<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> </p> <p class="para"> This defines a class named Cart that consists of an associative array of articles in the cart and two functions to add and remove items from this cart. </p> <div class="warning"><b class="warning">Warning</b> <p class="simpara"> You can <em class="emphasis">NOT</em> break up a class definition into multiple files. You also can <em class="emphasis">NOT</em> break a class definition into multiple PHP blocks, unless the break is within a method declaration. The following will not work: </p> <p class="para"> <div class="informalexample"> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">test </span><span style="color: #007700">{<br /></span><span style="color: #0000BB">?><br /><?php<br /> </span><span style="color: #007700">function </span><span style="color: #0000BB">test</span><span style="color: #007700">() {<br /> print </span><span style="color: #DD0000">'OK'</span><span style="color: #007700">;<br /> }<br />}<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> </p> <p class="simpara"> However, the following is allowed: </p> <p class="para"> <div class="informalexample"> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">test </span><span style="color: #007700">{<br /> function </span><span style="color: #0000BB">test</span><span style="color: #007700">() {<br /> </span><span style="color: #0000BB">?><br /></span> <span style="color: #0000BB"><?php<br /> </span><span style="color: #007700">print </span><span style="color: #DD0000">'OK'</span><span style="color: #007700">;<br /> }<br />}<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> </p> </div> <p class="simpara"> The following cautionary notes are valid for PHP 4. </p> <div class="caution"><b class="caution">Caution</b> <p class="simpara"> The name <i>stdClass</i> is used internally by Zend and is reserved. You cannot have a class named <i>stdClass</i> in PHP. </p> </div> <div class="caution"><b class="caution">Caution</b> <p class="simpara"> The function names <i>__sleep</i> and <i>__wakeup</i> are magical in PHP classes. You cannot have functions with these names in any of your classes unless you want the magic functionality associated with them. See below for more information. </p> </div> <div class="caution"><b class="caution">Caution</b> <p class="simpara"> PHP reserves all function names starting with __ as magical. It is recommended that you do not use function names with __ in PHP unless you want some documented magic functionality. </p> </div> <p class="simpara"> In PHP 4, only constant initializers for <i>var</i> variables are allowed. To initialize variables with non-constant values, you need an initialization function which is called automatically when an object is being constructed from the class. Such a function is called a constructor (see below). </p> <div class="informalexample"> <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Cart </span><span style="color: #007700">{<br /> </span><span style="color: #FF8000">/* None of these will work in PHP 4. */<br /> </span><span style="color: #007700">var </span><span style="color: #0000BB">$todays_date </span><span style="color: #007700">= </span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d"</span><span style="color: #007700">);<br /> var </span><span style="color: #0000BB">$name </span><span style="color: #007700">= </span><span style="color: #0000BB">$firstname</span><span style="color: #007700">;<br /> var </span><span style="color: #0000BB">$owner </span><span style="color: #007700">= </span><span style="color: #DD0000">'Fred ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'Jones'</span><span style="color: #007700">;<br /> </span><span style="color: #FF8000">/* Arrays containing constant values will, though. */<br /> </span><span style="color: #007700">var </span><span style="color: #0000BB">$items </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"VCR"</span><span style="color: #007700">, </span><span style="color: #DD0000">"TV"</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #FF8000">/* This is how it should be done. */<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Cart </span><span style="color: #007700">{<br /> var </span><span style="color: #0000BB">$todays_date</span><span style="color: #007700">;<br /> var </span><span style="color: #0000BB">$name</span><span style="color: #007700">;<br /> var </span><span style="color: #0000BB">$owner</span><span style="color: #007700">;<br /> var </span><span style="color: #0000BB">$items </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"VCR"</span><span style="color: #007700">, </span><span style="color: #DD0000">"TV"</span><span style="color: #007700">);<br /><br /> function </span><span style="color: #0000BB">Cart</span><span style="color: #007700">() {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">todays_date </span><span style="color: #007700">= </span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d"</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">name </span><span style="color: #007700">= </span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">[</span><span style="color: #DD0000">'firstname'</span><span style="color: #007700">];<br /> </span><span style="color: #FF8000">/* etc. . . */<br /> </span><span style="color: #007700">}<br />}<br /></span><span style="color: #0000BB">?></span></span></code></div> </div> </div> <p class="para"> Classes are types, that is, they are blueprints for actual variables. You have to create a variable of the desired type with the <i>new</i> operator.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -