<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Events — Doctrine MongoDB ODM 1.1.5 documentation</title> <link rel="stylesheet" href="../_static/bootstrap/css/bootstrap.min.css" type="text/css" /> <link rel="stylesheet" href="../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/layout.css" type="text/css" /> <link rel="stylesheet" href="../_static/configurationblock.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '1.1.5', COLLAPSE_MODINDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/configurationblock.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/configurationblock.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/configurationblock.js"></script> <script src="../_static/bootstrap/js/bootstrap.min.js"></script> <script type="text/javascript"> <!-- $(document).ready(function() { $("#versions").change(function() { var docsUrl = $(this).val(); window.location.href = docsUrl; }); }); --> </script> <link rel="shortcut icon" href="../_static/doctrine.ico"/> <link rel="search" title="Search" href="../search.html" /> <link rel="top" title="Doctrine MongoDB ODM 1.1.5 documentation" href="../index.html" /> </head> <body> <div id="wrapper"> <div id="header"> <h1 id="h1title"></h1> <div id="logo"> <a href="http://www.doctrine-project.org/">Doctrine - PHP Database Libraries</a> </div> </div> <div id="nav" class="cls"> <div class="tl cls"> <ul> <li><a target="_top" href="http://www.doctrine-project.org/">Home</a></li> <li><a target="_top" href="http://www.doctrine-project.org/about.html">About</a></li> <li><a target="_top" href="http://www.doctrine-project.org/projects.html">Projects</a></li> <li><a target="_top" href="http://www.doctrine-project.org/contribute.html">Contribute</a></li> <li><a target="_top" href="http://www.doctrine-project.org/community.html">Community</a></li> <li><a target="_top" href="http://www.doctrine-project.org/archive.html">Blog</a></li> <li><a target="_top" href="http://www.doctrine-project.org/jira">Development</a></li> </ul> </div> </div> <div id="content" class="cls"> <div class="related"> <h3>Navigation</h3> <ul> <li><a href="/">Doctrine Homepage</a> »</li> <li><a href="../index.html">Doctrine MongoDB ODM 1.1.5 documentation</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" > <div class="section" id="events"> <h1>Events<a class="headerlink" href="#events" title="Permalink to this headline">¶</a></h1> <p>Doctrine features a lightweight event system that is part of the Common package.</p> <div class="section" id="the-event-system"> <h2>The Event System<a class="headerlink" href="#the-event-system" title="Permalink to this headline">¶</a></h2> <p>The event system is controlled by the <code class="docutils literal"><span class="pre">EventManager</span></code>. It is the central point of Doctrine's event listener system. Listeners are registered on the manager and events are dispatched through the manager.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventManager</span><span class="p">();</span> </pre></div> </div> <p>Now we can add some event listeners to the <code class="docutils literal"><span class="pre">$evm</span></code>. Let's create a <code class="docutils literal"><span class="pre">EventTest</span></code> class to play around with.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">const</span> <span class="no">preFoo</span> <span class="o">=</span> <span class="s1">'preFoo'</span><span class="p">;</span> <span class="k">const</span> <span class="no">postFoo</span> <span class="o">=</span> <span class="s1">'postFoo'</span><span class="p">;</span> <span class="k">private</span> <span class="nv">$_evm</span><span class="p">;</span> <span class="k">public</span> <span class="nv">$preFooInvoked</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span> <span class="k">public</span> <span class="nv">$postFooInvoked</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">__construct</span><span class="p">(</span><span class="nv">$evm</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">preFoo</span><span class="p">,</span> <span class="nx">self</span><span class="o">::</span><span class="na">postFoo</span><span class="p">),</span> <span class="nv">$this</span><span class="p">);</span> <span class="p">}</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">preFoo</span><span class="p">(</span><span class="nx">EventArgs</span> <span class="nv">$e</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">preFooInvoked</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> <span class="p">}</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">postFoo</span><span class="p">(</span><span class="nx">EventArgs</span> <span class="nv">$e</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">postFooInvoked</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> <span class="c1">// Create a new instance</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">(</span><span class="nv">$evm</span><span class="p">);</span> </pre></div> </div> <p>Events can be dispatched by using the <code class="docutils literal"><span class="pre">dispatchEvent()</span></code> method.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">dispatchEvent</span><span class="p">(</span><span class="nx">EventTest</span><span class="o">::</span><span class="na">preFoo</span><span class="p">);</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">dispatchEvent</span><span class="p">(</span><span class="nx">EventTest</span><span class="o">::</span><span class="na">postFoo</span><span class="p">);</span> </pre></div> </div> <p>You can easily remove a listener with the <code class="docutils literal"><span class="pre">removeEventListener()</span></code> method.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">removeEventListener</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">preFoo</span><span class="p">,</span> <span class="nx">self</span><span class="o">::</span><span class="na">postFoo</span><span class="p">),</span> <span class="nv">$this</span><span class="p">);</span> </pre></div> </div> <p>The Doctrine event system also has a simple concept of event subscribers. We can define a simple <code class="docutils literal"><span class="pre">TestEventSubscriber</span></code> class which implements the <code class="docutils literal"><span class="pre">\Doctrine\Common\EventSubscriber</span></code> interface and implements a <code class="docutils literal"><span class="pre">getSubscribedEvents()</span></code> method which returns an array of events it should be subscribed to.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">TestEventSubscriber</span> <span class="k">implements</span> <span class="nx">\Doctrine\Common\EventSubscriber</span> <span class="p">{</span> <span class="k">const</span> <span class="no">preFoo</span> <span class="o">=</span> <span class="s1">'preFoo'</span><span class="p">;</span> <span class="k">public</span> <span class="nv">$preFooInvoked</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">preFoo</span><span class="p">()</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">preFooInvoked</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> <span class="p">}</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">getSubscribedEvents</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="k">array</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">preFoo</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="nv">$eventSubscriber</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">TestEventSubscriber</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventSubscriber</span><span class="p">(</span><span class="nv">$eventSubscriber</span><span class="p">);</span> </pre></div> </div> <p>Now when you dispatch an event any event subscribers will be notified for that event.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">dispatchEvent</span><span class="p">(</span><span class="nx">TestEventSubscriber</span><span class="o">::</span><span class="na">preFoo</span><span class="p">);</span> </pre></div> </div> <p>Now test the <code class="docutils literal"><span class="pre">$eventSubscriber</span></code> instance to see if the <code class="docutils literal"><span class="pre">preFoo()</span></code> method was invoked.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$eventSubscriber</span><span class="o">-></span><span class="na">preFooInvoked</span><span class="p">)</span> <span class="p">{</span> <span class="k">echo</span> <span class="s1">'pre foo invoked!'</span><span class="p">;</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="lifecycle-events"> <span id="id1"></span><h2>Lifecycle Events<a class="headerlink" href="#lifecycle-events" title="Permalink to this headline">¶</a></h2> <p>The DocumentManager and UnitOfWork trigger several events during the life-time of their registered documents.</p> <ul class="simple"> <li>preRemove - The preRemove event occurs for a given document before the respective DocumentManager remove operation for that document is executed.</li> <li>postRemove - The postRemove event occurs for a document after the document has been removed. It will be invoked after the database delete operations.</li> <li>prePersist - The prePersist event occurs for a given document before the respective DocumentManager persist operation for that document is executed.</li> <li>postPersist - The postPersist event occurs for a document after the document has been made persistent. It will be invoked after the database insert operations. Generated primary key values are available in the postPersist event.</li> <li>preUpdate - The preUpdate event occurs before the database update operations to document data.</li> <li>postUpdate - The postUpdate event occurs after the database update operations to document data.</li> <li>preLoad - The preLoad event occurs for a document before the document has been loaded into the current DocumentManager from the database or after the refresh operation has been applied to it.</li> <li>postLoad - The postLoad event occurs for a document after the document has been loaded into the current DocumentManager from the database or after the refresh operation has been applied to it.</li> <li>loadClassMetadata - The loadClassMetadata event occurs after the mapping metadata for a class has been loaded from a mapping source (annotations/xml/yaml).</li> <li>preFlush - The preFlush event occurs before the change-sets of all managed documents are computed. This both a lifecycle call back and and listener.</li> <li>postFlush - The postFlush event occurs after the change-sets of all managed documents are computed.</li> <li>onFlush - The onFlush event occurs after the change-sets of all managed documents are computed. This event is not a lifecycle callback.</li> <li>onClear - The onClear event occurs after the UnitOfWork has had its state cleared.</li> <li>documentNotFound - The documentNotFound event occurs when a proxy object could not be initialized. This event is not a lifecycle callback.</li> <li>postCollectionLoad - The postCollectionLoad event occurs just after collection has been initialized (loaded) and before new elements are re-added to it.</li> </ul> <p>You can access the Event constants from the <code class="docutils literal"><span class="pre">Events</span></code> class in the ODM package.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">use</span> <span class="nx">Doctrine\ODM\MongoDB\Events</span><span class="p">;</span> <span class="k">echo</span> <span class="nx">Events</span><span class="o">::</span><span class="na">preUpdate</span><span class="p">;</span> </pre></div> </div> <p>These can be hooked into by two different types of event listeners:</p> <ul class="simple"> <li>Lifecycle Callbacks are methods on the document classes that are called when the event is triggered. They receive instances of <code class="docutils literal"><span class="pre">Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span></code> (see relevant examples below) as arguments and are specifically designed to allow changes inside the document classes state.</li> <li>Lifecycle Event Listeners are classes with specific callback methods that receives some kind of <code class="docutils literal"><span class="pre">EventArgs</span></code> instance which give access to the document, DocumentManager or other relevant data.</li> </ul> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">All Lifecycle events that happen during the <code class="docutils literal"><span class="pre">flush()</span></code> of a DocumentManager have very specific constraints on the allowed operations that can be executed. Please read the <em>Implementing Event Listeners</em> section very carefully to understand which operations are allowed in which lifecycle event.</p> </div> </div> <div class="section" id="lifecycle-callbacks"> <h2>Lifecycle Callbacks<a class="headerlink" href="#lifecycle-callbacks" title="Permalink to this headline">¶</a></h2> <p>A lifecycle event is a regular event with the additional feature of providing a mechanism to register direct callbacks inside the corresponding document classes that are executed when the lifecycle event occurs.</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="sd">/** @Document @HasLifecycleCallbacks */</span> <span class="k">class</span> <span class="nc">User</span> <span class="p">{</span> <span class="c1">// ...</span> <span class="sd">/**</span> <span class="sd"> * @Field</span> <span class="sd"> */</span> <span class="k">public</span> <span class="nv">$value</span><span class="p">;</span> <span class="sd">/** @Field */</span> <span class="k">private</span> <span class="nv">$createdAt</span><span class="p">;</span> <span class="sd">/** @PrePersist */</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">doStuffOnPrePersist</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">createdAt</span> <span class="o">=</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'Y-m-d H:i:s'</span><span class="p">);</span> <span class="p">}</span> <span class="sd">/** @PrePersist */</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">doOtherStuffOnPrePersist</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">value</span> <span class="o">=</span> <span class="s1">'changed from prePersist callback!'</span><span class="p">;</span> <span class="p">}</span> <span class="sd">/** @PostPersist */</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">doStuffOnPostPersist</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">value</span> <span class="o">=</span> <span class="s1">'changed from postPersist callback!'</span><span class="p">;</span> <span class="p">}</span> <span class="sd">/** @PreLoad */</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">doStuffOnPreLoad</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\PreLoadEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$data</span> <span class="o">=&</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getData</span><span class="p">();</span> <span class="nv">$data</span><span class="p">[</span><span class="s1">'value'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'changed from preLoad callback'</span><span class="p">;</span> <span class="p">}</span> <span class="sd">/** @PostLoad */</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">doStuffOnPostLoad</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">value</span> <span class="o">=</span> <span class="s1">'changed from postLoad callback!'</span><span class="p">;</span> <span class="p">}</span> <span class="sd">/** @PreUpdate */</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">doStuffOnPreUpdate</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\PreUpdateEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">value</span> <span class="o">=</span> <span class="s1">'changed from preUpdate callback!'</span><span class="p">;</span> <span class="p">}</span> <span class="sd">/** @PreFlush */</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">preFlush</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\PreFlushEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">value</span> <span class="o">=</span> <span class="s1">'changed from preFlush callback!'</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> <p>Note that when using annotations you have to apply the @HasLifecycleCallbacks marker annotation on the document class.</p> </div> <div class="section" id="listening-to-lifecycle-events"> <h2>Listening to Lifecycle Events<a class="headerlink" href="#listening-to-lifecycle-events" title="Permalink to this headline">¶</a></h2> <p>Lifecycle event listeners are much more powerful than the simple lifecycle callbacks that are defined on the document classes. They allow to implement re-usable behaviours between different document classes, yet require much more detailed knowledge about the inner workings of the DocumentManager and UnitOfWork. Please read the <em>Implementing Event Listeners</em> section carefully if you are trying to write your own listener.</p> <p>To register an event listener you have to hook it into the EventManager that is passed to the DocumentManager factory:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$eventManager</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventManager</span><span class="p">();</span> <span class="nv">$eventManager</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">preUpdate</span><span class="p">),</span> <span class="k">new</span> <span class="nx">MyEventListener</span><span class="p">());</span> <span class="nv">$eventManager</span><span class="o">-></span><span class="na">addEventSubscriber</span><span class="p">(</span><span class="k">new</span> <span class="nx">MyEventSubscriber</span><span class="p">());</span> <span class="nv">$documentManager</span> <span class="o">=</span> <span class="nx">DocumentManager</span><span class="o">::</span><span class="na">create</span><span class="p">(</span><span class="nv">$mongo</span><span class="p">,</span> <span class="nv">$config</span><span class="p">,</span> <span class="nv">$eventManager</span><span class="p">);</span> </pre></div> </div> <p>You can also retrieve the event manager instance after the DocumentManager was created:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$documentManager</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">()</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">preUpdate</span><span class="p">),</span> <span class="k">new</span> <span class="nx">MyEventListener</span><span class="p">());</span> <span class="nv">$documentManager</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">()</span><span class="o">-></span><span class="na">addEventSubscriber</span><span class="p">(</span><span class="k">new</span> <span class="nx">MyEventSubscriber</span><span class="p">());</span> </pre></div> </div> </div> <div class="section" id="implementing-event-listeners"> <h2>Implementing Event Listeners<a class="headerlink" href="#implementing-event-listeners" title="Permalink to this headline">¶</a></h2> <p>This section explains what is and what is not allowed during specific lifecycle events of the UnitOfWork. Although you get passed the DocumentManager in all of these events, you have to follow this restrictions very carefully since operations in the wrong event may produce lots of different errors, such as inconsistent data and lost updates/persists/removes.</p> <div class="section" id="prepersist"> <h3>prePersist<a class="headerlink" href="#prepersist" title="Permalink to this headline">¶</a></h3> <p>Listen to the <code class="docutils literal"><span class="pre">prePersist</span></code> event:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">prePersist</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">prePersist</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$document</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocument</span><span class="p">();</span> <span class="nv">$document</span><span class="o">-></span><span class="na">setSomething</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="preload"> <h3>preLoad<a class="headerlink" href="#preload" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">preLoad</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">preLoad()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">preLoad</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\PreLoadEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$data</span> <span class="o">=&</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getData</span><span class="p">();</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="postload"> <h3>postLoad<a class="headerlink" href="#postload" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">postLoad</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">postLoad()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">postLoad</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$document</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocument</span><span class="p">();</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="preremove"> <h3>preRemove<a class="headerlink" href="#preremove" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">preRemove</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">preRemove()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">preRemove</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$document</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocument</span><span class="p">();</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="preflush"> <h3>preFlush<a class="headerlink" href="#preflush" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">preFlush</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">preFlush()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">preFlush</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\PreFlushEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$dm</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocumentManager</span><span class="p">();</span> <span class="nv">$uow</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getUnitOfWork</span><span class="p">();</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="onflush"> <h3>onFlush<a class="headerlink" href="#onflush" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">onFlush</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">onFlush()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">onFlush</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\OnFlushEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$dm</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocumentManager</span><span class="p">();</span> <span class="nv">$uow</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getUnitOfWork</span><span class="p">();</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="postflush"> <h3>postFlush<a class="headerlink" href="#postflush" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">postFlush</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">postFlush()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">postFlush</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\PostFlushEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$dm</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocumentManager</span><span class="p">();</span> <span class="nv">$uow</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getUnitOfWork</span><span class="p">();</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="preupdate"> <h3>preUpdate<a class="headerlink" href="#preupdate" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">preUpdate</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">preUpdate()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">preUpdate</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$document</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocument</span><span class="p">();</span> <span class="nv">$document</span><span class="o">-></span><span class="na">setSomething</span><span class="p">();</span> <span class="nv">$dm</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocumentManager</span><span class="p">();</span> <span class="nv">$class</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getClassMetadata</span><span class="p">(</span><span class="nb">get_class</span><span class="p">(</span><span class="nv">$document</span><span class="p">));</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getUnitOfWork</span><span class="p">()</span><span class="o">-></span><span class="na">recomputeSingleDocumentChangeSet</span><span class="p">(</span><span class="nv">$class</span><span class="p">,</span> <span class="nv">$document</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">If you modify a document in the preUpdate event you must call <code class="docutils literal"><span class="pre">recomputeSingleDocumentChangeSet</span></code> for the modified document in order for the changes to be persisted.</p> </div> </div> <div class="section" id="onclear"> <h3>onClear<a class="headerlink" href="#onclear" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">onClear</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">onClear()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">onClear</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\OnClearEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$class</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocumentClass</span><span class="p">();</span> <span class="nv">$dm</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getDocumentManager</span><span class="p">();</span> <span class="nv">$uow</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getUnitOfWork</span><span class="p">();</span> <span class="c1">// Check if event clears all documents.</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$eventArgs</span><span class="o">-></span><span class="na">clearsAllDocuments</span><span class="p">())</span> <span class="p">{</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="c1">// do something</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="documentnotfound"> <h3>documentNotFound<a class="headerlink" href="#documentnotfound" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">documentNotFound</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">documentNotFound()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">documentNotFound</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\DocumentNotFoundEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$proxy</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getObject</span><span class="p">();</span> <span class="nv">$identifier</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getIdentifier</span><span class="p">();</span> <span class="c1">// do something</span> <span class="c1">// To prevent the documentNotFound exception from being thrown, call the disableException() method:</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">disableException</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="postupdate-postremove-postpersist"> <h3>postUpdate, postRemove, postPersist<a class="headerlink" href="#postupdate-postremove-postpersist" title="Permalink to this headline">¶</a></h3> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">postUpdate</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">postRemove</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">postPersist</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">postUpdate()</span></code>, <code class="docutils literal"><span class="pre">postRemove()</span></code> and <code class="docutils literal"><span class="pre">postPersist()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">postUpdate</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">postRemove</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">postPersist</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> <div class="section" id="postcollectionload"> <h3>postCollectionLoad<a class="headerlink" href="#postcollectionload" title="Permalink to this headline">¶</a></h3> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">This event was introduced in version 1.1</p> </div> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">postCollectionLoad</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> </pre></div> </div> <p>Define the <code class="docutils literal"><span class="pre">EventTest</span></code> class with a <code class="docutils literal"><span class="pre">postCollectionLoad()</span></code> method:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">postCollectionLoad</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\PostCollectionLoadEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$collection</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getCollection</span><span class="p">();</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$collection</span> <span class="nx">instanceof</span> <span class="nx">\Malarzm\Collections\DiffableCollection</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$collection</span><span class="o">-></span><span class="na">snapshot</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> </div> <div class="section" id="load-classmetadata-event"> <h2>Load ClassMetadata Event<a class="headerlink" href="#load-classmetadata-event" title="Permalink to this headline">¶</a></h2> <p>When the mapping information for a document is read, it is populated in to a <code class="docutils literal"><span class="pre">ClassMetadata</span></code> instance. You can hook in to this process and manipulate the instance with the <code class="docutils literal"><span class="pre">loadClassMetadata</span></code> event:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventTest</span><span class="p">();</span> <span class="nv">$metadataFactory</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getMetadataFactory</span><span class="p">();</span> <span class="nv">$evm</span> <span class="o">=</span> <span class="nv">$dm</span><span class="o">-></span><span class="na">getEventManager</span><span class="p">();</span> <span class="nv">$evm</span><span class="o">-></span><span class="na">addEventListener</span><span class="p">(</span><span class="nx">Events</span><span class="o">::</span><span class="na">loadClassMetadata</span><span class="p">,</span> <span class="nv">$test</span><span class="p">);</span> <span class="k">class</span> <span class="nc">EventTest</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">loadClassMetadata</span><span class="p">(</span><span class="nx">\Doctrine\ODM\MongoDB\Event\LoadClassMetadataEventArgs</span> <span class="nv">$eventArgs</span><span class="p">)</span> <span class="p">{</span> <span class="nv">$classMetadata</span> <span class="o">=</span> <span class="nv">$eventArgs</span><span class="o">-></span><span class="na">getClassMetadata</span><span class="p">();</span> <span class="nv">$fieldMapping</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span> <span class="s1">'fieldName'</span> <span class="o">=></span> <span class="s1">'about'</span><span class="p">,</span> <span class="s1">'type'</span> <span class="o">=></span> <span class="s1">'string'</span> <span class="p">);</span> <span class="nv">$classMetadata</span><span class="o">-></span><span class="na">mapField</span><span class="p">(</span><span class="nv">$fieldMapping</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> </pre></div> </div> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <div id="searchbox" style=""> <h3>Search</h3> <form class="search" action="http://readthedocs.org/search/project/" method="get"> <input type="text" name="q" size="18"> <input type="submit" value="Go"> <input type="hidden" name="selected_facets" value="project:"> </form> </div> <h3><a href="../index.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">Events</a><ul> <li><a class="reference internal" href="#the-event-system">The Event System</a></li> <li><a class="reference internal" href="#lifecycle-events">Lifecycle Events</a></li> <li><a class="reference internal" href="#lifecycle-callbacks">Lifecycle Callbacks</a></li> <li><a class="reference internal" href="#listening-to-lifecycle-events">Listening to Lifecycle Events</a></li> <li><a class="reference internal" href="#implementing-event-listeners">Implementing Event Listeners</a><ul> <li><a class="reference internal" href="#prepersist">prePersist</a></li> <li><a class="reference internal" href="#preload">preLoad</a></li> <li><a class="reference internal" href="#postload">postLoad</a></li> <li><a class="reference internal" href="#preremove">preRemove</a></li> <li><a class="reference internal" href="#preflush">preFlush</a></li> <li><a class="reference internal" href="#onflush">onFlush</a></li> <li><a class="reference internal" href="#postflush">postFlush</a></li> <li><a class="reference internal" href="#preupdate">preUpdate</a></li> <li><a class="reference internal" href="#onclear">onClear</a></li> <li><a class="reference internal" href="#documentnotfound">documentNotFound</a></li> <li><a class="reference internal" href="#postupdate-postremove-postpersist">postUpdate, postRemove, postPersist</a></li> <li><a class="reference internal" href="#postcollectionload">postCollectionLoad</a></li> </ul> </li> <li><a class="reference internal" href="#load-classmetadata-event">Load ClassMetadata Event</a></li> </ul> </li> </ul> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/reference/events.rst.txt" rel="nofollow">Show Source</a></li> </ul> </div> </div> <div class="clearer"></div> </div> <div class="footer"> © Copyright 2013, Doctrine Project Team. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.6.2. <br/> <a target="_BLANK" href="http://www.servergrove.com"><img src="http://www.doctrine-project.org/_static/servergrove.jpg" /></a> <br/><br/> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick" /> <input type="hidden" name="hosted_button_id" value="BAE2E3XANQ77Y" /> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" /> <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" /> </form> </div> </div> <div id="bot-rcnr"> <div class="tl"><!-- corner --></div> </div> </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-288343-7"; urchinTracker(); </script> <a class="githublink" href="http://github.com/doctrine"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a> </body> </html>