hpsweb / gravatar
一个提供轻松 Gravatar 集成的库。
Requires
- php: ^8.0
README
Gravatar
Gravatar 是一个小型库,旨在提供简单的集成... Gravatar :) 它将以多种方式帮助您生成 Gravatar 图片和资料的 URL。
在 Laravel 项目 中使用它,请参阅: laravel-gravatar
$avatar = gravatar('email@example.com') ->size(120) ->defaultImage('robohash') ->extension('jpg'); //... echo $avatar;
索引
安装
需求
- PHP 8.0.0 或更高版本
如果您想使用低于 PHP 8 的版本,请使用 版本 2。
使用 Composer
安装 Gravatar 最简单的方法是通过 Composer。在您的项目根目录中运行以下命令
composer require hpsweb/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 中找到许可证的完整副本。