<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: PHP-Prefixer</title>
    <description>The latest articles on Forem by PHP-Prefixer (@phpprefixer).</description>
    <link>https://forem.com/phpprefixer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F4763%2F61fd8b36-1253-461a-9759-3abbbaa52491.png</url>
      <title>Forem: PHP-Prefixer</title>
      <link>https://forem.com/phpprefixer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/phpprefixer"/>
    <language>en</language>
    <item>
      <title>How To: Using Guzzle and prefixing a WordPress plugin</title>
      <dc:creator>Anibal Sanchez</dc:creator>
      <pubDate>Mon, 08 Nov 2021 11:54:30 +0000</pubDate>
      <link>https://forem.com/phpprefixer/how-to-using-guzzle-and-prefixing-a-wordpress-plugin-3jd4</link>
      <guid>https://forem.com/phpprefixer/how-to-using-guzzle-and-prefixing-a-wordpress-plugin-3jd4</guid>
      <description>&lt;p&gt;This post was originally published on &lt;a href="https://blog.php-prefixer.com/2021/10/20/using-guzzle-in-a-wordpress-plugin-with-php-prefixer/" rel="noopener noreferrer"&gt;blog.php-prefixer.com&lt;/a&gt;. This tutorial is the second post in a series about WordPress plugin development based on PHP Prefixer. You can read the previous article here: &lt;a href="https://dev.to/phpprefixer/new-tutorial-using-php-composer-in-the-wordpress-ecosystem-4bmp"&gt;Using PHP Composer in the WordPress Ecosystem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you tried to use the fantastic 'Guzzle' on WordPress, but someone said it wasn’t a good idea due to the possible conflicts?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guzzle&lt;/strong&gt; is a PHP HTTP client built for PHP that makes it easy to send HTTPS requests. Interestingly, Guzzle offers a minimal API, making it possible for a developer to make HTTP or HTTPS requests to communicate with other applications efficiently. &lt;/p&gt;

&lt;p&gt;In short, &lt;strong&gt;Guzzle for WordPress is an excellent match&lt;/strong&gt;, and now we learn how Guzzle can be prefixed and bundled as a WordPress plugin. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.php-prefixer.com%2Fwp-content%2Fuploads%2F2021%2F10%2Fphp-prefixer-guzzle-in-worpress-plugin.png%3Fresize%3D1536%252C768%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.php-prefixer.com%2Fwp-content%2Fuploads%2F2021%2F10%2Fphp-prefixer-guzzle-in-worpress-plugin.png%3Fresize%3D1536%252C768%26ssl%3D1" alt="How To: Using Guzzle and prefixing a WordPress "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before understanding how to integrate Guzzle with PHP-Prefixer, let's explore some benefits of using Guzzle for a developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Guzzle
&lt;/h2&gt;

&lt;p&gt;Let's have a quick look over &lt;strong&gt;the benefits of Guzzle&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send synchronous and asynchronous requests from the same interface. &lt;/li&gt;
&lt;li&gt;Abstracts away the underlying HTTP transport, allowing you to write code independent of the environment and transport.&lt;/li&gt;
&lt;li&gt;There are no strict dependencies on cURL (a native library that will enable you to connect and communicate to many different servers), PHP streams, or non-blocking event loops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Above all, it's one of the excellent libraries for making HTTP calls using various methods.&lt;/p&gt;

&lt;p&gt;To make your life easier, we provide a tutorial on installing the &lt;strong&gt;Guzzle&lt;/strong&gt; and offer some brief examples to show you the power of this library! &lt;a href="https://docs.guzzlephp.org/en/stable/overview.html#installation" rel="noopener noreferrer"&gt;Let's find out&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How are Guzzle and Composer helpful?
&lt;/h2&gt;

&lt;p&gt;For importing third-party components into your PHP project, you rely heavily on &lt;strong&gt;PHP’s Composer dependency manager&lt;/strong&gt;.  And, when it comes to WordPress, you should be careful when using Composer libraries, especially if you plan to share code with other WordPress users. If a WordPress site uses two plugins, i.e., plugin A and plugin B, with the same composer libraries but different versions, version v2.1, version v3.2, respectively, the chances of encountering a &lt;a href="https://en.wikipedia.org/wiki/Race_condition" rel="noopener noreferrer"&gt;race condition&lt;/a&gt; becomes high.  As a result, you or your users will end up in &lt;a href="https://github.com/composer/composer/issues/2609" rel="noopener noreferrer"&gt;Composer Dependency Hell&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Although WordPress has a deterministic method of loading plugins, and it is technically possible to manipulate them, this is pretty frustrating.  This is why you'll have to take steps to isolate your code from the other plugins, which include potentially incompatible library versions.&lt;/p&gt;

