From a494f29d9a03655a307de2305f6d19b69d9336b7 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 27 Jan 2023 08:47:55 +0100 Subject: [PATCH] Fix PEAR with Composer Composer version 2 removed PEAR support. --- _posts/04-03-01-PEAR.md | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/_posts/04-03-01-PEAR.md b/_posts/04-03-01-PEAR.md index 443d94a..ca293dd 100644 --- a/_posts/04-03-01-PEAR.md +++ b/_posts/04-03-01-PEAR.md @@ -40,19 +40,28 @@ installing. See the [Using channel docs][4] for more information on this topic. ### Handling PEAR dependencies with Composer If you are already using [Composer][5] and you would like to install some PEAR code too, you can use Composer to -handle your PEAR dependencies. This example will install code from `pear2.php.net`: +handle your PEAR dependencies. PEAR repositories are no longer directly supported by Composer version 2, so you must manually add a repository to install PEAR packages: {% highlight json %} { "repositories": [ { - "type": "pear", - "url": "https://pear2.php.net" + "type": "package", + "package": { + "name": "pear2/pear2-http-request", + "version": "2.5.1", + "dist": { + "url": "https://github.com/pear2/HTTP_Request/archive/refs/heads/master.zip", + "type": "zip" + } + } } ], "require": { - "pear-pear2/PEAR2_Text_Markdown": "*", - "pear-pear2/PEAR2_HTTP_Request": "*" + "pear2/pear2-http-request": "*" + }, + "autoload": { + "psr-4": {"PEAR2\\HTTP\\": "vendor/pear2/pear2-http-request/src/HTTP/"} } } {% endhighlight %} @@ -60,7 +69,7 @@ handle your PEAR dependencies. This example will install code from `pear2.php.ne The first section `"repositories"` will be used to let Composer know it should "initialize" (or "discover" in PEAR terminology) the pear repo. Then the `require` section will prefix the package name like this: -> pear-channel/Package +> pear-channel/package The "pear" prefix is hardcoded to avoid any conflicts, as a pear channel could be the same as another packages vendor name for example, then the channel short name (or full URL) can be used to reference which channel the package is in. @@ -68,16 +77,20 @@ name for example, then the channel short name (or full URL) can be used to refer When this code is installed it will be available in your vendor directory and automatically available through the Composer autoloader: -> vendor/pear-pear2.php.net/PEAR2_HTTP_Request/pear2/HTTP/Request.php +> vendor/pear2/pear2-http-request/pear2/HTTP/Request.php To use this PEAR package simply reference it like so: {% highlight php %}