Location: PHPKode > projects > Aukyla Document Management System > doc/html/a00234.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Aukyla PHP Framework</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="StyleSheet" href="auton.css" type="text/css" media="screen">
  </head>

  <body>
    <div id="mainmenu">
      <a href="http://www.auton.nl/" class="home">Home</a>
    </div>
    <div id="submenu">
      <a class="logo" href="http://www.auton.nl/"></a>

      <div class="head">Ads</div>
      <a href="http://sourceforge.net/"><img src="http://sourceforge.net/sflogo.php?group_id=116358&amp;type=1" alt="SourceForge.net Logo" style="padding: 2px 4px; width: 88px; height: 31px; border: 0px"></a>
      <a href="http://getfirefox.com/" title="Get Firefox - The Browser, Reloaded."><img src="http://www.mozilla.org/products/firefox/buttons/getfirefox_small.png" alt="Get Firefox" style="width: 110px; height: 32px; border: 0px"></a>
    </div>
    <div id="main">
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">base</a></div>
<h1>Signal.php</h1><div class="fragment"><pre class="fragment">00001 &lt;?php
00002 <span class="comment">/*</span>
00003 <span class="comment">     Signal.php, a simple signalling system for PHP</span>
00004 <span class="comment">     Copyright (C) 2003-2005 Arend van Beelen, Auton Rijnsburg</span>
00005 <span class="comment"></span>
00006 <span class="comment">     This program is free software; you can redistribute it and/or modify it</span>
00007 <span class="comment">     under the terms of the GNU General Public License as published by the Free</span>
00008 <span class="comment">     Software Foundation; either version 2 of the License, or (at your option)</span>
00009 <span class="comment">     any later version.</span>
00010 <span class="comment"></span>
00011 <span class="comment">     This program is distributed in the hope that it will be useful, but WITHOUT</span>
00012 <span class="comment">     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span>
00013 <span class="comment">     FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for</span>
00014 <span class="comment">     more details.</span>
00015 <span class="comment"></span>
00016 <span class="comment">     You should have received a copy of the GNU General Public License along</span>
00017 <span class="comment">     with this program; if not, write to the Free Software Foundation, Inc.,</span>
00018 <span class="comment">     59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</span>
00019 <span class="comment"></span>
00020 <span class="comment">     For any questions, comments or whatever, you may mail me at: hide@address.com</span>
00021 <span class="comment">*/</span>
00022 
<a name="l00029"></a><a class="code" href="a00152.html">00029</a> <span class="keyword">class </span><a class="code" href="a00152.html">Signal</a>
00030 {
00031         <span class="keyword">private</span> function instance()
00032         {
00033                 <span class="keywordflow">if</span>(self::$instance == null)
00034                 {
00035                         self::$instance = <span class="keyword">new</span> <a class="code" href="a00152.html">Signal</a>();
00036                 }
00037 
00038                 <span class="keywordflow">return</span> self::$instance;
00039         }
00040 
00041         <span class="keyword">private</span> function __construct()
00042         {
00043                 $this-&gt;slots = array();
00044         }
00045 
<a name="l00053"></a><a class="code" href="a00152.html#e0">00053</a>         <span class="keyword">public</span> <span class="keyword">static</span> function connect($signal, $slot)
00054         {
00055                 $instance = self::instance();
00056 
00057                 <span class="comment">// add the signal/slot relation</span>
00058                 $instance-&gt;slots[$signal][] = $slot;
00059 
00060                 <span class="keywordflow">return</span>;
00061         }
00062 
<a name="l00069"></a><a class="code" href="a00152.html#e1">00069</a>         <span class="keyword">public</span> <span class="keyword">static</span> function emit($signal)
00070         {
00071                 $instance = self::instance();
00072 
00073                 <span class="keywordflow">if</span>(!isset($instance-&gt;slots[$signal]))
00074                 {
00075                         <span class="keywordflow">return</span>;
00076                 }
00077 
00078                 <span class="comment">// get the argument list</span>
00079                 $args = func_get_args();
00080                 unset($args[0]); <span class="comment">// the first argument was the signal name itself</span>
00081 
00082                 <span class="comment">// call all slots for this signal</span>
00083                 foreach($instance-&gt;slots[$signal] as $slot)
00084                 {
00085                         call_user_func_array($slot, $args);
00086                 }
00087 
00088                 <span class="keywordflow">return</span>;
00089         }
00090 
00091         <span class="keyword">private</span> <span class="keyword">static</span> $instance = null;
00092         <span class="keyword">private</span> $slots;
00093 }
00094 
00095 ?&gt;
</pre></div>    </div>
  </body>
</html>
Return current item: Aukyla Document Management System