mirror of
https://github.com/codeguy/php-the-right-way.git
synced 2025-08-16 10:43:58 +02:00
102 lines
3.5 KiB
Markdown
102 lines
3.5 KiB
Markdown
---
|
|
title: PEAR
|
|
isChild: true
|
|
anchor: pear
|
|
---
|
|
|
|
## PEAR {#pear_title}
|
|
|
|
A veteran package manager that some PHP developers enjoy is [PEAR][1]. It behaves similarly to Composer,
|
|
but has some notable differences.
|
|
|
|
PEAR requires each package to have a specific structure, which means that the author of the package must prepare it for
|
|
usage with PEAR. Using a project which was not prepared to work with PEAR is not possible.
|
|
|
|
PEAR installs packages globally, which means after installing them once they are available to all projects on that
|
|
server. This can be good if many projects rely on the same package with the same version but might lead to problems if
|
|
version conflicts between two projects arise.
|
|
|
|
### How to install PEAR
|
|
|
|
You can install PEAR by downloading the `.phar` installer and executing it. The PEAR documentation has
|
|
detailed [install instructions][2] for every operating system.
|
|
|
|
If you are using Linux, you can also have a look at your distribution package manager. Debian and Ubuntu,
|
|
for example, have an apt `php-pear` package.
|
|
|
|
### How to install a package
|
|
|
|
If the package is listed on the [PEAR packages list][3], you can install it by specifying the official name:
|
|
|
|
{% highlight console %}
|
|
pear install foo
|
|
{% endhighlight %}
|
|
|
|
If the package is hosted on another channel, you need to `discover` the channel first and also specify it when
|
|
installing. See the [Using channel docs][4] for more information on this topic.
|
|
|
|
* [Learn about PEAR][1]
|
|
|
|
### 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. 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": "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": {
|
|
"pear2/pear2-http-request": "*"
|
|
},
|
|
"autoload": {
|
|
"psr-4": {"PEAR2\\HTTP\\": "vendor/pear2/pear2-http-request/src/HTTP/"}
|
|
}
|
|
}
|
|
{% endhighlight %}
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
When this code is installed it will be available in your vendor directory and automatically available through the
|
|
Composer autoloader:
|
|
|
|
> vendor/pear2/pear2-http-request/pear2/HTTP/Request.php
|
|
|
|
To use this PEAR package simply reference it like so:
|
|
|
|
{% highlight php %}
|
|
<?php
|
|
require __DIR__ . '/vendor/autoload.php';
|
|
|
|
use PEAR2\HTTP\Request;
|
|
|
|
$request = new Request();
|
|
{% endhighlight %}
|
|
|
|
* [Learn more about using repositories with Composer][6]
|
|
|
|
|
|
[1]: https://pear.php.net/
|
|
[2]: https://pear.php.net/manual/installation.getting.php
|
|
[3]: https://pear.php.net/packages.php
|
|
[4]: https://pear.php.net/manual/guide.users.commandline.channels.php
|
|
[5]: /#composer_and_packagist
|
|
[6]: https://getcomposer.org/doc/05-repositories.md
|