forxer / gravatar
提供简单 Gravatar 集成的库。
Requires
- php: ^8.2
Requires (Dev)
- laravel/pint: ^1.16.0
- rector/rector: ^1.1.0
README
Gravatar
Gravatar 是一个小型库,旨在提供简单的 Gravatar 集成... Gravatar :) 它将以多种方式帮助您生成 Gravatar 图片和资料的 URL。
要在 Laravel 项目 中使用它,请参阅: laravel-gravatar
$avatar = gravatar('email@example.com') ->size(120) ->defaultImage('robohash') ->extension('jpg'); //... echo $avatar;
索引
安装
需求
- PHP 8.2 或更高版本
如果您想使用低于 PHP 8.2 的版本,请使用适合您需求的先前版本之一: v4,v3,v2 或 v1。
使用 Composer
安装 Gravatar 最简单的方法是通过 Composer。在项目根目录中运行以下命令
composer require forxer/Gravatar
不使用 Composer
您应该使用 composer,它非常方便。然而,如果您真的不想或不能,您可以通过 下载最新版本 并解压缩存档。
然后,您需要根据您自己的自动加载器进行设置。以下示例使用 Composer 自动加载器。
用法
使用此库有多种方法
- 使用辅助函数
- 使用带有
Gravatar::image()
和Gravatar::profile()
方法的 Gravatar 基类 - 实例化专用类
Gravatar\Image()
和Gravatar\Profile()
所有这些方法都返回 Gravatar\Image
和 Gravatar\Profile
的实例,允许您根据需要定义特定的设置/参数。
无论您使用哪种方法,都可以使用 url()
方法来获取它。或者直接显示 URL,因为它们实现了 __toString()
方法。
使用辅助函数
使用此库最简单的方法是使用辅助函数。
从版本 4 开始,为了避免与其他包冲突,我们不再定义 gravatar()
和 gravatar_profile()
辅助函数。您可以根据自己的需要和名称来定义这些辅助函数,以确保它们不会与其他包冲突。以下是实现方法;很简单。
在一个专门用于辅助函数的文件中,使用适合您的名称定义版本 3 的函数。
<?php use Gravatar\Image; use Gravatar\Profile; if (! function_exists('gravatar')) { /** * Return a new Gravatar Image instance. * * @param string|null $email * @return Image */ function gravatar(?string $email = null): Image { return new Image($email); } } if (! function_exists('gravatar_profile')) { /** * Return a new Gravatar Profile instance. * * @param string|null $email * @return Profile */ function gravatar_profile(?string $email = null): Profile { return new Profile($email); } }
如果您没有辅助函数文件,您可以在项目根目录中创建一个,例如命名为 helpers.php
,并将其添加到 composer.json
文件中,以便自动加载。例如
"autoload" : { "psr-4" : { "YourProject\\" : "src" }, "files" : [ "src/helpers.php" ] },
这样您就可以像这样使用它们
<?php require 'vendor/autoload.php'; // Get a Gravatar image instance: $image = gravatar('email@example.com'); // return: Gravatar\Image // Get a Gravatar image URL: $imageUrl = gravatar('email@example.com')->url(); // return: //www.gravatar.com/avatar/5658ffccee7f0ebfda2b226238b1eb6e // Show a Gravatar image URL: echo gravatar('email@example.com'); // output: //www.gravatar.com/avatar/5658ffccee7f0ebfda2b226238b1eb6e // Get a Gravatar profile instance: $profile = gravatar_profile('email@example.com'); // return: Gravatar\Profile // Get a Gravatar profile URL: echo gravatar_profile('email@example.com'); // output: https//www.gravatar.com/5658ffccee7f0ebfda2b226238b1eb6e
使用 Gravatar 基类
但是,也可以使用基 Gravatar 类的静态方法。
单个 Gravatar 图片/资料
如果您想检索单个Gravatar图像/个人资料URL,可以使用主Gravatar类,如下所示:
<?php require 'vendor/autoload.php'; use Gravatar\Gravatar; // Get a Gravatar image instance: $image = Gravatar::image('email@example.com'); // return: Gravatar\Image // Get a single Gravatar image URL: $imageUrl = Gravatar::image('email@example.com')->url(); // return: //www.gravatar.com/avatar/5658ffccee7f0ebfda2b226238b1eb6e // Show a single Gravatar image URL: echo Gravatar::image('email@example.com'); // output: //www.gravatar.com/avatar/5658ffccee7f0ebfda2b226238b1eb6e // Get a Gravatar profile instance: $profile = Gravatar::profile('email@example.com'); // return Gravatar\Profile // Get a Gravatar profile URL: echo Gravatar::profile('email@example.com'); // output: https//www.gravatar.com/5658ffccee7f0ebfda2b226238b1eb6e
多个 Gravatar 图片/资料
如果您想检索多个Gravatar图像/个人资料URL,也可以使用主Gravatar类,通过Gravatar::images()
和Gravatar::profiles()
方法。
请注意方法名称末尾的"s"字符。
<?php require 'vendor/autoload.php'; use Gravatar\Gravatar; $emails = ['email1@example.com', 'email2@example.com','email3@example.com', /* ... */ ]; // Get multiples Gravatar images: foreach (Gravatar::images($emails) as $image) { echo $image; } // Get multiples Gravatar profiles: foreach (Gravatar::profiles($emails) as $profile) { echo $profile; }
Gravatar::images()
和Gravatar::profiles()
方法返回一个包含Gravatar\Image
和Gravatar\Profile
实例的数组。
实例化专用类
实际上,无论是gravatar()
和gravatar_profile()
辅助函数,还是Gravatar::image()
、Gravatar::images()
、Gravatar::profile()
和Gravatar::profiles()
静态方法,都只是为了方便使用而设置的快捷方式。
在这些辅助函数和静态方法背后,有两个类:Gravatar\Image
和Gravatar\Profile
。
在某些情况下,出于某种原因,您可能需要以另一种方式使用库。例如,使用依赖注入容器。
<?php require 'vendor/autoload.php'; use Gravatar\Image as GravatarImage; use Gravatar\Profile as GravatarProfile; // emails list $emails = ['email1@example.com', 'email2@example.com','email3@example.com', /* ... */ ]; // Get multiples Gravatar images with size and default image: $gravatarImage = new GravatarImage(); $gravatarImage ->setSize(120) ->setDefaultImage('mp'); foreach ($emails as $email) { echo $gravatarImage->email($email)->url(); } // Get multiples Gravatar profiles in JSON $gravatarProfile = new GravatarProfile(); $gravatarProfile->setFormat('json'); foreach ($emails as $email) { echo $gravatarProfile->email($email)->url(); }
必选参数
显然,电子邮件地址是一个必填参数,可以以不同方式输入。
// pass it as argument of the helper $gravatarImage = gravatar($email); // the first argument of `Gravatar::image()` and `Gravatar::images()` $gravatarImage = Gravatar::image($email); $gravatarImages = Gravatar::images($emails); // or pass it to the `Gravatar\Image` constructor $gravatarImage = new Gravatar\Image($email); // or use the `setEmail()` method of a `Gravatar\Image` instance $gravatarImage = gravatar(); $gravatarImage->setEmail($email); $gravatarImage = new Gravatar\Image(); $gravatarImage->setEmail($email); // or the `email()` helper method of a `Gravatar\Image` instance $gravatarImage = gravatar(); $gravatarImage->email($email); $gravatarImage = new Gravatar\Image(); $gravatarImage->email($email);
这些之前的示例也适用于个人资料。
// pass it as argument of the helper $gravatarProfile = gravatar_profile($email); // the first argument of `Gravatar::profile()` and `Gravatar::profiles()` $gravatarProfile = Gravatar::profile($email); $gravatarProfiles = Gravatar::profiles($emails); // or pass it to the `Gravatar\Profile` constructor $gravatarProfile = new Gravatar\Profile($email); // or use the `setEmail()` method of a `Gravatar\Profile` instance $gravatarProfile = gravatar_profile(); $gravatarProfile->setEmail($email); $gravatarProfile = new Gravatar\Profile(); $gravatarProfile->setEmail($email); // or the `email()` helper method of a `Gravatar\Profile` instance $gravatarProfile = gravatar_profile(); $gravatarProfile->email($email); $gravatarProfile = new Gravatar\Profile(); $gravatarProfile->email($email);
可选参数
Gravatar 图片大小
默认情况下,如果未提供大小参数,图像将以80px x 80px的大小显示。您可以请求特定大小的图像,该图像将从Gravatar动态提供。您可以请求1px到2048px之间的任何大小的图像,但是请注意,许多用户的图像分辨率较低,因此请求更大的尺寸可能会导致像素化/低质量图像。
头像大小应该是一个表示像素大小的整数。
// pass the size as second argument of `Gravatar::image()` and `Gravatar::images()` $gravatarImage = Gravatar::image($email, 120); $gravatarImages = Gravatar::images($emails, 120); // or use the `setSize()` method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->setSize(120); $gravatarImage = new Gravatar\Image($email); $gravatarImage->setSize(120); // or the `size()` helper method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->size(120); $gravatarImage = new Gravatar\Image($email); $gravatarImage->size(120); // or its alias `s()` (as in the generated query string) $gravatarImage = new Gravatar\Image($email); $gravatarImage->s(120);
如果您想检索当前设置的头像大小,可以使用以下方法之一:
// call the `getSize()` method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->getSize(); $gravatarImage = new Gravatar\Image(); $gravatarImage->getSize(); // or the `size()` helper method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->size(); $gravatarImage = new Gravatar\Image(); $gravatarImage->size(); // or its alias `s()` $gravatarImage = gravatar(); $gravatarImage->s(); $gravatarImage = new Gravatar\Image(); $gravatarImage->s();
默认 Gravatar 图片
当电子邮件地址没有匹配的Gravatar图像或指定的Gravatar超出您允许的最大内容评级时会发生什么?
默认情况下,这是:
如果您希望使用自己的默认图像,则可以轻松地这样做,只需提供图像的URL。除了允许您使用自己的图像外,Gravatar还有许多内置选项,您也可以用作默认值。其中大部分是通过使用请求的电子邮件哈希来生成一个独特于该电子邮件地址的主题图像。要使用这些选项,只需传递以下关键字之一:
- 404:如果没有与电子邮件哈希关联的任何图像,则不加载任何图像,而是返回HTTP 404(文件未找到)响应
- mp:(神秘人)一个简单的、卡通风格的轮廓人像(不随电子邮件哈希而变化)
- identicon:基于电子邮件哈希的几何图案
- monsterid:具有不同颜色、面孔等的“怪物”
- wavatar:具有不同特征和背景的生成面孔
- retro:惊人的生成,8位街机风格像素化面孔
- robohash:具有不同颜色、面孔等的生成机器人
- blank:一个透明的PNG图像
// pass the default Gravatar image as third argument of `Gravatar::image()` and `Gravatar::images()` $gravatarImage = Gravatar::image($email, null, 'mp'); $gravatarImages = Gravatar::images($emails, null, 'mp'); // or with named parameters $gravatarImage = Gravatar::image($email, defaultImage: 'mp'); $gravatarImages = Gravatar::images($emails, defaultImage: 'mp'); // or use the `setDefaultImage()` method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->setDefaultImage('mp'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->setDefaultImage('mp'); // or the `defaultImage()` helper method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->defaultImage('mp'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->defaultImage('mp'); // or its alias `d()` (as in the generated query string) $gravatarImage = new Gravatar\Image($email); $gravatarImage->d('mp');
如果您想检索当前设置的默认头像图像,可以使用以下方法之一:
// call the `getDefaultImage()` method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->getDefaultImage(); $gravatarImage = new Gravatar\Image(); $gravatarImage->getDefaultImage(); // or the `defaultImage()` helper method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->defaultImage(); $gravatarImage = new Gravatar\Image(); $gravatarImage->defaultImage(); // or its alias `d()` $gravatarImage = gravatar(); $gravatarImage->d(); $gravatarImage = new Gravatar\Image(); $gravatarImage->d();
Gravatar 图片最高评级
Gravatar允许用户对自己的图像进行自我评级,以便他们可以指示图像是否适合特定受众。默认情况下,仅显示评级为"g"的图像,除非您表示希望查看更高评级。
您可以指定以下评级之一,以请求最高包括该评级在内的图像:
- g:适用于所有类型受众的所有网站。
- pg:可能包含粗俗的手势、穿着挑逗的人、轻微的脏话或轻微的暴力。
- r:可能包含粗俗的脏话、强烈的暴力、裸露或硬毒品使用。
- x:可能包含色情图像或极端令人不安的暴力。
// pass the Gravatar image max rating as fourth argument of `Gravatar::image()` and `Gravatar::images()` $gravatarImage = Gravatar::image($email, null, null, 'g'); $gravatarImages = Gravatar::images($emails, null, null, 'g'); // or with named parameters $gravatarImage = Gravatar::image($email, rating: 'g'); $gravatarImages = Gravatar::images($emails, rating: 'g'); // or use the `setMaxRating()` method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->setMaxRating('g'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->setMaxRating('g'); // or the `maxRating()` helper method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->maxRating('g'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->maxRating('g'); // or its alias `r()` (as in the generated query string) $gravatarImage = gravatar($email); $gravatarImage->r('g'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->r('g');
如果您想检索当前设置的头像最大评级,可以使用以下方法之一:
// call the `getMaxRating()` method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->getMaxRating(); $gravatarImage = new Gravatar\Image(); $gravatarImage->getMaxRating(); // or the `maxrating()` helper method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->maxrating(); $gravatarImage = new Gravatar\Image(); $gravatarImage->maxrating(); // or its alias `r()` $gravatarImage = gravatar(); $gravatarImage->r(); $gravatarImage = new Gravatar\Image(); $gravatarImage->r();
Gravatar 图片文件类型扩展名
如果您需要文件类型扩展名(某些地方需要),则也可以指定它。
您可以为生成的URL指定以下扩展名:
- 'jpg'
- 'jpeg'
- 'gif'
- 'png'
- 'webp'
// pass the Gravatar image file-type extension as fifth argument of `Gravatar::image()` and `Gravatar::images()` Gravatar::image($email, null, null, null, 'jpg'); Gravatar::images($emails, null, null, null, 'jpg'); // or with named parameters $gravatarImage = Gravatar::image($email, extension: 'jpg'); $gravatarImages = Gravatar::images($emails, extension: 'jpg'); // or use the `setExtension()` method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->setExtension('jpg'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->setExtension('jpg'); // or the `extension()` helper method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->extension('jpg'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->extension('jpg'); // or its alias `e()` (as in the generated query string) $gravatarImage = gravatar($email); $gravatarImage->e('jpg'); $gravatarImage = new Gravatar\Image($email); $gravatarImage->e('jpg');
如果您想检索当前设置的头像文件类型扩展名,可以使用以下方法之一
// call the `getExtension()` method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->getExtension(); $gravatarImage = new Gravatar\Image(); $gravatarImage->getExtension(); // or the `extension()` helper method of a `Gravatar\Image` instance without argument $gravatarImage = gravatar(); $gravatarImage->getExtension(); $gravatarImage = new Gravatar\Image(); $gravatarImage->extension(); // or its alias `e()` $gravatarImage = gravatar(); $gravatarImage->getExtension(); $gravatarImage = new Gravatar\Image(); $gravatarImage->e();
强制始终使用默认图片
如果出于某种原因您想强制默认图像始终加载,您可以这样做
// to force to always use the default image, set the sixth argument of `Gravatar::image()` and `Gravatar::images()` to `true` Gravatar::image($email, null, null, null, null, true); Gravatar::images($emails, null, null, null, null, true); // or with named parameters $gravatarImage = Gravatar::image($email, forceDefault: true); $gravatarImages = Gravatar::images($emails, forceDefault: true); // or use the `setForceDefault()` method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->setForceDefault(true); $gravatarImage = new Gravatar\Image($email); $gravatarImage->setForceDefault(true); // or the `forceDefault()` helper method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->forceDefault(true); $gravatarImage = new Gravatar\Image($email); $gravatarImage->forceDefault(true); // or its alias `f()` (as in the generated query string) $gravatarImage = gravatar($email); $gravatarImage->f(true); $gravatarImage = new Gravatar\Image($email); $gravatarImage->f(true); // or use the `enableForceDefault()` method of a `Gravatar\Image` instance $gravatarImage = gravatar($email); $gravatarImage->setForceDefault(true); $gravatarImage = new Gravatar\Image($email); $gravatarImage->enableForceDefault();
要检查是否正在强制默认图像,请调用Gravatar\Image
的forcingDefault()
方法,该方法将返回一个布尔值,表示是否启用了强制默认
$gravatarImage = gravatar(); $gravatarImage->enableForceDefault(); //... $gravatarImage->forcingDefault(); // true //... $gravatarImage->disableForceDefault(); //... $gravatarImage->forcingDefault(); // false
Gravatar 资料格式
Gravatar个人资料数据可能以不同的数据格式请求,以便更简单的程序访问。
// pass the Gravatar profile format as second argument of `Gravatar::profile()` and `Gravatar::profiles()` Gravatar::profile($email, 'json'); // or use the `setFormat()` method of `Gravatar\Profile` instance $gravatarProfile = new Gravatar\Profile($email); $gravatarProfile->setFormat('json'); // or the `format()` helper method of a `Gravatar\Profile` instance $gravatarProfile = new Gravatar\Profile($email); $gravatarProfile->format('json'); // or its alias `f()` (as in the generated query string) $gravatarProfile = new Gravatar\Profile($email); $gravatarProfile->f('json');
以下格式受到支持
- JSON ; 使用 'json' 作为参数
- XML ; 使用 'xml' 作为参数
- PHP ; 使用 'php' 作为参数
- VCF/vCard ; 使用 'vcf' 作为参数
- 二维码 ; 使用 'qr' 作为参数
许可证
此库根据MIT许可证授权;您可以在文件 /LICENSE 中找到许可证的完整副本