1import{_ as a,c as s,a as e,b as r,w as n,d as c,r as p,o as l,e as o}from"./app-ChViQP5P.js";const i={},d=e("h1",{id:"contracts",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contracts"},[e("span",null,"Contracts")])],-1),h={class:"table-of-contents"},u=c(`<h2 id="introduction" tabindex="-1"><a class="header-anchor" href="#introduction"><span>Introduction</span></a></h2><p>Hypervel's "contracts" are a set of interfaces that define the core services provided by the framework. For example, an <code>Hypervel\\Auth\\Contracts\\Gate</code> contract defines the methods needed for authorizing a resource, while the <code>Hypervel\\Hashing\\Contracts\\Hasher</code> contract defines the methods needed for generating a secure hash.</p><p>All of the contracts live separately in the <code>Contracts</code> directory in their belonging packages. This provides a quick reference point for all available contracts, as well as a single, decoupled package that may be utilized when building packages that interact with Hypervel services.</p><h3 id="contracts-vs-facades" tabindex="-1"><a class="header-anchor" href="#contracts-vs-facades"><span>Contracts vs. Facades</span></a></h3><p>Hypervel's <a href="/docs/facades">facades</a> and helper functions provide a simple way of utilizing Hypervel's services without needing to type-hint and resolve contracts out of the service container. In most cases, each facade has an equivalent contract.</p><p>Unlike facades, which do not require you to require them in your class' constructor, contracts allow you to define explicit dependencies for your classes. Some developers prefer to explicitly define their dependencies in this way and therefore prefer to use contracts, while other developers enjoy the convenience of facades. <strong>In general, most applications can use facades without issue during development.</strong></p><h2 id="when-to-use-contracts" tabindex="-1"><a class="header-anchor" href="#when-to-use-contracts"><span>When to Use Contracts</span></a></h2><p>The decision to use contracts or facades will come down to personal taste and the tastes of your development team. Both contracts and facades can be used to create robust, well-tested Hypervel applications. Contracts and facades are not mutually exclusive. Some parts of your applications may use facades while others depend on contracts. As long as you are keeping your class' responsibilities focused, you will notice very few practical differences between using contracts and facades.</p><p>In general, most applications can use facades without issue during development. If you are building a package that integrates with multiple PHP frameworks you may wish to use the corresponding contracts to define your integration with Hypervel's services without the need to require Hypervel's concrete implementations in your package's <code>composer.json</code> file.</p><h2 id="how-to-use-contracts" tabindex="-1"><a class="header-anchor" href="#how-to-use-contracts"><span>How to Use Contracts</span></a></h2><p>So, how do you get an implementation of a contract? It's actually quite simple.</p><p>Many types of classes in Hypervel are resolved through the <a href="/docs/container">service container</a>, including controllers, event listeners, middleware and even route closures. So, to get an implementation of a contract, you can just "type-hint" the interface in the constructor of the class being resolved.</p><p>For example, take a look at this event listener:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token php language-php"><span class="token delimiter important"><?php</span></span> 2<span class="line"></span> 3<span class="line"><span class="token keyword">namespace</span> <span class="token package">App<span class="token punctuation">\\</span>Listeners</span><span class="token punctuation">;</span></span> 4<span class="line"></span> 5<span class="line"><span class="token keyword">
5use</span> <span class="token package">App<span class="token punctuation">\\</span>Events<span class="token punctuation">\\</span>OrderWasPlaced</span><span class="token punctuation">;</span></span> 6<span class="line"><span class="token keyword">use</span> <span class="token package">App<span class="token punctuation">\\</span>Models<span class="token punctuation">\\</span>User</span><span class="token punctuation">;</span></span> 7<span class="line"><span class="token keyword">use</span> <span class="token package">Hypervel<span class="token punctuation">\\</span>Cache<span class="token punctuation">\\</span>Contracts<span class="token punctuation">\\</span>Factory</span><span class="token punctuation">;</span></span> 8<span class="line"></span> 9<span class="line"><span class="token keyword">class</span> <span class="token class-name-definition class-name">CacheOrderInformation</span></span> 10<span class="line"><span class="token punctuation">{</span></span> 11<span class="line"> <span class="token doc-comment comment">/**</span> 12<span class="line"> * Create a new event handler instance.</span> 13<span class="line"> */</span></span> 14<span class="line"> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">__construct</span><span class="token punctuation">(</span></span> 15<span class="line"> <span class="token keyword">protected</span> <span class="token class-name type-declaration">Factory</span> <span class="token variable">$cache</span><span class="token punctuation">,</span></span> 16<span class="line"> <span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span> 17<span class="line"></span> 18<span class="line"> <span class="token doc-comment comment">/**</span> 19<span class="line"> * Handle the event.</span> 20<span class="line"> */</span></span> 21<span class="line"> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">handle</span><span class="token punctuation">(</span><span class="token class-name type-declaration">OrderWasPlaced</span> <span class="token variable">$event</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword return-type">void</span></span> 22<span class="line"> <span class="token punctuation">{</span></span> 23<span class="line"> <span class="token comment">// ...</span></span> 24<span class="line"> <span class="token punctuation">}</span></span> 25<span class="line"><span class="token punctuation">}</span></span> 26<span class="line"></span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>When the event listener is resolved, the service container will read the type-hints on the constructor of the class, and inject the appropriate value. To learn more about registering things in the service container, check out <a href="/docs/container">its documentation</a>.</p><p><a name="contract-reference"></a></p><h2 id="contract-reference" tabindex="-1"><a class="header-anchor" href="#contract-reference"><span>Contract Reference</span></a></h2><p>This table provides a quick reference to all of the Hypervel contracts and their equivalent facades:</p><table><thead><tr><th>
26Contract</th><th>References Facade</th></tr></thead><tbody><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/Authorizable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\Authorizable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/Gate.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\Gate</a></td><td><code>Gate</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/Authenticatable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\Authenticatable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/FactoryContract.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\Factory</a></td><td><code>Auth</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/Guard.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\Guard</a></td><td><code>Auth::guard()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/StatefulGuard.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\StatefulGuard</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/SupportsBasicAuth.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\SupportsBasicAuth</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/auth/src/Contracts/UserProvider.php" target="_blank" rel="noopener noreferrer">Hypervel\\Auth\\Contracts\\UserProvider</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/bus/src/Contracts/Dispatcher.php" target="_blank" rel="noopener noreferrer">Hypervel\\Bus\\Contracts\\Dispatcher</a></td><td><code>Bus</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/bus/src/Contracts/QueuingDispatcher.php" target="_blank" rel="noopener noreferrer">Hypervel\\Bus\\Contracts\\QueuingDispatcher</a></td><td><code>Bus::dispatchToQueue()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/broadcasting/src/Contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Broadcasting\\Contracts\\Factory</a></td><td><code>Broadcast</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/broadcasting/src/Contracts/Broadcaster.php" target="_blank" rel="noopener noreferrer">Hypervel\\Broadcasting\\Contracts\\Broadcaster</a></td><td><code>Broadcast::connection()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/broadcasting/src/Contracts/ShouldBroadcast.php" target="_blank" rel="noopener noreferrer">Hypervel\\Broadcasting\\Contracts\\ShouldBroadcast</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/broadcasting/src/Contracts/ShouldBroadcastNow.php" target="_blank" rel="noopener noreferrer">Hypervel\\Broadcasting\\Contracts\\ShouldBroadcastNow</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/cache/src/Contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Cache\\Contracts\\Factory</a></td><td><code>Cache</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/cache/src/Contracts/Lock.php" target="_blank" rel="noopener noreferrer">Hypervel\\Cache\\Contracts\\Lock</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/cache/src/Contracts/LockProvider.php" target="_blank" rel="noopener noreferrer">Hypervel\\Cache\\Contracts\\LockProvider</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/cache/src/Contracts/Repository.php" target="_blank" rel="noopener noreferrer">Hypervel\\Cache\\Contracts\\Repository</a></td><td><code>Cache::driver()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/cache/src/Contracts/Store.php" target="_blank" rel="noopener noreferrer">Hypervel\\Cache\\Contracts\\Store</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/config/src/Contracts/Repository.php" target="_blank" rel="noopener noreferrer">Hypervel\\Config\\Contracts\\Repository</a></td><td><code>Config</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/container/src/Contracts/Container.php" target="_blank" rel="noopener noreferrer">Hypervel\\Container\\Contracts\\Container</a></td><td><code>App</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/foundation/src/Exceptions/Contracts/ExceptionHandler.php" target="_blank" rel="noopener noreferrer">Hypervel\\Foundation\\Exceptions\\Contracts\\ExceptionHandler</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/encryption/src/Contracts/ReposEncrypteritory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Encryption\\Contracts\\Encrypter</a></td><td><code>Crypt</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/event/src/Contracts/Dispatcher.php" target="_blank" rel="noopener noreferrer">Hypervel\\Event\\Contracts\\Dispatcher</a></td><td><code>Event</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/filesystem/src/Contracts/Cloud.php" target="_blank" rel="noopener noreferrer">Hypervel\\Filesystem\\Contracts\\Cloud</a></td><td><code>Storage::cloud()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/filesystem/src/Contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Filesystem\\Contracts\\Factory</a></td><td><code>Storage</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/filesystem/src/Contracts/Filesystem.php" target="_blank" rel="noopener noreferrer">Hypervel\\Filesystem\\Contracts\\Filesystem</a></td><td><code>Storage::disk()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/foundation/src/Contracts/Application.php" target="_blank" rel="noopener noreferrer">Hypervel\\Foundation\\Contracts\\Application</a></td><td><code>App</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/foundation/src/Console/Contracts/Application.php" target="_blank" rel="noopener noreferrer">Hypervel\\Console\\Contracts\\Application</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/foundation/src/Console/Contracts/Kernel.php" target="_blank" rel="noopener noreferrer">Hypervel\\Foundation\\Console\\Contracts\\Kernel</a></td><td><code>Artisan</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/hashing/src/Contracts/Hasher.php" target="_blank" rel="noopener noreferrer">Hypervel\\Hashing\\Contracts\\Hasher</a></td><td><code>Hash</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/mail/src/Contracts/MailQueue.php" target="_blank" rel="noopener noreferrer">Hypervel\\Mail\\Contracts\\MailQueue</a></td><td><code>Mail::queue()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/mail/src/Contracts/Mailable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Mail\\Contracts\\Mailable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/mail/src/Contracts/Mailer.php" target="_blank" rel="noopener noreferrer">Hypervel\\Mail\\Contracts\\Mailer</a></td><td><code>Mail</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/notifications/src/Contracts/Dispatcher.php" target="_blank" rel="noopener noreferrer">
26Hypervel\\Notifications\\Contracts\\Dispatcher</a></td><td><code>Notification</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/notifications/src/Contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Notifications\\Contracts\\Factory</a></td><td><code>Notification</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/object-pool/src/Contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\ObjectPool\\Contracts\\Factory</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/object-pool/src/Contracts/ObjectPool.php" target="_blank" rel="noopener noreferrer">Hypervel\\ObjectPool\\Contracts\\ObjectPool</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/object-pool/src/Contracts/Recycler.php" target="_blank" rel="noopener noreferrer">Hypervel\\ObjectPool\\Contracts\\Recycler</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/EntityResolver.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\EntityResolver</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\Factory</a></td><td><code>Queue</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/Job.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\Job</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\Monitor</a></td><td><code>Queue</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/Queue.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\Queue</a></td><td><code>Queue::connection()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/QueueableCollection.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\QueueableCollection</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/QueueableEntity.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\QueueableEntity</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/queue/src/Contracts/ShouldQueue.php" target="_blank" rel="noopener noreferrer">Hypervel\\Queue\\Contracts\\ShouldQueue</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/router/contracts/UrlGenerator.php" target="_blank" rel="noopener noreferrer">Hypervel\\Router\\Contracts\\UrlGenerator</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/router/contracts/UrlRoutable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Router\\Contracts\\UrlRoutable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/session/contracts/Factory.php" target="_blank" rel="noopener noreferrer">Hypervel\\Session\\Contracts\\Factory</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/session/contracts/Session.php" target="_blank" rel="noopener noreferrer">Hypervel\\Session\\Contracts\\Session</a></td><td><code>Session::store()</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/support/contracts/Arrayable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Support\\Contracts\\Arrayable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/support/contracts/Htmlable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Support\\Contracts\\Htmlable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/support/contracts/Jsonable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Support\\Contracts\\Jsonable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/support/contracts/MessageBag.php" target="_blank" rel="noopener noreferrer">Hypervel\\Support\\Contracts\\MessageBag</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/support/contracts/MessageProvider.php" target="_blank" rel="noopener noreferrer">Hypervel\\Support\\Contracts\\MessageProvider</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/support/contracts/Renderable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Support\\Contracts\\Renderable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/support/contracts/Reasonable.php" target="_blank" rel="noopener noreferrer">Hypervel\\Support\\Contracts\\Reasonable</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/translation/contracts/Loader.php" target="_blank" rel="noopener noreferrer">Hypervel\\Translation\\Contracts\\Loader</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/translation/contracts/Translator.php" target="_blank" rel="noopener noreferrer">Hypervel\\Translation\\Contracts\\Translator</a></td><td><code>Lang</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/foundation/src/Exceptions/Contracts/ExceptionHandler.php" target="_blank" rel="noopener noreferrer">Hypervel\\Foundation\\Exceptions\\Contracts\\ExceptionHandler</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/foundation/src/Exceptions/Contracts/ExceptionRenderer.php" target="_blank" rel="noopener noreferrer">Hypervel\\Foundation\\Exceptions\\Contracts\\ExceptionRenderer</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/foundation/src/Http/Contracts/MiddlewareContract.php" target="_blank" rel="noopener noreferrer">Hypervel\\Foundation\\Http\\Contracts\\ExceptionRenderer</a></td><td>Â </td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/cookie/src/Contracts/Cookie.php" target="_blank" rel="noopener noreferrer">Hypervel\\Cookie\\Contracts\\Cookie</a></td><td><code>Cookie</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/http/src/Contracts/RequestContract.php" target="_blank" rel="noopener noreferrer">Hypervel\\Http\\Contracts\\RequestContract</a></td><td><code>Request</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/http/src/Contracts/ResponseContract.php" target="_blank" rel="noopener noreferrer">Hypervel\\Http\\Contracts\\ResponseContract</a></td><td><code>Response</code></td></tr><tr><td><a href="https://github.com/hypervel/components/blob/main/src/router/src/Contracts/UrlGenerator.php" target="_blank" rel="noopener noreferrer">Hypervel\\Router\\Contracts\\UrlGenerator</a></td><td><code>URL</code></td></tr></tbody></table><div class="hint-container info"><p class="hint-container-title">Info</p><p>The contracts in Hyperf can refer to <a href="https://github.com/hyperf/hyperf/tree/master/src/contract/src" target="_blank" rel="noopener noreferrer">hyperf/contract</a> package</p></div>`,20);function b(m,v){const t=p("router-link");return l(),s("div",null,[d,e("nav",h,[e("ul",null,[e("li",null,[r(t,{to:"#introduction"},{default:n(()=>[o("Introduction")]),_:1}),e("ul",null,[e("li",null,[r(t,{to:"#contracts-vs-facades"},{default:n(()=>[o("Contracts vs. Facades")]),_:1})])])]),e("li",null,[r(t,{to:"#when-to-use-contracts"},{default:n(()=>[o("When to Use Contracts")]),_:1})]),e("li",null,[r(t,{to:"#how-to-use-contracts"},{default:n(()=>[o("How to Use Contracts")]),_:1})]),e("li",null,[r(t,{to:"#contract-reference"},{default:n(()=>[o("Contract Reference")]),_:1})])])]),u])}const y=a(i,[["render",b],["__file","contracts.html.vue"]]),g=JSON.parse(`{"path":"/docs/contracts.html","title":"Contracts","lang":"en-US","frontmatter":{"description":"Contracts Introduction Hypervel's \\"contracts\\" are a set of interfaces that define the core services provided by the framework. For example, an Hypervel\\\\Auth\\\\Contracts\\\\Gate contr...","head":[["meta",{"property":"og:url","content":"https://hypervel.org/docs/contracts"}],["meta",{"property":"og:site_name","content":"Hypervel"}],["meta",{"property":"og:title","content":"Hypervel - A Coroutine PHP Framework for Laravel Artisans"}],["meta",{"property":"og:description","content":"Hypervel is a Laravel-style framework with native coroutine support for ultra-high performance."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://hypervel.org/home.png"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2026-02-14T02:32:03.000Z"}],["meta",{"property":"article:modified_time","content":"2026-02-14T02:32:03.000Z"}],["meta",{"name":"twitter:title","content":"Hypervel - A Coroutine PHP Framework For Laravel Artisans"}],["meta",{"name":"twitter:description","content":"Hypervel is a Laravel-style framework with native coroutine support for ultra-high performance."}],["meta",{"name":"twitter:image","content":"https://hypervel.org/home.png"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Contracts\\",\\"image\\":[\\"https://hypervel.org/home.png\\"],\\"dateModified\\":\\"202
266-02-14T02:32:03.000Z\\",\\"author\\":[]}"],["title",{},"Hypervel - A Coroutine PHP Framework for Laravel Artisans."]]},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[{"level":3,"title":"Contracts vs. Facades","slug":"contracts-vs-facades","link":"#contracts-vs-facades","children":[]}]},{"level":2,"title":"When to Use Contracts","slug":"when-to-use-contracts","link":"#when-to-use-contracts","children":[]},{"level":2,"title":"How to Use Contracts","slug":"how-to-use-contracts","link":"#how-to-use-contracts","children":[]},{"level":2,"title":"Contract Reference","slug":"contract-reference","link":"#contract-reference","children":[]}],"git":{"updatedTime":1771036323000,"contributors":[{"name":"Albert Chen","email":"[email protected]","commits":1}]},"filePathRelative":"docs/contracts.md","autoDesc":true}`);export{y as comp,g as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.