&lt;p&gt;A way to get around this is by employing a &lt;strong&gt;PHP Prefixing service&lt;/strong&gt; that can wrap all Composer dependencies, and Guzzle is no exception. This HTTP library is perfect for WordPress because it can be prefixed and safely used in WordPress plugins. The prefixed Guzzle library will help you effectively deal with HTTP requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prefixing Guzzle with PHP-Prefixer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PHP Prefixer&lt;/strong&gt; wraps Composer libraries for your WordPress projects. It processes the dependencies to run along with other WordPress third-party plugins seamlessly. PHP-Prefixer schema definition declares your scope configuration, and this service packages the plugin and the associated libraries in a new unique space. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PHP-Prefixer does not need a local installation&lt;/strong&gt;. There are no Phars. There are no new dependencies. A PHP-Prefixer project can be up and running as quickly as possible. You are free to install any library, and PHP-Prefixer will manage your namespaces.&lt;/p&gt;

&lt;p&gt;Since you know the what and why of PHP Prefixer, it's time to look at &lt;strong&gt;how to use it to implement the Guzzle library on WordPress&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample project: Hello Guzzle
&lt;/h2&gt;

&lt;p&gt;Let’s start with ‘&lt;strong&gt;Hello Prefixed World plugin&lt;/strong&gt;’, a sample project based on the Hello Dolly plugin. The original &lt;strong&gt;Hello Dolly&lt;/strong&gt; plugin comes pre-installed in WordPress, and it shows lyrics from &lt;a href="http://en.wikipedia.org/wiki/Hello,_Dolly!_(song)" rel="noopener noreferrer"&gt;the famous song&lt;/a&gt; in the WordPress admin. &lt;/p&gt;

&lt;p&gt;Some CSS is used in the PHP file to control how the lyrics are styled. This plugin has no practical use, you can delete it. It will not impact your WordPress site’s functionality, but why do you want to delete it, especially when you can make better use of it?&lt;/p&gt;

&lt;p&gt;In the previous post, we presented how the ‘*&lt;strong&gt;&lt;em&gt;Hello Dolly&lt;/em&gt;&lt;/strong&gt;*’ plugin can be prefixed here: &lt;a href="https://dev.to/phpprefixer/new-tutorial-using-php-composer-in-the-wordpress-ecosystem-4bmp"&gt;Using PHP Composer in the WordPress Ecosystem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, we present &lt;strong&gt;a new case repurposing the Hello Dolly plugin to use the Guzzle library&lt;/strong&gt;. In this sample project, we will integrate the &lt;strong&gt;Numbers API&lt;/strong&gt;. This API is for interesting facts about numbers. It provides trivia, math, date, and year facts about numbers.&lt;/p&gt;

&lt;p&gt;Just hit &lt;a href="http://numbersapi.com/number/type" rel="noopener noreferrer"&gt;http://numbersapi.com/number/type&lt;/a&gt; to get a plain text response, where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type is one of trivia, math, date, or year. If omitted, trivia is used instead.&lt;/li&gt;
&lt;li&gt;If the type is date &amp;amp; ranges of numbers, the number is an integer, or the keyword random, for which it will try to return a random available fact, or month/day (e.g., 1/19, 2/03, 06/10) if the type is date &amp;amp; ranges of numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s look at the example: &lt;a href="http://numbersapi.com/273" rel="noopener noreferrer"&gt;http://numbersapi.com/273 trivia&lt;/a&gt; ⇒ &lt;em&gt;273 is the result given by Google and Bing for the query "273 is the zero of the Celsius temperature scale (to the nearest whole number) in Kelvin&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you want to get facts about multiple numbers in one request, specify ranges for numbers in &lt;a href="http://numbersapi.com/number/type" rel="noopener noreferrer"&gt;http://numbersapi.com/number/type&lt;/a&gt;. A number range (inclusive) is defined as minimum and maximum: multiple separate ranges and individual numbers (a comma). The response format will always be a JSON map from numbers to facts, of at most 100 numbers. &lt;/p&gt;

&lt;p&gt;Here is the example: &lt;a href="http://numbersapi.com/6..8,10" rel="noopener noreferrer"&gt;http://numbersapi.com/6..8,10&lt;/a&gt; ⇒ &lt;em&gt;{ "6": "6 is the number of basic holes or keys on most woodwind instruments.", "7": "7 is the number of colors of the rainbow.", "8": "8 is the number of bits in a byte.", "10": "10 is the number of years in a decade." }&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Combining the Numbers API and the “Hello Dolly”, we get &lt;strong&gt;a new plugin that renders number facts&lt;/strong&gt;, and &lt;strong&gt;prefixing the Guzzle library with our PPP scope&lt;/strong&gt;, the plugin is ready to be distributed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\GuzzleHttp\Client&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nc"&gt;GuzzleHttpClient&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;hello_prefixed_guzzle_get_number_fact&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;// Create a client&lt;/span&gt;
   &lt;span class="nv"&gt;$client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GuzzleHttpClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
   &lt;span class="nv"&gt;$response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$client&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'http://numbersapi.com/'&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;mt_rand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;wptexturize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$response&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getBody&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nc"&gt;This&lt;/span&gt; &lt;span class="n"&gt;just&lt;/span&gt; &lt;span class="n"&gt;echoes&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;chosen&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="s1"&gt;'ll position it later.
