Sophie

Sophie

distrib > Mageia > 4 > i586 > by-pkgid > f800694edefe91adea2624f711a41a2d > files > 8873

php-manual-en-5.5.7-1.mga4.noarch.rpm

<!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>class</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="oop4.html">Classes and Objects (PHP 4)</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="keyword.extends.html">extends</a></div>
 <div class="up"><a href="oop4.html">Classes and Objects (PHP 4)</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="keyword.class" class="sect1">
   <h2 class="title"><em>class</em></h2>
   <p class="para">
    A class is a collection of variables and functions working with
    these variables. Variables are defined by <em>var</em> and
    functions by <em>function</em>. 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">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Cart&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$items</span><span style="color: #007700">;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Items&nbsp;in&nbsp;our&nbsp;shopping&nbsp;cart<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Add&nbsp;$num&nbsp;articles&nbsp;of&nbsp;$artnr&nbsp;to&nbsp;the&nbsp;cart<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">add_item</span><span style="color: #007700">(</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">]&nbsp;+=&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Take&nbsp;$num&nbsp;articles&nbsp;of&nbsp;$artnr&nbsp;out&nbsp;of&nbsp;the&nbsp;cart<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">remove_item</span><span style="color: #007700">(</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">]&nbsp;&gt;&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">]&nbsp;-=&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">items</span><span style="color: #007700">[</span><span style="color: #0000BB">$artnr</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000BB">?&gt;</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"><strong class="warning">Warning</strong>
    <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">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">test&nbsp;</span><span style="color: #007700">{<br /></span><span style="color: #0000BB">?&gt;<br />&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">test</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;</span><span style="color: #DD0000">'OK'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000BB">?&gt;</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">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">test&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">test</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">print&nbsp;</span><span style="color: #DD0000">'OK'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
      </div>

     </div>
    </p>
   </div>

   <p class="simpara">
    The following cautionary notes are valid for PHP 4.
   </p>
    
   <div class="caution"><strong class="caution">Caution</strong>
    <p class="simpara">
     The name <em>stdClass</em> is used internally by
     Zend and is reserved. You cannot have a class named
     <em>stdClass</em> in PHP.
    </p>
   </div>
    
   <div class="caution"><strong class="caution">Caution</strong>
    <p class="simpara">
      The function names <em>__sleep</em> and
      <em>__wakeup</em> 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"><strong class="caution">Caution</strong>
    <p class="simpara">
      PHP reserves all function names starting with <em>__</em> as magical.
      It is recommended that you do not use function names with
      <em>__</em> in PHP unless you want some documented magic functionality.
    </p>
   </div>

   <p class="simpara">
    In PHP 4, only constant initializers for <em>var</em>
    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">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Cart&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;None&nbsp;of&nbsp;these&nbsp;will&nbsp;work&nbsp;in&nbsp;PHP&nbsp;4.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">$todays_date&nbsp;</span><span style="color: #007700">=&nbsp;</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 />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$firstname</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$owner&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'Fred&nbsp;'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'Jones'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;Arrays&nbsp;containing&nbsp;constant&nbsp;values&nbsp;will,&nbsp;though.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">$items&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">"VCR"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"TV"</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #FF8000">/*&nbsp;This&nbsp;is&nbsp;how&nbsp;it&nbsp;should&nbsp;be&nbsp;done.&nbsp;*/<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Cart&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$todays_date</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$name</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$owner</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$items&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">"VCR"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"TV"</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">Cart</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">todays_date&nbsp;</span><span style="color: #007700">=&nbsp;</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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">[</span><span style="color: #DD0000">'firstname'</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;etc.&nbsp;.&nbsp;.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">}<br />}<br /></span><span style="color: #0000BB">?&gt;</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 <em>new</em> operator.
   </p>
 
   <div class="informalexample">
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$cart&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">Cart</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$cart</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">add_item</span><span style="color: #007700">(</span><span style="color: #DD0000">"10"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$another_cart&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">Cart</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$another_cart</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">add_item</span><span style="color: #007700">(</span><span style="color: #DD0000">"0815"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

   </div>
 
   <p class="para">
    This creates the objects <var class="varname"><var class="varname">$cart</var></var> and
    <var class="varname"><var class="varname">$another_cart</var></var>, both of the class Cart. The function
    <em>add_item()</em> of the <var class="varname"><var class="varname">$cart</var></var> object is being called to add 1
    item of article number 10 to the <var class="varname"><var class="varname">$cart</var></var>. 3 items of
    article number 0815 are being added to <var class="varname"><var class="varname">$another_cart</var></var>.
   </p>
   
   <p class="para">
    Both, <var class="varname"><var class="varname">$cart</var></var> and <var class="varname"><var class="varname">$another_cart</var></var>, have
    functions <em>add_item()</em>, <em>remove_item()</em>
    and a variable <var class="varname"><var class="varname">items</var></var>. These are distinct functions and variables. You can
    think of the objects as something similar to directories in a filesystem.
    In a filesystem you can have two different files
    <var class="filename">README.TXT</var>, as long as they are in different directories.
    Just like with directories where you&#039;ll have to type the full pathname in
    order to reach each file from the toplevel directory, you have to specify
    the complete name of the function you want to call: in PHP terms, the
    toplevel directory would be the global namespace, and the pathname separator
    would be <em>-&gt;</em>.  Thus, the
    names <var class="varname"><var class="varname">$cart->items</var></var> and
    <var class="varname"><var class="varname">$another_cart->items</var></var> name two different variables.
    Note that the variable is named <var class="varname"><var class="varname">$cart->items</var></var>, not
    <var class="varname"><var class="varname">$cart->$items</var></var>, that is, a variable name in PHP has
    only a single dollar sign (<em>$</em>).
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">//&nbsp;correct,&nbsp;single&nbsp;$<br /></span><span style="color: #0000BB">$cart</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">items&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">"10"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);&nbsp;<br /><br /></span><span style="color: #FF8000">//&nbsp;invalid,&nbsp;because&nbsp;$cart-&gt;$items&nbsp;becomes&nbsp;$cart-&gt;""<br /></span><span style="color: #0000BB">$cart</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$items&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">"10"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;correct,&nbsp;but&nbsp;may&nbsp;or&nbsp;may&nbsp;not&nbsp;be&nbsp;what&nbsp;was&nbsp;intended:<br />//&nbsp;$cart-&gt;$myvar&nbsp;becomes&nbsp;$cart-&gt;items<br /></span><span style="color: #0000BB">$myvar&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'items'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$cart</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$myvar&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">"10"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);&nbsp;&nbsp;<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

   </div>

   <p class="para">
    Within a class definition, you do not know under which name the object
    will be accessible in your program: at the time the Cart class was
    written, it was unknown whether the object would be named
    <var class="varname"><var class="varname">$cart</var></var>, <var class="varname"><var class="varname">$another_cart</var></var>, or something
    else later. Thus,
    you cannot write <var class="varname"><var class="varname">$cart->items</var></var> within the Cart class
    itself. Instead, in order to be able to access its own functions and
    variables from within a class, one can use the pseudo-variable
    <var class="varname"><var class="varname">$this</var></var> which can be read as &#039;my own&#039; or &#039;current
    object&#039;. Thus, &#039;<var class="varname"><var class="varname">$this->items[$artnr]</var></var> +=
    <var class="varname"><var class="varname">$num</var></var>&#039; can be read as &#039;add <var class="varname"><var class="varname">$num</var></var> to
    the <var class="varname"><var class="varname">$artnr</var></var> counter of my own items array&#039; or &#039;add
    <var class="varname"><var class="varname">$num</var></var> to the <var class="varname"><var class="varname">$artnr</var></var> counter of the
    items array within the current object&#039;.
   </p>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     The <var class="varname"><var class="varname">$this</var></var> pseudo-variable is not usually defined if
     the method in which it is hosted is called statically. This is not,
     however, a strict rule: <var class="varname"><var class="varname">$this</var></var> is defined if a method is
     called statically from within another object. In this case, the value of
     <var class="varname"><var class="varname">$this</var></var> is that of the calling object. This is
     illustrated in the following example:
     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">A<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">foo</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isset(</span><span style="color: #0000BB">$this</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">'$this&nbsp;is&nbsp;defined&nbsp;('</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">")\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"\$this&nbsp;is&nbsp;not&nbsp;defined.\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />class&nbsp;</span><span style="color: #0000BB">B<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">bar</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">A</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$b&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">B</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bar</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">bar</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>     
      </div>

      <p class="para">The above example will output:</p>
      <div class="example-contents screen">
<div class="cdata"><pre>
$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.
</pre></div>
      </div>
     </div>
    </p>
   </p></blockquote>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
    There are some nice functions to handle classes and objects. You might want
    to take a look at the <a href="ref.classobj.html" class="link">Class/Object
    Functions</a>.
    </p>
   </p></blockquote>
  </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="oop4.html">Classes and Objects (PHP 4)</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="keyword.extends.html">extends</a></div>
 <div class="up"><a href="oop4.html">Classes and Objects (PHP 4)</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>