Fix PEAR with Composer

Composer version 2 removed PEAR support.
This commit is contained in:
Peter Kokot
2023-01-27 08:47:55 +01:00
parent 1bb13df2b9
commit a494f29d9a

View File

@@ -40,19 +40,28 @@ installing. See the [Using channel docs][4] for more information on this topic.
### Handling PEAR dependencies with Composer ### 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 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 %} {% highlight json %}
{ {
"repositories": [ "repositories": [
{ {
"type": "pear", "type": "package",
"url": "https://pear2.php.net" "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": { "require": {
"pear-pear2/PEAR2_Text_Markdown": "*", "pear2/pear2-http-request": "*"
"pear-pear2/PEAR2_HTTP_Request": "*" },
"autoload": {
"psr-4": {"PEAR2\\HTTP\\": "vendor/pear2/pear2-http-request/src/HTTP/"}
} }
} }
{% endhighlight %} {% 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 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: 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 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. 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 When this code is installed it will be available in your vendor directory and automatically available through the
Composer autoloader: 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: To use this PEAR package simply reference it like so:
{% highlight php %} {% highlight php %}
<?php <?php
$request = new pear2\HTTP\Request(); require __DIR__ . '/vendor/autoload.php';
use PEAR2\HTTP\Request;
$request = new Request();
{% endhighlight %} {% endhighlight %}
* [Learn more about using PEAR with Composer][6] * [Learn more about using repositories with Composer][6]
[1]: https://pear.php.net/ [1]: https://pear.php.net/
@@ -85,4 +98,4 @@ $request = new pear2\HTTP\Request();
[3]: https://pear.php.net/packages.php [3]: https://pear.php.net/packages.php
[4]: https://pear.php.net/manual/guide.users.commandline.channels.php [4]: https://pear.php.net/manual/guide.users.commandline.channels.php
[5]: /#composer_and_packagist [5]: /#composer_and_packagist
[6]: https://getcomposer.org/doc/05-repositories.md#pear [6]: https://getcomposer.org/doc/05-repositories.md