function hello_prefixed_guzzle()
{
   require_once __DIR__.'&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vendor&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;autoload&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="s1"&gt;';

   $randomNumberFact = hello_prefixed_guzzle_get_number_fact();

   $lang = '';
   if ('&lt;/span&gt;&lt;span class="n"&gt;en_&lt;/span&gt;&lt;span class="s1"&gt;' !== substr(get_user_locale(), 0, 3)) {
       $lang = '&lt;/span&gt; &lt;span class="n"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"en"&lt;/span&gt;&lt;span class="s1"&gt;';
   }

   // The modified version of the Hello Dolly plugin shows a number fact using Guzzle to query numbersapi.com.
   printf(
       '&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"prefixed_guzzle"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;span&lt;/span&gt; &lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"screen-reader-text"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;%&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;span&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;span&lt;/span&gt; &lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ltr"&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;%&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;span&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;',
       __('&lt;/span&gt;&lt;span class="nc"&gt;A&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="n"&gt;fact&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;numbersapi&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="s1"&gt;', '&lt;/span&gt;&lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;prefixed_guzzle&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="nv"&gt;$lang&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="nv"&gt;$randomNumberFact&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The plugin code is available in this repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/PHP-Prefixer/using-guzzle-in-a-word-press-plug-in-with-php-prefixer" rel="noopener noreferrer"&gt;https://github.com/PHP-Prefixer/using-guzzle-in-a-word-press-plugin-with-php-prefixer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, like &lt;strong&gt;the cherry on top&lt;/strong&gt;, the repository includes the &lt;a href="https://php-prefixer.com/docs/command-line/" rel="noopener noreferrer"&gt;GitHub Action&lt;/a&gt; to run the prefixed job as a step of the development workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using the Command-Line and GitHub Actions
&lt;/h2&gt;

&lt;p&gt;Assuming that you completed the previous tutorial in the series, you know how to create a project and prefix a build. You are ready to prefix PHP code using the Command-line and GitHub Actions to improve your development toolchain.&lt;/p&gt;

&lt;p&gt;The PHP-Prefixer service has a command-line (CLI) that empowers you to use the service locally and process the project source code from your workstation.&lt;/p&gt;

&lt;p&gt;The command calls the &lt;strong&gt;PHP-Prefixer&lt;/strong&gt; service using the &lt;a href="https://php-prefixer.com/docs/rest-api-reference/" rel="noopener noreferrer"&gt;REST API&lt;/a&gt; to submit a project source code, apply the prefixes, wait and download the results.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;PHP-Prefixer CLI&lt;/strong&gt; is available here:  &lt;a href="https://github.com/PHP-Prefixer/php-prefixer-cli" rel="noopener noreferrer"&gt;https://github.com/PHP-Prefixer/php-prefixer-cli&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Enter GitHub Actions for PHP-Prefixer
&lt;/h3&gt;

&lt;p&gt;In software engineering, CI/CD or CICD is the combined practice of continuous integration and delivery or deployment. CI/CD bridges the gaps between development and operation activities by enforcing automation in the building, testing, and deployment of applications.&lt;/p&gt;

&lt;p&gt;To facilitate the usage of PHP-Prefixer, the &lt;a href="https://php-prefixer.com/docs/command-line/" rel="noopener noreferrer"&gt;Command-Line&lt;/a&gt; provides an ideal tool to integrate the prefixing service in any CI/CD context. As a reference implementation, you can check the official &lt;a href="https://github.com/marketplace/actions/php-prefixer" rel="noopener noreferrer"&gt;PHP Prefixer Build Action&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To use the Action, you must create an account on &lt;a href="https://php-prefixer.com/" rel="noopener noreferrer"&gt;PHP-Prefixer&lt;/a&gt; and prepare your projects with the prefix defined in the composer.json schema. You can first prefix your project on the service web interface and then integrate Action in your repositories. Before using the Action and the command-line, we recommend checking the documentation and guides here: &lt;a href="https://php-prefixer.com/docs/guides/" rel="noopener noreferrer"&gt;https://php-prefixer.com/docs/guides/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Create your Github Workflow configuration in &lt;code&gt;.github/workflows/prefixer.yml&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Prefixer&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;

    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run PHP-Prefixer&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PHP-Prefixer/php-prefixer-build-action@v0.0.6&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;GH_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;personal_access_token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.PERSONAL_ACCESS_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;project_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.PROJECT_ID }}&lt;/span&gt;
    &lt;span class="c1"&gt;# ... then your own project steps ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Running PHP Prefixer Build Action
&lt;/h3&gt;

&lt;p&gt;The Action is a straightforward implementation of the &lt;a href="https://php-prefixer.com/docs/command-line/" rel="noopener noreferrer"&gt;PHP-Prefixer CLI&lt;/a&gt;. The Action clones the repository, packages the project in a ZIP file, sends the source code to PHP-Prefixer, and receives the results. The new package is then committed to the &lt;code&gt;prefixed&lt;/code&gt; branch to make it available at the repository level.&lt;/p&gt;

&lt;p&gt;The sample Action is configured on the sample plugin repository that you can run manually.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Run the GitHub Action
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fimages%2Fci-cd%2Fgithub-action-run-step1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fimages%2Fci-cd%2Fgithub-action-run-step1.png" alt="Step 1: Run the GitHub Action"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2: Wait for the PHP-Prefixer process
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fimages%2Fci-cd%2Fgithub-action-run-step2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fimages%2Fci-cd%2Fgithub-action-run-step2.png" alt="Step 2: Wait for the PHP-Prefixer process"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3: The Action is completed, and the results are committed to the prefixed branch
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fimages%2Fci-cd%2Fgithub-action-run-step3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fimages%2Fci-cd%2Fgithub-action-run-step3.png" alt="Step 3: The Action is completed, and the results are committed to the prefixed branch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this sample, we can see how the GitHub Action runs and processes the output that the user receives on the screen. It might take a few iterations to fix syntax and get everything right, but a successful prefixed project is an outcome. The results can be checked in the WordPress plugin prefixed branch: &lt;a href="https://github.com/PHP-Prefixer/using-guzzle-in-a-word-press-plug-in-with-php-prefixer/tree/prefixed" rel="noopener noreferrer"&gt;https://github.com/PHP-Prefixer/using-guzzle-in-a-word-press-plug-in-with-php-prefixer/tree/prefixed&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;This article gave &lt;strong&gt;a sneak peek of Guzzle, which is now prefixed for WordPress, and the credit goes to PHP-Prefixer&lt;/strong&gt;. PHP prefixer is a new &amp;amp; innovative way of designing solutions based on PHP libraries and Composer, and it has already set on a path to storm the web development galaxy (or at least our little corner). &lt;/p&gt;

&lt;p&gt;Apart from offering on-demand resources to process PHP Composer packages, &lt;strong&gt;PHP-Prefixer improves the time to market for your most prominent idea&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PHP-Prefixer&lt;/strong&gt; promises excellent prefixing results in WordPress plugins. Just declare what to prefix, and we will take care of the rest!&lt;/p&gt;

</description>
      <category>php</category>
      <category>opensource</category>
      <category>wordpress</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>New Tutorial: Using PHP Composer in the WordPress Ecosystem</title>
      <dc:creator>Anibal Sanchez</dc:creator>
      <pubDate>Mon, 27 Sep 2021 13:57:28 +0000</pubDate>
      <link>https://forem.com/phpprefixer/new-tutorial-using-php-composer-in-the-wordpress-ecosystem-4bmp</link>
      <guid>https://forem.com/phpprefixer/new-tutorial-using-php-composer-in-the-wordpress-ecosystem-4bmp</guid>
      <description>&lt;p&gt;This post was originally published on &lt;a href="https://blog.php-prefixer.com/2021/10/20/using-guzzle-in-a-wordpress-plugin-with-php-prefixer/" rel="noopener noreferrer"&gt;blog.php-prefixer.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When building a &lt;strong&gt;WordPress website&lt;/strong&gt;, developers like you build a plethora of themes and plugins. In doing so, you frequently copy-paste the same code over and over again. It could be just to create your versions of available libraries. Every time you manually duplicate code – you increase the development time and reduce the time you spent developing the business layer of your plugin.&lt;/p&gt;

&lt;p&gt;That’s where you need a &lt;em&gt;dependency management tool&lt;/em&gt; like &lt;strong&gt;Composer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As pip is for Python and Bundler is for Ruby, &lt;strong&gt;Composer is for PHP&lt;/strong&gt; – it’s a dependency manager!&lt;/p&gt;

&lt;p&gt;Though Composer allows declaring, installing, and managing dependencies, its use in WordPress is limited. The &lt;strong&gt;development of plugins powered by Composer&lt;/strong&gt; can result in conflicts between any installed libraries and pose issues when dealing with multiple plugins using the same dependency.&lt;/p&gt;

&lt;p&gt;For instance, a site uses two plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plugin “Menu” uses the library "MyDates" in version 1.40&lt;/li&gt;
&lt;li&gt;Plugin “Restaurant Menu” the library "MyDates" in version 2.0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Both plugins use the same dependency&lt;/strong&gt;. The same namespace is defined in both versions but has entirely different functionalities.&lt;/p&gt;

&lt;p&gt;In practice, you get PHP errors such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Fatal&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Cannot&lt;/span&gt; &lt;span class="n"&gt;redeclare&lt;/span&gt; &lt;span class="nf"&gt;GuzzleHttp\uri_template&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;previously&lt;/span&gt; &lt;span class="n"&gt;declared&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;
&lt;span class="mf"&gt;...&lt;/span&gt;
&lt;span class="nc"&gt;Fatal&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Cannot&lt;/span&gt; &lt;span class="k"&gt;declare&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Psr\Cache\CacheItemPoolInterface&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;because&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;already&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;
&lt;span class="mf"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To solve these conflicts and ensure a seamless coding experience, we’ve developed a service called &lt;strong&gt;PHP-Prefixer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From solving conflicts to prefixing Composer-installed libraries – it saves you from the nightmare of copy-pasting and testing the library source code with different namespaces.&lt;/p&gt;

&lt;p&gt;PHP-Prefixer is cloud-based and accessible from anywhere. It lets you install any library while eliminating the complex configuration of hardware or software. Just declare what to prefix in the &lt;code&gt;composer.json&lt;/code&gt; schema, and the PHP-Prefixer does it for you.&lt;/p&gt;

&lt;p&gt;Cool, isn’t it?&lt;/p&gt;

&lt;p&gt;These are the steps to produce a &lt;strong&gt;Hello Prefixed World plugin&lt;/strong&gt; for WordPress using the &lt;strong&gt;PHP-Prefixer&lt;/strong&gt; cloud. To follow this guide, we recommend first learning the basics of writing a WordPress plugin: &lt;a href="https://codex.wordpress.org/Writing_a_Plugin" rel="noopener noreferrer"&gt;Plugin Handbook&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Prefixed Plugin?
&lt;/h2&gt;

&lt;p&gt;In the WordPress world, plugins are packages of code that extend the core functionality of WordPress. WordPress plugins are made up of PHP code and can include other assets such as images, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;By making your plugin, you are &lt;em&gt;extending&lt;/em&gt; WordPress. You are building additional functionality on top of what WordPress already offers. For example, you could write a plugin that displays links to your site's ten most recent posts.&lt;/p&gt;

&lt;p&gt;To include Composer dependencies and avoid naming conflicts with other plugins, &lt;strong&gt;PHP-Prefixer&lt;/strong&gt; provides the service that prefixes all PHP files with the custom prefix for the project.&lt;/p&gt;

&lt;p&gt;In this guide, we will create the &lt;strong&gt;Hello Prefixed World Plugin&lt;/strong&gt;, based on the &lt;a href="https://wordpress.org/plugins/hello-dolly/" rel="noopener noreferrer"&gt;Hello Dolly&lt;/a&gt; plugin. Hello Dolly, one of the first plugins is only 82 lines long. Hello Dolly shows lyrics from &lt;a href="http://en.wikipedia.org/wiki/Hello,_Dolly!_(song)" rel="noopener noreferrer"&gt;the famous song&lt;/a&gt; in the WordPress admin. Some CSS is used in the PHP file to control how the lyrics are styled.&lt;/p&gt;

&lt;p&gt;To integrate a Composer dependency, we install the Laravel &lt;a href="https://github.com/illuminate/support" rel="noopener noreferrer"&gt;illuminate/support&lt;/a&gt; library, and we use it to show a formatted date before the Hello Dolly lyrics.&lt;/p&gt;

&lt;p&gt;Essentially, this is how the modified &lt;strong&gt;Hello Dolly&lt;/strong&gt; plugin looks after the prefixing process with the new &lt;code&gt;PPP&lt;/code&gt; namespace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;hello_dolly&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;require_once&lt;/span&gt; &lt;span class="k"&gt;__DIR__&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/vendor/autoload.php'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;$chosen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;hello_prefixed_world_get_lyric&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$lang&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'en_'&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nb"&gt;substr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nf"&gt;get_user_locale&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$lang&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;' lang="en"'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// The Carbon library reference is prefixed with PPP&lt;/span&gt;
    &lt;span class="nv"&gt;$now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;\PPP\Carbon\Carbon&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$formattedDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$now&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;toDateTimeString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="nb"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s1"&gt;'&amp;lt;p id="dolly"&amp;gt;&amp;lt;span class="screen-reader-text"&amp;gt;%s &amp;lt;/span&amp;gt;&amp;lt;span dir="ltr"%s&amp;gt;%s // %s&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'Quote from Hello Dolly song, by Jerry Herman:'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'hello-dolly'&lt;/span&gt; &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nv"&gt;$lang&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;$formattedDate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;$chosen&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Plugin Basics
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;In this guide, we follow WordPress's &lt;a href="https://developer.wordpress.org/plugins/plugin-basics/" rel="noopener noreferrer"&gt;Plugin Handbook / Plugin Basics&lt;/a&gt; steps to create the plugin structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Composer Schema of the WordPress Plugin
&lt;/h3&gt;

&lt;p&gt;In this version of the Hello Dolly plugin, the plugin shows the date and hour before the lyrics. To do this, the plugin calls on the &lt;a href="https://carbon.nesbot.com/" rel="noopener noreferrer"&gt;Carbon&lt;/a&gt; library, a dependency of the Laravel &lt;a href="https://github.com/illuminate/support" rel="noopener noreferrer"&gt;illuminate/support&lt;/a&gt; library.&lt;/p&gt;

&lt;p&gt;The plugin has the following &lt;code&gt;composer.json&lt;/code&gt; to declare the project, the &lt;code&gt;illuminate/support&lt;/code&gt; library, and the prefixer service configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"php-prefixer/hello-prefixed-world-for-wp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello Prefixed World plugin for WordPress. A plugin to showcase the PHP-Prefixer service. Install any library freely. PHP-Prefixer will manage your namespaces."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"require"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"illuminate/support"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^8.10"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"extra"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"php-prefixer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"project-name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello Prefixed World for WordPress"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"namespaces-prefix"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PPP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"global-scope-prefix"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PPP_"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

            &lt;/span&gt;&lt;span class="nl"&gt;"exclude-paths"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"bin/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"doctrine/inflector/docs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"voku/portable-ascii/build"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In particular, this schema has the attribute &lt;code&gt;excludePaths&lt;/code&gt; to help package the plugin for distribution. The &lt;code&gt;excludePaths&lt;/code&gt; remove folders that should not be included in the target prefixed plugin (commands, unit tests, library documentation, etc.).&lt;/p&gt;

&lt;p&gt;The prefixed project ZIP file will be installed on WordPress once it is processed and available for download.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the PHP-Prefixer Project for the WordPress Plugin
&lt;/h2&gt;

&lt;p&gt;We support several ways of uploading and downloading the project's source code. Follow the steps below to set up a simple downloadable project that doesn’t require the integration of version control and source code management.​&lt;/p&gt;

&lt;p&gt;In this brief tutorial, we upload and download the plugin ZIPs manually.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating Projects
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;In the Dashboard, click "Projects."&lt;/li&gt;
&lt;li&gt;Click on "Create Project."&lt;/li&gt;
&lt;li&gt;Type in a name for your project.&lt;/li&gt;
&lt;li&gt;Select "Source Code Integration" from the dropdown menu.&lt;/li&gt;
&lt;li&gt;For this first guide, select the "File" integration to upload and download the project files manually.&lt;/li&gt;
&lt;li&gt;Click "Create Project."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_create-a-php-prefixer-project.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_create-a-php-prefixer-project.png" alt="Create Project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the Build to Prefix the WordPress Plugin
&lt;/h2&gt;

&lt;p&gt;PHP-Prefixer works based on &lt;a href="https://getcomposer.org/" rel="noopener noreferrer"&gt;Composer&lt;/a&gt; as the dependency management tool. It allows you to declare the libraries your project depends on and manages (install/update) them for you. For more information about Composer, please visit &lt;a href="https://getcomposer.org/" rel="noopener noreferrer"&gt;https://getcomposer.org/&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prefixing the "Hello Prefixed World Plugin" Project
&lt;/h3&gt;

&lt;p&gt;In this guide, we will prefix the project "Hello Prefixed World Plugin." We prefix it with our prefix &lt;code&gt;PPP&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  The "Hello Prefixed World Plugin" Project
&lt;/h4&gt;

&lt;p&gt;The modified version of the Hello Dolly plugin shows a formatted date before the lyrics &lt;code&gt;hello.php&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="cd"&gt;/**
 * @package Hello_Prefixed_World_For_Wp
 * @version 1.0.0
 */&lt;/span&gt;

&lt;span class="mf"&gt;....&lt;/span&gt;

&lt;span class="c1"&gt;// This just echoes the chosen line, we'll position it later.&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;hello_dolly&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;require_once&lt;/span&gt; &lt;span class="k"&gt;__DIR__&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'/vendor/autoload.php'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;$chosen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;hello_prefixed_world_get_lyric&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$lang&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'en_'&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nb"&gt;substr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nf"&gt;get_user_locale&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$lang&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;' lang="en"'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// The modified version of the Hello Dolly plugin shows a formatted date before the lyrics&lt;/span&gt;
    &lt;span class="nv"&gt;$now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;\Carbon\Carbon&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$formattedDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$now&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;toDateTimeString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="nb"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s1"&gt;'&amp;lt;p id="dolly"&amp;gt;&amp;lt;span class="screen-reader-text"&amp;gt;%s &amp;lt;/span&amp;gt;&amp;lt;span dir="ltr"%s&amp;gt;%s // %s&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nf"&gt;__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'Quote from Hello Dolly song, by Jerry Herman:'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'hello-dolly'&lt;/span&gt; &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nv"&gt;$lang&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;$formattedDate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;$chosen&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="mf"&gt;...&lt;/span&gt;

&lt;span class="nf"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'admin_head'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'dolly_css'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  The PHP-Prefixer Configuration
&lt;/h4&gt;

&lt;p&gt;In the &lt;code&gt;composer.json&lt;/code&gt; schema, in the &lt;code&gt;extra&lt;/code&gt; configuration, the PHP-Prefixer configuration is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nl"&gt;"extra"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"php-prefixer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"project-name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello Prefixed World for WordPress"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"namespaces-prefix"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PPP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"global-scope-prefix"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PPP_"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

            &lt;/span&gt;&lt;span class="nl"&gt;"exclude-paths"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"bin/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"doctrine/inflector/docs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"voku/portable-ascii/build"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The configuration declares the project name and the prefix &lt;code&gt;PPP&lt;/code&gt; used for namespaces and global objects (functions, etc.).&lt;/p&gt;

&lt;p&gt;In particular, this schema has the attribute &lt;code&gt;excludePaths&lt;/code&gt; to help package the plugin for distribution. The &lt;code&gt;excludePaths&lt;/code&gt; remove folders that should not be included in the target prefixed plugin (commands, unit tests, library documentation, etc.).&lt;/p&gt;

&lt;h3&gt;
  
  
  Verify Composer.json
&lt;/h3&gt;

&lt;p&gt;To review the project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the source code from the repository.&lt;/li&gt;
&lt;li&gt;Go to the project directory.&lt;/li&gt;
&lt;li&gt;Run the following command to verify the schema and lock the project's dependencies that would be distributed:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~&lt;span class="nv"&gt;$ &lt;/span&gt;composer update &lt;span class="nt"&gt;--no-dev&lt;/span&gt;
...
Writing lock file
Generating autoload files
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, compress the files in a new ZIP file or download the project's ZIP file from GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Build
&lt;/h2&gt;

&lt;p&gt;You can now set up a new build and prefix the project in the "Dashboard/ Projects" area. Follow the steps below to set up a build and prefix the project ZIP file.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to "Project."&lt;/li&gt;
&lt;li&gt;Click on "Create Build."&lt;/li&gt;
&lt;li&gt;Select the file to be prefixed.&lt;/li&gt;
&lt;li&gt;Upload and create the Build; click on "Create Build."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_create-the-build.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_create-the-build.png" alt="Create a Build"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Validating the Build
&lt;/h3&gt;

&lt;p&gt;Once the Build is created, the PHP-Prefixer service automatically validates the project and continues with the next steps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_validating-the-build.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_validating-the-build.png" alt="Validating the Build"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Prefixing the Build
&lt;/h3&gt;

&lt;p&gt;Once the Build is validated, the PHP-Prefixer service prefixes the files and notifies when processing is completed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_prefixing-the-build.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_prefixing-the-build.png" alt="Prefixing the Build"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Download and Review the Prefixed Codebase
&lt;/h2&gt;

&lt;p&gt;When the build is ready, check the processing results in the Build Details:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_build-details.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_build-details.png" alt="Build Details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download the Output File and uncompress it to review the final results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing the Prefixed WordPress Plugin
&lt;/h3&gt;

&lt;p&gt;Install it on your WordPress site to confirm it works in the same way as the original plugin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_testing-the-prefixed-plugin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fphp-prefixer.com%2Fdocs%2Fimages%2Fhow-to-prefix-wordpress-plugin%2Fhow-to-prefix-wordpress-plugin_testing-the-prefixed-plugin.png" alt="Testing the prefixed WordPress plugin"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next chapter, we will point out the main results of processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review the Prefixed PHP Project
&lt;/h2&gt;

&lt;p&gt;The results of the prefixing process of the project can be found in this repository: &lt;a href="https://github.com/PHP-Prefixer/hello-wp-world_prefixed" rel="noopener noreferrer"&gt;https://github.com/PHP-Prefixer/hello-wp-world_prefixed&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Composer.json of the Prefixed WordPress Plugin
&lt;/h3&gt;

&lt;p&gt;The PHP-Prefixed process has produced a new &lt;code&gt;composer.json&lt;/code&gt; schema and contains the original files, and files that are re-organized according to the applied &lt;code&gt;PPP&lt;/code&gt; prefix.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"php-prefixer/hello-prefixed-world-for-wp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello Prefixed World plugin for WordPress. A plugin to showcase the PHP-Prefixer service. Install any library freely. PHP-Prefixer will manage your namespaces."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"autoload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"classmap"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/Carbon.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/CarbonConverterInterface.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/CarbonImmutable.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/CarbonInterface.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/CarbonInterval.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/CarbonPeriod.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/CarbonTimeZone.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/Cli/Invoker.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/doctrine/inflector/lib/Doctrine/Inflector/Language.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/illuminate/contracts/Auth/Access/Gate.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/illuminate/contracts/Auth/Authenticatable.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/illuminate/contracts/Auth/CanResetPassword.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/illuminate/contracts/Auth/Factory.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/illuminate/contracts/Auth/Guard.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/psr/container/src/ContainerExceptionInterface.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/psr/container/src/ContainerInterface.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/psr/container/src/NotFoundExceptionInterface.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/psr/simple-cache/src/CacheException.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/psr/simple-cache/src/CacheInterface.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/psr/simple-cache/src/InvalidArgumentException.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/polyfill-php80/Resources/stubs/Stringable.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/translation/Catalogue/AbstractOperation.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/translation/Catalogue/MergeOperation.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/translation/Catalogue/OperationInterface.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/translation/Catalogue/TargetOperation.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/translation/Command/XliffLintCommand.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/polyfill-php80/Php80.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/polyfill-php80/Resources/stubs/ValueError.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/voku/portable-ascii/src/voku/helper/ASCII.php"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"files"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/polyfill-mbstring/bootstrap.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/symfony/polyfill-php80/bootstrap.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/illuminate/collections/helpers.php"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="s2"&gt;"vendor_prefixed/illuminate/support/helpers.php"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The files of the dependencies are stored in the &lt;code&gt;vendor_prefixed&lt;/code&gt; folder. &lt;code&gt;composer.json&lt;/code&gt; declares them in the &lt;code&gt;classmap&lt;/code&gt; and &lt;code&gt;files&lt;/code&gt; attributes to generate the autoloader.&lt;/p&gt;

&lt;p&gt;No conflicts will be found if other plugins were installed using the &lt;code&gt;Carbon&lt;/code&gt;, &lt;code&gt;Doctrine&lt;/code&gt;, &lt;code&gt;Illuminate&lt;/code&gt; or &lt;code&gt;Symfony&lt;/code&gt; namespaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Prefixed Plugin
&lt;/h3&gt;

&lt;p&gt;The project file &lt;code&gt;hello.php&lt;/code&gt; has been processed and the prefix &lt;code&gt;PPP&lt;/code&gt; added to the &lt;code&gt;Carbon&lt;/code&gt; dependency call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// The modified version of the Hello Dolly plugin shows a formatted date before the lyrics&lt;/span&gt;
&lt;span class="nv"&gt;$now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;\PPP\Carbon\Carbon&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$formattedDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$now&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;toDateTimeString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Prefixed Dependencies
&lt;/h3&gt;

&lt;p&gt;The original libraries installed in the &lt;code&gt;vendor&lt;/code&gt; folder have been prefixed and updated. These are a few examples:&lt;/p&gt;

&lt;h3&gt;
  
  
  The Prefixed Doctrine Inflector
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="cm"&gt;/* This file has been prefixed by &amp;lt;PHP-Prefixer&amp;gt; for "Hello Prefixed World for WordPress" */&lt;/span&gt;

&lt;span class="k"&gt;declare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strict_types&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;PPP\Doctrine\Inflector&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;RuntimeException&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;function_exists&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;lcfirst&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;mb_strtolower&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;ord&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;preg_match&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;preg_replace&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;sprintf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;str_replace&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;strtolower&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;strtr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;ucwords&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Inflector&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  The Prefixed Laravel Support Helpers
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* This file has been prefixed by &amp;lt;PHP-Prefixer&amp;gt; for "Hello Prefixed World for WordPress" */&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\Illuminate\Contracts\Support\DeferringDisplayableValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\Illuminate\Contracts\Support\Htmlable&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\Illuminate\Support\Arr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\Illuminate\Support\Env&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\Illuminate\Support\HigherOrderTapProxy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\Illuminate\Support\Optional&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;function_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'PPP_append_config'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * Assign high numeric IDs to a config item to force appending.
     *
     * @param  array  $array
     * @return array
     */&lt;/span&gt;
    &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;PPP_append_config&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$start&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9999&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$array&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;is_numeric&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nv"&gt;$start&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

                &lt;span class="nv"&gt;$array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$start&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arr&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;pull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$array&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$array&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="mf"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;function_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'PPP_env'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * Gets the value of an environment variable.
     *
     * @param  string  $key
     * @param  mixed  $default
     * @return mixed
     */&lt;/span&gt;
    &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;PPP_env&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Env&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="mf"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  The Prefixed Carbon Library
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="cm"&gt;/* This file has been prefixed by &amp;lt;PHP-Prefixer&amp;gt; for "Hello Prefixed World for WordPress" */&lt;/span&gt;

&lt;span class="cd"&gt;/**
 * This file is part of the Carbon package.
 *
...
 */&lt;/span&gt;
&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;PPP\Carbon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PPP\Carbon\Traits\Date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;DateTimeInterface&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;DateTimeZone&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="cd"&gt;/**
 * A simple API extension for DateTime.
 *
...
 */&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Carbon&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;CarbonInterface&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="cd"&gt;/**
     * Returns true if the current class/instance is mutable.
     *
     * @return bool
     */&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;isMutable&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  The Polyfills
&lt;/h4&gt;

&lt;p&gt;The polyfill libraries are excluded from processing by the prefixer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// vendor_prefixed/symfony/polyfill-php80/Resources/stubs/Stringable.php&lt;/span&gt;
&lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Stringable&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * @return string
     */&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;__toString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this guide, we presented a simple WordPress plugin &lt;strong&gt;Hello Prefixed World plugin&lt;/strong&gt; for WordPress.&lt;/p&gt;

&lt;p&gt;The plugin is based on the &lt;a href="https://wordpress.org/plugins/hello-dolly/" rel="noopener noreferrer"&gt;Hello Dolly&lt;/a&gt; plugin. To integrate a Composer dependency, we install the Laravel &lt;a href="https://github.com/illuminate/support" rel="noopener noreferrer"&gt;illuminate/support&lt;/a&gt; library and use it to show a formatted date before the Hello Dolly lyrics.&lt;/p&gt;

&lt;p&gt;In the guide, we introduced the original project, the prefixed project and the different prefixing cases. These have been successfully processed to produce a complete functional plugin, ready to be distributed and installed.&lt;/p&gt;

&lt;p&gt;The source code of the project can be found in this repository: &lt;a href="https://github.com/PHP-Prefixer/hello-wp-world" rel="noopener noreferrer"&gt;https://github.com/PHP-Prefixer/hello-wp-world&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The results of the prefixing process can be found in this repository: &lt;a href="https://github.com/PHP-Prefixer/hello-wp-world_prefixed" rel="noopener noreferrer"&gt;https://github.com/PHP-Prefixer/hello-wp-world_prefixed&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>php</category>
      <category>composer</category>
      <category>scope</category>
    </item>
  </channel>
</rss>
