<!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>Introduction</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="book.componere.html">Componere</a></div> <div class="next" style="text-align: right; float: right;"><a href="componere.setup.html">Installing/Configuring</a></div> <div class="up"><a href="book.componere.html">Componere</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="intro.componere" class="preface"> <h1 class="title">Introduction</h1> <p class="para"> Componere <sub class="subscript">(latin, English: compose)</sub> targets production environments and provides an API for composition of classes, monkey patching, and casting. </p> <p class="formalpara"> <h5 class="title">Composition:</h5> <p class="para"> <a href="class.componere-definition.html" class="classname">Componere\Definition</a> is used to define (or redefine) a class at runtime; The class can then be registered, and in the case of redefinition it replaces the original class for as long as the <a href="class.componere-definition.html" class="classname">Componere\Definition</a> exists. <div class="constructorsynopsis dc-description"> <span class="modifier">public</span> <span class="methodname"><a href="componere-definition.construct.html" class="methodname">Componere\Definition::__construct</a></span> ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$name</code></span> )</div> <div class="constructorsynopsis dc-description"> <span class="modifier">public</span> <span class="methodname"><a href="componere-definition.construct.html" class="methodname">Componere\Definition::__construct</a></span> ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$name</code></span> , <span class="methodparam"><span class="type">string</span> <code class="parameter">$parent</code></span> )</div> <div class="constructorsynopsis dc-description"> <span class="modifier">public</span> <span class="methodname"><a href="componere-definition.construct.html" class="methodname">Componere\Definition::__construct</a></span> ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$name</code></span> , <span class="methodparam"><span class="type">array</span> <code class="parameter">$interfaces</code></span> )</div> <div class="constructorsynopsis dc-description"> <span class="modifier">public</span> <span class="methodname"><a href="componere-definition.construct.html" class="methodname">Componere\Definition::__construct</a></span> ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$name</code></span> , <span class="methodparam"><span class="type">string</span> <code class="parameter">$parent</code></span> , <span class="methodparam"><span class="type">array</span> <code class="parameter">$interfaces</code></span> )</div> </p> </p> <p class="formalpara"> <h5 class="title">Patching:</h5> <p class="para"> <a href="class.componere-patch.html" class="classname">Componere\Patch</a> is used to change the class of a specific instance of an object at runtime; Upon application the patch will remain applied for as long as the <a href="class.componere-patch.html" class="classname">Componere\Patch</a> exists, and can be reverted explicitly. <div class="constructorsynopsis dc-description"> <span class="modifier">public</span> <span class="methodname"><a href="componere-patch.construct.html" class="methodname">Componere\Patch::__construct</a></span> ( <span class="methodparam"><span class="type">object</span> <code class="parameter">$instance</code></span> )</div> <div class="constructorsynopsis dc-description"> <span class="modifier">public</span> <span class="methodname"><a href="componere-patch.construct.html" class="methodname">Componere\Patch::__construct</a></span> ( <span class="methodparam"><span class="type">object</span> <code class="parameter">$instance</code></span> , <span class="methodparam"><span class="type">array</span> <code class="parameter">$interfaces</code></span> )</div> </p> </p> <p class="formalpara"> <h5 class="title">Casting:</h5> <p class="para"> <strong class="classname">Componere\</strong> casting functions can cast among user defined compatible types; Where compatible means <strong class="classname">Type</strong> is sub or super to the type of <code class="parameter">object</code>. <div class="methodsynopsis dc-description"> <span class="type"><span class="type Type">Type</span></span> <span class="methodname"><a href="componere.cast.html" class="methodname">Componere\cast</a></span> ( <span class="methodparam"><span class="type"><span class="type Type">Type</span></span> <code class="parameter">$type</code></span> , <span class="methodparam"> <code class="parameter">$object</code></span> )</div> <div class="methodsynopsis dc-description"> <span class="type"><span class="type Type">Type</span></span> <span class="methodname"><a href="componere.cast_by_ref.html" class="methodname">Componere\cast_by_ref</a></span> ( <span class="methodparam"><span class="type"><span class="type Type">Type</span></span> <code class="parameter">$type</code></span> , <span class="methodparam"> <code class="parameter">$object</code></span> )</div> </p> </p> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="book.componere.html">Componere</a></div> <div class="next" style="text-align: right; float: right;"><a href="componere.setup.html">Installing/Configuring</a></div> <div class="up"><a href="book.componere.html">Componere</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>