CINXE.COM

joomla/input - Packagist

<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>joomla/input - Packagist</title> <meta name="description" content="Joomla Input Package" /> <meta name="author" content="Jordi Boggiano" /> <link rel="canonical" href="https://packagist.org/packages/joomla/input" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="shortcut icon" href="/favicon.ico?v=1739794478" /> <link rel="stylesheet" href="/build/app.css?v=1739794478" /> <link rel="alternate" type="application/rss+xml" title="New Releases - joomla/input" href="https://packagist.org/feeds/package.joomla/input.rss" /> <link rel="alternate" type="application/rss+xml" title="New Releases - joomla" href="https://packagist.org/feeds/vendor.joomla.rss" /> <link rel="alternate" type="application/rss+xml" title="Newly Submitted Packages - Packagist" href="https://packagist.org/feeds/packages.rss" /> <link rel="alternate" type="application/rss+xml" title="New Releases - Packagist" href="https://packagist.org/feeds/releases.rss" /> <link rel="search" type="application/opensearchdescription+xml" href="/search.osd?v=1739794478" title="Packagist" /> <script nonce="psZq1t+Vp29Ny7J9zFNkXg=="> var onloadRecaptchaCallback = function() { document.querySelectorAll('.recaptcha-protected').forEach((el) => { el.closest('form').querySelectorAll('button, input[type="submit"]').forEach((submit) => { grecaptcha.render(submit, { 'sitekey' : '6LfKiPoUAAAAAGlKWkhEEx7X8muIVYy6oA0GNdX0', 'callback' : function (token) { submit.form.submit(); } }); }) }); }; </script> <link rel="stylesheet" href="/css/github/markdown.css?v=1739794478"> </head> <body> <section class="wrap"> <header class="navbar-wrapper navbar-fixed-top"> <section class="banner alert-error hidden"> Composer v1 support is <a href="https://blog.packagist.com/shutting-down-packagist-org-support-for-composer-1-x/">coming to an end</a> <i class="glyphicon glyphicon-remove banner-close" data-banner-id="composer1eol"></i> </section> <nav class="container"> <div class="navbar" role="navigation"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <h1 class="navbar-brand"><a href="/">Packagist</a> <em class="hidden-sm hidden-xs">The PHP Package Repository</em></h1> </div> <div class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li> <a href="/explore/">Browse</a> </li> <li> <a href="/packages/submit">Submit</a> </li> <li> <a href="/register/">Create account</a> </li> <li class="nav-user"> <section class="nav-user-signin"> <a href="/login/">Sign in</a> <section class="signin-box"> <form action="/login/" method="POST" id="nav_login"> <div class="input-group"> <input class="form-control" type="text" id="_username" name="_username" placeholder="Username / Email"> <span class="input-group-addon"><span class="icon-user"></span></span> </div> <div class="input-group"> <input class="form-control" type="password" id="_password" name="_password" placeholder="Password"> <span class="input-group-addon"><span class="icon-lock"></span></span> </div> <div class="checkbox"> <label for="_remember_me"> <input type="checkbox" id="_remember_me" name="_remember_me" value="on" checked="checked" /> Remember me </label> </div> <div class="signin-box-buttons"> <a href="/login/github" class="pull-right btn btn-primary btn-github"><span class="icon-github"></span>Use Github</a> <button type="submit" class="btn btn-success" id="_submit_mini" name="_submit">Log in</button> </div> </form> <div class="signin-box-register"> <a href="/register/">No account yet? Create one now!</a> </div> </section> </section> </li> </ul> </div> </div> </nav> </header> <section class="wrapper wrapper-search"> <div class="container "> <form name="search_query" method="get" action="/search/" id="search-form" autocomplete="off"> <div class="sortable row"> <div class="col-xs-12 js-search-field-wrapper col-md-9"> <input type="search" id="search_query_query" name="query" required="required" autocomplete="off" placeholder="Search packages..." tabindex="1" class=" form-control" value="" /> </div> </div> </form> </div> </section> <section class="wrapper"> <section class="container content" role="main"> <div id="search-container" class="hidden"> <div class="row"> <div class="search-list col-md-9"></div> <div class="search-facets col-md-3"> <div class="search-facets-active-filters"></div> <div class="search-facets-type"></div> <div class="search-facets-tags"></div> </div> </div> <div class="row"> <div class="col-md-9"> <div id="powered-by"> Search by <a href="https://www.algolia.com/"><img src="/img/algolia-logo-light.svg?v=1739794478"></a> </div> <div id="pagination-container"> <div class="pagination"></div> </div> </div> </div> </div> <div class="row" id="view-package-page"> <div class="col-xs-12 package"> <div class="package-header"> <div class="row"> <div class="col-md-9"> <h2 class="title"> <a href="/packages/joomla/">joomla<span class="hidden"> </span>/</a><span class="hidden"> </span>input </h2> </div> </div> </div> <div class="row"> <div class="col-md-8"> <p class="requireme"><i class="glyphicon glyphicon-save"></i> <input type="text" readonly="readonly" value="composer require joomla/input" /></p> <p class="description">Joomla Input Package</p> </div> <div class="col-md-offset-1 col-md-3"> <div class="row package-aside"> <div class="details col-xs-12 col-sm-6 col-md-12"> <h5>Maintainers</h5> <p class="maintainers"> <a href="/users/wilsonge/"><img width="48" height="48" title="wilsonge" src="https://www.gravatar.com/avatar/9b26ac7056cf9ef565a2ad16317ef394?s=48&amp;d=identicon" srcset="https://www.gravatar.com/avatar/9b26ac7056cf9ef565a2ad16317ef394?s=96&amp;d=identicon 2x"></a> </p> <h5>Details</h5> <p class="canonical"> <a href="https://github.com/joomla-framework/input" title="Canonical Repository URL">github.com/joomla-framework/input</a> </p> <p><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/input">Homepage</a></p> <p><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/input/tree/1.x-dev">Source</a></p> <p><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/input/issues">Issues</a></p> </div> <div class="facts funding col-xs-12 col-sm-6 col-md-12"> <p> Fund package maintenance! <br><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla"> <i class="glyphicon glyphicon-user"></i>joomla </a> <br><a rel="nofollow noopener external noindex ugc" href="https://community.joomla.org/sponsorship-campaigns.html"> <i class="glyphicon glyphicon-link"></i>community.joomla.org/sponsorship-campaigns.html </a> </div> <div class="facts col-xs-12 col-sm-6 col-md-12"> <p> <span> <a href="/packages/joomla/input/stats" rel="nofollow">Installs</a>: </span> 309&#8201;381 </p> <p> <span> <a href="/packages/joomla/input/dependents?order_by=downloads" rel="nofollow">Dependents</a>: </span> 17 </p> <p> <span> <a href="/packages/joomla/input/suggesters" rel="nofollow">Suggesters</a>: </span> 4 </p> <p> <span> <a href="/packages/joomla/input/advisories" rel="nofollow">Security</a>: </span> 1 </p> <p> <span> <a href="https://github.com/joomla-framework/input/stargazers">Stars</a>: </span> 9 </p> <p> <span> <a href="https://github.com/joomla-framework/input/watchers">Watchers</a>: </span> 15 </p> <p> <span> <a href="https://github.com/joomla-framework/input/forks">Forks</a>: </span> 16 </p> <p> <span> <a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/input/issues">Open Issues</a>: </span> 2 </p> <p><span>Type:</span>joomla-package</p> </div> </div> </div> </div> <div class="row versions-section"> <div class="version-details col-md-9"> <div class="title"> <span class="version-number">3.0.0</span> <span class="release-date">2023-10-07 21:27 UTC</span> </div> <div class="clearfix package-links"> <div class="row"> <div class="clearfix visible-sm-block"></div> <div class="clearfix visible-md-block visible-lg-block"></div> <div class="requires col-sm-6 col-md-4 "> <p class="link-type">Requires</p> <ul><li>php: ^8.1.0</li><li><a href="/packages/joomla/filter">joomla/filter</a>: ^3.0</li><li><a href="/packages/symfony/deprecation-contracts">symfony/deprecation-contracts</a>: ^2|^3</li></ul> </div> <div class="devRequires col-sm-6 col-md-4 "> <p class="link-type">Requires (Dev)</p> <ul><li><a href="/packages/joomla/test">joomla/test</a>: ^3.0</li><li><a href="/packages/phan/phan">phan/phan</a>: ^5.4.2</li><li><a href="/packages/phpstan/phpstan">phpstan/phpstan</a>: ^1.10.7</li><li><a href="/packages/phpunit/phpunit">phpunit/phpunit</a>: ^9.5.28</li><li><a href="/packages/squizlabs/php_codesniffer">squizlabs/php_codesniffer</a>: ^3.7.2</li></ul> </div> <div class="clearfix visible-sm-block"></div> <div class="suggests col-sm-6 col-md-4 hidden-xs"> <p class="link-type">Suggests</p> <p class="no-links">None</p> </div> <div class="clearfix visible-md-block visible-lg-block"></div> <div class="provides col-sm-6 col-md-4 hidden-xs"> <p class="link-type">Provides</p> <p class="no-links">None</p> </div> <div class="clearfix visible-sm-block"></div> <div class="conflicts col-sm-6 col-md-4 hidden-xs"> <p class="link-type">Conflicts</p> <p class="no-links">None</p> </div> <div class="replaces col-sm-6 col-md-4 hidden-xs"> <p class="link-type">Replaces</p> <p class="no-links">None</p> </div> </div> </div> <div class="metadata"> <p class="license"><i class="glyphicon glyphicon-copyright-mark" title="License"></i> GPL-2.0-or-later <span class="source-reference"><i class="glyphicon glyphicon-bookmark" title="Source Reference"></i> 3ab947f2baf8b8f08b8ecc11f7ada91092a75354</span></p> <p class="tags"> <i class="glyphicon glyphicon-tag" title="Tags"></i> <a href="https://packagist.org/search/?tags=framework">framework</a><a href="https://packagist.org/search/?tags=input">input</a><a href="https://packagist.org/search/?tags=joomla">joomla</a></p> </div> </div> <div class="col-md-3 no-padding"> <div class="package-aside versions-wrapper"> <ul class="versions"> <li class="details-toggler version" data-version-id="dev-1.x-dev" data-load-more="/versions/5526477.json"> <a href="#dev-1.x-dev" class="version-number">dev-1.x-dev</a> </li> <li class="details-toggler version" data-version-id="dev-3.x-dev" data-load-more="/versions/6915097.json"> <a href="#dev-3.x-dev" class="version-number">dev-3.x-dev / 3.0.x-dev </a> </li> <li class="details-toggler version open" data-version-id="3.0.0" data-load-more="/versions/7575910.json"> <a href="#3.0.0" class="version-number">3.0.0</a> </li> <li class="details-toggler version" data-version-id="dev-2.0-dev" data-load-more="/versions/227017.json"> <a href="#dev-2.0-dev" class="version-number">dev-2.0-dev / 2.0.x-dev </a> </li> <li class="details-toggler version" data-version-id="2.0.4" data-load-more="/versions/6492956.json"> <a href="#2.0.4" class="version-number">2.0.4</a> </li> <li class="details-toggler version" data-version-id="2.0.3" data-load-more="/versions/6135658.json"> <a href="#2.0.3" class="version-number">2.0.3</a> </li> <li class="details-toggler version" data-version-id="2.0.2" data-load-more="/versions/6106662.json"> <a href="#2.0.2" class="version-number">2.0.2</a> </li> <li class="details-toggler version" data-version-id="2.0.1" data-load-more="/versions/5771870.json"> <a href="#2.0.1" class="version-number">2.0.1</a> <a class="advisory-alert" href="/packages/joomla/input/advisories?version=5771870"> <i class="glyphicon glyphicon-alert " title="Version has security advisories"></i> </a> </li> <li class="details-toggler version" data-version-id="2.0.0" data-load-more="/versions/5444683.json"> <a href="#2.0.0" class="version-number">2.0.0</a> <a class="advisory-alert" href="/packages/joomla/input/advisories?version=5444683"> <i class="glyphicon glyphicon-alert " title="Version has security advisories"></i> </a> </li> <li class="details-toggler version" data-version-id="2.0.0-rc" data-load-more="/versions/5429877.json"> <a href="#2.0.0-rc" class="version-number">2.0.0-rc</a> <a class="advisory-alert" href="/packages/joomla/input/advisories?version=5429877"> <i class="glyphicon glyphicon-alert " title="Version has security advisories"></i> </a> </li> <li class="details-toggler version" data-version-id="2.0.0-beta" data-load-more="/versions/3921496.json"> <a href="#2.0.0-beta" class="version-number">2.0.0-beta</a> <a class="advisory-alert" href="/packages/joomla/input/advisories?version=3921496"> <i class="glyphicon glyphicon-alert " title="Version has security advisories"></i> </a> </li> <li class="details-toggler version" data-version-id="1.4.0" data-load-more="/versions/3037871.json"> <a href="#1.4.0" class="version-number">1.4.0</a> </li> <li class="details-toggler version" data-version-id="1.3.0" data-load-more="/versions/2289253.json"> <a href="#1.3.0" class="version-number">1.3.0</a> </li> <li class="details-toggler version" data-version-id="1.2.3" data-load-more="/versions/2224993.json"> <a href="#1.2.3" class="version-number">1.2.3</a> </li> <li class="details-toggler version" data-version-id="1.2.2" data-load-more="/versions/2217464.json"> <a href="#1.2.2" class="version-number">1.2.2</a> </li> <li class="details-toggler version" data-version-id="1.2.1" data-load-more="/versions/1992346.json"> <a href="#1.2.1" class="version-number">1.2.1</a> </li> <li class="details-toggler version" data-version-id="1.2.0" data-load-more="/versions/249377.json"> <a href="#1.2.0" class="version-number">1.2.0</a> </li> <li class="details-toggler version" data-version-id="1.1.4" data-load-more="/versions/222309.json"> <a href="#1.1.4" class="version-number">1.1.4</a> </li> <li class="details-toggler version" data-version-id="1.1.3" data-load-more="/versions/185802.json"> <a href="#1.1.3" class="version-number">1.1.3</a> </li> <li class="details-toggler version" data-version-id="1.1.2" data-load-more="/versions/175446.json"> <a href="#1.1.2" class="version-number">1.1.2</a> </li> <li class="details-toggler version" data-version-id="1.1.1" data-load-more="/versions/131240.json"> <a href="#1.1.1" class="version-number">1.1.1</a> </li> <li class="details-toggler version" data-version-id="1.1.0" data-load-more="/versions/131152.json"> <a href="#1.1.0" class="version-number">1.1.0</a> </li> <li class="details-toggler version" data-version-id="1.0" data-load-more="/versions/105978.json"> <a href="#1.0" class="version-number">1.0</a> </li> <li class="details-toggler version" data-version-id="1.0-beta3" data-load-more="/versions/94377.json"> <a href="#1.0-beta3" class="version-number">1.0-beta3</a> </li> <li class="details-toggler version" data-version-id="1.0-beta2" data-load-more="/versions/77133.json"> <a href="#1.0-beta2" class="version-number">1.0-beta2</a> </li> <li class="details-toggler version" data-version-id="1.0-beta" data-load-more="/versions/94376.json"> <a href="#1.0-beta" class="version-number">1.0-beta</a> </li> <li class="details-toggler version" data-version-id="1.0-alpha" data-load-more="/versions/74646.json"> <a href="#1.0-alpha" class="version-number">1.0-alpha</a> </li> <li class="details-toggler version" data-version-id="dev-4.x-dev" data-load-more="/versions/8506217.json"> <a href="#dev-4.x-dev" class="version-number">dev-4.x-dev</a> </li> <li class="details-toggler version last" data-version-id="dev-php-8.2" data-load-more="/versions/6490043.json"> <a href="#dev-php-8.2" class="version-number">dev-php-8.2</a> </li> </ul> <div class="hidden versions-expander"> <i class="glyphicon glyphicon-chevron-down"></i> </div> </div> <div class="last-update"> <p class="auto-update-success">This package is auto-updated.</p> <p>Last update: 2025-02-10 07:31:29 UTC </p> </div> </div> </div> <hr class="clearfix"> <div class="readme markdown-body"> <h1>README</h1> <a id="user-content-the-input-package-" class="anchor" href="#user-content-the-input-package-" rel="nofollow noindex noopener external ugc"></a> <p><a href="https://packagist.org/packages/joomla/input" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/9d159fa9b31ebbbb8eb1a9bff12b206005352f8bb572f1512efbabc630217c68/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f696e7075742f762f737461626c65" alt="Latest Stable Version" /></a> <a href="https://packagist.org/packages/joomla/input" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/16d702c4a505d931bfe3048a3866115150c300fe2cf8c9305b36c60538a01fdc/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f696e7075742f646f776e6c6f616473" alt="Total Downloads" /></a> <a href="https://packagist.org/packages/joomla/input" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/690891ab34817934ed90bed6ce863a57570a44d0993b2aa6c13874937da7cfa4/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f696e7075742f762f756e737461626c65" alt="Latest Unstable Version" /></a> <a href="https://packagist.org/packages/joomla/input" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/e0463cf72dd66d6c4edc504a04080992587a47a14a0486c575a157de4f0b4474/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f696e7075742f6c6963656e7365" alt="License" /></a></p> <p>This package comprises of four classes, <code>Input\Input</code>and several sub-classes extended from it: <code>Input\Cookie</code>, <code>Input\Files</code>, and <code>Input\Json</code>. An input object is generally owned by the application and explicitly added to an application class as a public property, such as can be found in <code>Application\AbstractApplication</code>.</p> <p>The intent of this package is to abstract out the input source to allow code to be reused in different applications and in different contexts through dependency injection. For example, a controller could inspect the request variables directly using <code>JRequest</code>. But suppose there is a requirement to add a web service that carries input as a JSON payload. Instead of writing a second controller to handle the different input source, it would be much easier to inject an input object that is tailored for the type of input source, into the controller.</p> <p>Using a <code>Input\Input</code> object through dependency injection also makes code easier to test.</p> <h2 class="heading-element">Input\Input</h2><a id="user-content-inputinput" class="anchor" href="#user-content-inputinput" rel="nofollow noindex noopener external ugc"></a> <h3 class="heading-element">Construction</h3><a id="user-content-construction" class="anchor" href="#user-content-construction" rel="nofollow noindex noopener external ugc"></a> <p>Unlike its predecessor <code>JRequest</code> which is used statically, the <code>Input\Input</code> class is meant to be used as an instantiated concrete class. Among other things, this makes testing of the class, and the classes that are coupled to it, easier, but also means the developer has a lot more flexibility since this allows for dependency injection.</p> <p>The constructor takes two optional array arguments. The first is the source data which defaults to <strong>a copy of</strong> the superglobal <code>$_REQUEST</code> if omitted or <code>null</code>. The second is a general options array for which &#34;filter&#34; is the only option key currently supported. If omitted, <code>Input\Input</code> will just use the default instance of <code>Filter\Input</code>.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-v">Filter</span>\<span class="pl-smi">InputFilter</span>; <span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-smi">Input</span>; <span class="pl-c">// Default construction (data comes from $_REQUEST).</span> <span class="pl-s1"><span class="pl-c1">$</span>input</span> &#61; <span class="pl-k">new</span> <span class="pl-v">Input</span>\<span class="pl-v">Input</span>; <span class="pl-c">// Construction with data injection.</span> <span class="pl-s1"><span class="pl-c1">$</span>input</span> &#61; <span class="pl-k">new</span> <span class="pl-v">Input</span>\<span class="pl-v">Input</span>(<span class="pl-en">array</span>(<span class="pl-s">&#039;<span class="pl-s">foo</span>&#039;</span> &#61;&gt; <span class="pl-s">&#039;<span class="pl-s">bar</span>&#039;</span>)); <span class="pl-c">// Construction with a custom filter.</span> <span class="pl-s1"><span class="pl-c1">$</span>filter</span> &#61; <span class="pl-k">new</span> <span class="pl-v">InputFilter</span>(<span class="pl-c">/* custom settings */</span>); <span class="pl-s1"><span class="pl-c1">$</span>input</span> &#61; <span class="pl-k">new</span> <span class="pl-v">Input</span>\<span class="pl-v">Input</span>(<span class="pl-c1">null</span>, <span class="pl-s1"><span class="pl-c1">$</span>filter</span>);</pre> <h3 class="heading-element">Usage</h3><a id="user-content-usage" class="anchor" href="#user-content-usage" rel="nofollow noindex noopener external ugc"></a> <p>The most common usage of the <code>Input\Input</code> class will be through the get method which is roughly equivalent to the old <code>JRequest::getVar</code> method. The <code>get</code> method takes three arguments: a key name, a default value and a filter name (defaulting to &#34;cmd&#34; if omitted). The filter name is any valid filter type that the <code>Filter\Input</code> class, or the custom class provided in the constructor, supports.</p> <p>The set method is also equivalent to <code>JRequest::setVar</code> as is the getMethod method.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-smi">Input</span>; <span class="pl-s1"><span class="pl-c1">$</span>input</span> &#61; <span class="pl-k">new</span> <span class="pl-v">Input</span>\<span class="pl-v">Input</span>; <span class="pl-c">// Get the &#34;foo&#34; variable from the request.</span> <span class="pl-s1"><span class="pl-c1">$</span>foo</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">get</span>(<span class="pl-s">&#039;<span class="pl-s">foo</span>&#039;</span>); <span class="pl-c">// If the variable is not available, use a default.</span> <span class="pl-s1"><span class="pl-c1">$</span>foo</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">get</span>(<span class="pl-s">&#039;<span class="pl-s">foo</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">bar</span>&#039;</span>); <span class="pl-c">// Apply a custom filter to the variable, in this case, get the raw value.</span> <span class="pl-s1"><span class="pl-c1">$</span>foo</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">get</span>(<span class="pl-s">&#039;<span class="pl-s">body</span>&#039;</span>, <span class="pl-c1">null</span>, <span class="pl-s">&#039;<span class="pl-s">raw</span>&#039;</span>); <span class="pl-c">// Explicitly set an input value.</span> <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">set</span>(<span class="pl-s">&#039;<span class="pl-s">hidemainmenu</span>&#039;</span>, <span class="pl-c1">true</span>); <span class="pl-c">// Get the request method used (assuming a web application example), returned in upper case.</span> <span class="pl-k">if</span> (<span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">getMethod</span>() &#61;&#61; <span class="pl-s">&#039;<span class="pl-s">POST</span>&#039;</span>) { <span class="pl-c">// Do something.</span> }</pre> <p>The filter types available when using <code>Filter\InputFilter</code> are:</p> <ul> <li>INT, INTEGER - Matches the first, signed integer value.</li> <li>UINT - Matches the first unsigned integer value.</li> <li>FLOAT, DOUBLE - Matches the first floating point number.</li> <li>BOOL, BOOLEAN - Converts the value to a boolean data type.</li> <li>WORD - Allows only case insensitive A-Z and underscores.</li> <li>ALNUM - Allows only case insensitive A-Z and digits.</li> <li>CMD - Allows only case insensitive A-Z, underscores, periods and dashes.</li> <li>BASE64 - Allows only case insensitive A-Z, forward slash, plus and equals.</li> <li>STRING - Returns a fully decoded string.</li> <li>HTML - Returns a string with HTML entities and tags intact, subject to the white or black lists in the filter.</li> <li>ARRAY - Returns the source as an array with no additional filtering applied.</li> <li>PATH - Matches legal characters for a path.</li> <li>USERNAME - Strips a select set of characters from the source (\x00, -, \x1F, \x7F, &lt;, &gt;, &#34;, &#039;, %, &amp;).</li> <li>RAW - The raw string is returned with no filtering</li> </ul> <p>If no filter type is specified, the default handling of <code>Filter\Input</code> is to return an aggressively cleaned and trimmed string, stripped of any HTML or encoded characters.</p> <p>Additionally, magic getters are available as shortcuts to specific filter types.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-smi">Input</span>; <span class="pl-s1"><span class="pl-c1">$</span>input</span> &#61; <span class="pl-k">new</span> <span class="pl-v">Input</span>\<span class="pl-v">Input</span>; <span class="pl-c">// Apply the &#34;INT&#34; filter type.</span> <span class="pl-s1"><span class="pl-c1">$</span>id</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">getInt</span>(<span class="pl-s">&#039;<span class="pl-s">id</span>&#039;</span>); <span class="pl-c">// Apply the &#34;WORD&#34; filter type.</span> <span class="pl-s1"><span class="pl-c1">$</span>folder</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">getWord</span>(<span class="pl-s">&#039;<span class="pl-s">folder</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">images</span>&#039;</span>); <span class="pl-c">// Apply the &#34;USERNAME&#34; filter.</span> <span class="pl-s1"><span class="pl-c1">$</span>ntLogin</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">getUsername</span>(<span class="pl-s">&#039;<span class="pl-s">login</span>&#039;</span>); <span class="pl-c">// Using an unknown filter. It works, but is treated the same as getString.</span> <span class="pl-s1"><span class="pl-c1">$</span>foo</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">getFoo</span>(<span class="pl-s">&#039;<span class="pl-s">foo</span>&#039;</span>);</pre> <p>The class also supports a magic get method that allows you shortcut access to other superglobals such as <code>$_POST</code>, etc, but returning them as a <code>Input\Input</code> object.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-smi">Input</span>; <span class="pl-s1"><span class="pl-c1">$</span>input</span> &#61; <span class="pl-k">new</span> <span class="pl-v">Input</span>\<span class="pl-v">Input</span>; <span class="pl-c">// Get the $_POST superglobal.</span> <span class="pl-s1"><span class="pl-c1">$</span>post</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-c1">post</span>; <span class="pl-c">// Access a server setting as if it&#039;s a Input\Input object.</span> <span class="pl-k">if</span> (<span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-c1">server</span>-&gt;<span class="pl-en">get</span>(<span class="pl-s">&#039;<span class="pl-s">SERVER_ADDR</span>&#039;</span>)) { <span class="pl-c">// Do something with the IP address.</span> } <span class="pl-c">// Access an ENV variable.</span> <span class="pl-s1"><span class="pl-c1">$</span>host</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-c1">env</span>-&gt;<span class="pl-en">get</span>(<span class="pl-s">&#039;<span class="pl-s">HOSTNAME</span>&#039;</span>);</pre> <h3 class="heading-element">Serialization</h3><a id="user-content-serialization" class="anchor" href="#user-content-serialization" rel="nofollow noindex noopener external ugc"></a> <p>The <code>Input\Input</code> class implements the <code>Serializable</code> interface so that it can be safely serialized and unserialized. Note that when serializing the &#34;ENV&#34; and &#34;SERVER&#34; inputs are removed from the class as they may conflict or inappropriately overwrite settings during unserialization. This allows for <code>Input\Input</code> objects to be safely used with cached data.</p> <h2 class="heading-element">Input\Cookie</h2><a id="user-content-inputcookie" class="anchor" href="#user-content-inputcookie" rel="nofollow noindex noopener external ugc"></a> <blockquote> <p>Can you help improve this section of the README?</p> </blockquote> <h2 class="heading-element">Input\Files</h2><a id="user-content-inputfiles" class="anchor" href="#user-content-inputfiles" rel="nofollow noindex noopener external ugc"></a> <p>The <code>Input\Files</code> class provides a way to handle file attachments as payloads of POSTed forms. Consider the following form which is assumed to handle an array of files to be attached (through some JavaScript behavior):</p> <pre><span class="pl-kos">&lt;</span><span class="pl-ent">form</span> <span class="pl-c1">method</span>&#61;&#34;<span class="pl-s">POST</span>&#34; <span class="pl-c1">action</span>&#61;&#34;<span class="pl-s">/files</span>&#34; <span class="pl-c1">enctype</span>&#61;&#34;<span class="pl-s">multipart/form-data</span>&#34;<span class="pl-kos">&gt;</span> Attachments: <span class="pl-kos">&lt;</span><span class="pl-ent">input</span> <span class="pl-c1">type</span>&#61;&#34;<span class="pl-s">file</span>&#34; <span class="pl-c1">name</span>&#61;&#34;<span class="pl-s">attachments[]</span>&#34; <span class="pl-kos">/&gt;</span> <span class="pl-kos">&lt;</span><span class="pl-ent">button</span><span class="pl-kos">&gt;</span>Add another file<span class="pl-kos">&lt;/</span><span class="pl-ent">button</span><span class="pl-kos">&gt;</span> <span class="pl-kos">&lt;/</span><span class="pl-ent">form</span><span class="pl-kos">&gt;</span></pre> <p>Access the files from the request could be done as follows:</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-smi">Input</span>; <span class="pl-c">// By default, a new Input\Files will inspect $_FILES.</span> <span class="pl-s1"><span class="pl-c1">$</span>input</span> &#61; <span class="pl-k">new</span> <span class="pl-v">Input</span>\<span class="pl-v">Files</span>; <span class="pl-s1"><span class="pl-c1">$</span>files</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span>input</span>-&gt;<span class="pl-en">get</span>(<span class="pl-s">&#039;<span class="pl-s">attachments</span>&#039;</span>); <span class="pl-k">echo</span> <span class="pl-s">&#039;<span class="pl-s">Inspecting $_FILES:</span>&#039;</span>; <span class="pl-en">var_dump</span>(<span class="pl-s1"><span class="pl-c1">$</span><span class="pl-c1">_FILES</span></span>); <span class="pl-k">echo</span> <span class="pl-s">&#039;<span class="pl-s">Inspecting $files:</span>&#039;</span>; <span class="pl-en">var_dump</span>(<span class="pl-s1"><span class="pl-c1">$</span>files</span>);</pre> <pre class="notranslate"><code>Inspecting $_FILES: array &#039;name&#039; &#61;&gt; array 0 &#61;&gt; string &#039;aje_sig_small.png&#039; (length&#61;17) 1 &#61;&gt; string &#039;&#039; (length&#61;0) &#039;type&#039; &#61;&gt; array 0 &#61;&gt; string &#039;image/png&#039; (length&#61;9) 1 &#61;&gt; string &#039;&#039; (length&#61;0) &#039;tmp_name&#039; &#61;&gt; array 0 &#61;&gt; string &#039;/private/var/tmp/phpPfGfnN&#039; (length&#61;26) 1 &#61;&gt; string &#039;&#039; (length&#61;0) &#039;error&#039; &#61;&gt; array 0 &#61;&gt; int 0 1 &#61;&gt; int 4 &#039;size&#039; &#61;&gt; array 0 &#61;&gt; int 16225 1 &#61;&gt; int 0 Inspecting $files: array 0 &#61;&gt; array &#039;name&#039; &#61;&gt; string &#039;sig_small.png&#039; (length&#61;17) &#039;type&#039; &#61;&gt; string &#039;image/png&#039; (length&#61;9) &#039;tmp_name&#039; &#61;&gt; string &#039;/private/var/tmp/phpybKghO&#039; (length&#61;26) &#039;error&#039; &#61;&gt; int 0 &#039;size&#039; &#61;&gt; int 16225 1 &#61;&gt; array &#039;name&#039; &#61;&gt; string &#039;&#039; (length&#61;0) &#039;type&#039; &#61;&gt; string &#039;&#039; (length&#61;0) &#039;tmp_name&#039; &#61;&gt; string &#039;&#039; (length&#61;0) &#039;error&#039; &#61;&gt; int 4 &#039;size&#039; &#61;&gt; int 0 </code></pre> <p>Unlike the PHP <code>$_FILES</code> supergobal, this array is very easier to parse. The example above assumes two files were submitted, but only one was specified. The &#039;blank&#039; file contains an error code (see <a href="https://www.php.net/manual/en/features.file-upload.errors.php" rel="nofollow noindex noopener external ugc">PHP file upload errors</a>).</p> <p>The <code>set</code> method is disabled in <code>Input\Files</code>.</p> <h2 class="heading-element">Input\Json</h2><a id="user-content-inputjson" class="anchor" href="#user-content-inputjson" rel="nofollow noindex noopener external ugc"></a> <blockquote> <p>Can you help improve this section of the README?</p> </blockquote> <h2 class="heading-element">Mocking the Input Package</h2><a id="user-content-mocking-the-input-package" class="anchor" href="#user-content-mocking-the-input-package" rel="nofollow noindex noopener external ugc"></a> <p>For simple cases where you only need to mock the <code>Input\Input</code> class, the following snippet can be used:</p> <pre class="notranslate"><code>$mockInput &#61; $this-&gt;getMockBuilder(&#039;Joomla\Input\Input&#039;)-&gt;getMock(); </code></pre> <h2 class="heading-element">Changes From 1.x</h2><a id="user-content-changes-from-1x" class="anchor" href="#user-content-changes-from-1x" rel="nofollow noindex noopener external ugc"></a> <p>The following changes have been made to the <code>Input</code> package since 1.x.</p> <h3 class="heading-element">Pass By Reference</h3><a id="user-content-pass-by-reference" class="anchor" href="#user-content-pass-by-reference" rel="nofollow noindex noopener external ugc"></a> <p><code>Input</code>, <code>Input\Cookie</code>, and <code>Input\Files</code> all use the source superglobal by reference in 1.x. In 2.0, the reference is removed.</p> <h2 class="heading-element">Installation via Composer</h2><a id="user-content-installation-via-composer" class="anchor" href="#user-content-installation-via-composer" rel="nofollow noindex noopener external ugc"></a> <p>Add <code>&#34;joomla/input&#34;: &#34;~3.0&#34;</code> to the require block in your composer.json and then run <code>composer install</code>.</p> <pre>{ <span class="pl-ent">&#34;require&#34;</span>: { <span class="pl-ent">&#34;joomla/input&#34;</span>: <span class="pl-s"><span class="pl-pds">&#34;</span>~3.0<span class="pl-pds">&#34;</span></span> } }</pre> <p>Alternatively, you can simply run the following from the command line:</p> <pre>composer require joomla/input <span class="pl-s"><span class="pl-pds">&#34;</span>~3.0<span class="pl-pds">&#34;</span></span></pre> <p>If you want to include the test sources, use</p> <pre>composer require --prefer-source joomla/input <span class="pl-s"><span class="pl-pds">&#34;</span>~3.0<span class="pl-pds">&#34;</span></span></pre> </div> </div> </div> </section> </section> </section> <footer class="wrapper-footer"> <nav class="container"> <div class="row"> <ul class="social col-xs-7 col-sm-4 col-md-2 pull-right"> <li><a href="http://github.com/composer/packagist" title="GitHub"><span class="icon-github"></span></a></li> <li><a href="https://twitter.com/packagist" title="Follow @packagist"><span class="icon-twitter"></span></a></li> <li><a href="mailto:contact@packagist.org" title="Contact"><span class="icon-mail"></span></a></li> </ul> <ul class="col-xs-4 col-sm-4 col-md-2"> <li><a href="/about">About Packagist</a></li> <li><a href="/feeds/" rel="nofollow">Atom/RSS Feeds</a></li> </ul> <div class="clearfix visible-xs-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="/statistics" rel="nofollow">Statistics</a></li> <li><a href="/explore/">Browse Packages</a></li> </ul> <div class="clearfix visible-xs-block visible-sm-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="/apidoc">API</a></li> <li><a href="/mirrors">Mirrors</a></li> </ul> <div class="clearfix visible-xs-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="https://status.packagist.org/">Status</a></li> <li><a href="https://p.datadoghq.com/sb/x98w56x71erzshui-4a54c45f82bacc991e83302548934b6a">Dashboard</a></li> </ul> </div> <div class="row sponsor"> <p class="col-xs-12">Packagist maintenance and hosting provided by <a href="https://packagist.com/"><img alt="Private Packagist" src="/img/private-packagist.svg?v=1739794478" /></a></p> </div> <div class="row sponsor"> <p class="col-xs-12">Monitoring provided by <a href="https://datadog.com/"><img alt="Datadog" src="/img/datadog-light.png?v=1739794478" /></a></p> </div> </nav> </footer> <script nonce="psZq1t+Vp29Ny7J9zFNkXg=="> var algoliaConfig = {"app_id":"M58222SH95","search_key":"5ae4d03c98685bd7364c2e0fd819af05","index_name":"packagist"}; window.process = { env: { DEBUG: undefined }, }; </script> <script nonce="psZq1t+Vp29Ny7J9zFNkXg==" src="/build/app.js?v=1739794478"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10