bradietilley/carbon-zodiac

一个占星术碳包

v2.0.0 2024-02-10 05:34 UTC

This package is auto-updated.

Last update: 2024-09-11 14:47:25 UTC


README

一个简单的包,提供将日期转换为星座和元素的接口。

安装

composer require bradietilley/carbon-zodiac

限制

目前,仅支持1648年至2644年之间的日期。如果您想使用此包处理该范围之外的日期,请提交一个拉取请求,包括您请求更新的NewYears::THRESHOLDS常量,并请注明您的来源。

用法

您可以使用Carbon宏、使用BradieTilley\Zodiac\Zodiac类,或者直接使用每个类/枚举。以下是一些示例

使用Carbon宏

Laravel会自动启动Carbon宏,但如果您需要在非Laravel项目中手动启动它,这非常简单

\BradieTilley\Zodiac\Zodiac::boot();

启动后,或在Laravel应用程序中,您可以使用Carbon宏获取所需的数据

use Carbon\Carbon;
use BradieTilley\Zodiac\Zodiac;
use BradieTilley\Zodiac\Sign;
use BradieTilley\Zodiac\Element;

/** Set up some dummy dates */
$date1 = Carbon::parse('1970-02-05');
$date2 = Carbon::parse('1970-02-06');

/** Convert a date to a zodiac year */
$date1->zodiacYear(); // 1969
$date2->zodiacYear(); // 1970

/** Convert a date to a zodiac sign */
$date1->zodiacSign(); // Sign::ROOSTER
$date2->zodiacSign(); // Sign::DOG

/** Convert a date to a zodiac element */
$date1->zodiacElement(); // Element::EARTH
$date2->zodiacElement(); // Element::METAL

使用Zodiac助手

或者您可能不想使用Carbon宏,这可以通过Zodiac助手实现

use Carbon\Carbon;
use BradieTilley\Zodiac\Zodiac;
use BradieTilley\Zodiac\Sign;
use BradieTilley\Zodiac\Element;

/** Set up some dummy dates */
$date1 = Carbon::parse('1970-02-05');
$date2 = Carbon::parse('1970-02-06');

/** Convert a date to a zodiac year */
Zodiac::yearFromDate($date1); // Year<1969>
Zodiac::yearFromDate($date2); // Year<1970>

/** Convert a date to a zodiac sign */
Zodiac::signFromDate($date1); // Sign::ROOSTER
Zodiac::signFromDate($date2); // Sign::DOG

/** Convert a date to a zodiac element */
Zodiac::elementFromDate($date1); // Element::EARTH
Zodiac::elementFromDate($date2); // Element::METAL

目前,仅支持Carbon实例。未来的版本可能会将其扩展到任何DateTimeInterface

直接使用类

use Carbon\Carbon;
use BradieTilley\Zodiac\Zodiac;
use BradieTilley\Zodiac\Sign;
use BradieTilley\Zodiac\Element;

/** Set up some dummy dates */
$date1 = Carbon::parse('1970-02-05');
$date2 = Carbon::parse('1970-02-06');

/** Convert a date to a zodiac year */
Year::fromDate($date1); // Year<1969>
Year::fromDate($date2); // Year<1970>

/** Convert a date to a zodiac sign */
Sign::fromDate($date1); // Sign::ROOSTER
Sign::fromDate($date2); // Sign::DOG

/** Convert a date to a zodiac element */
Element::fromDate($date1); // Element::EARTH
Element::fromDate($date2); // Element::METAL

扩展用法

给定一个星座Sign枚举实例,然后可以通过一些辅助方法找到该星座的更多详细信息

$rooster = Sign::fromDate(Carbon::parse('1970-02-05')):
$dog = Sign::fromDate(Carbon::parse('1970-02-06')):

$rooster->yinYang();      // Yin
$rooster->direction();    // West
$rooster->season();       // Mid-Autumn
$rooster->fixedElement(); // Metal
$rooster->trine();        // 2

$dog->yinYang();          // Yang
$dog->direction();        // West
$dog->season();           // Late Autumn
$dog->fixedElement();     // Earth
$dog->trine();            // 3

Year

Year类是一个包装整数年份(例如2024)的DTO,包括帮助方法来遍历年份、获取相关的SignElement以及确定年份的开始/结束日期。

示例用法

$year = Year::fromDate(Carbon::parse('2024-02-10'));
$year = Year::fromYear(2024); // same as above

$year->prev(); // Year<2023>
$year->next(); // Year<2025>

$year->sign(); // Sign::DRAGON
$year->element(); // Element::WOOD

json_encode($year->toArray());
/**
 * {
 *     "year": 2024,
 *     "start": "2024-02-10",
 *     "end": "2025-01-28"
 * }
 */

Sign枚举

Sign枚举是一个包含12个星座的PHP枚举对象,可以通过from*方法等方法解决,其他方法在其他文档中也有说明。

示例用法

$sign = Sign::fromDate(Carbon::parse('2024-02-10'));
$sign = Sign::fromYear(2024); // same as above

$sign; // Sign::DRAGON

$sign->value; // dragon
$sign->label(); // Dragon

json_encode($sign->toArray());
/**
 * {
 *     "value": "dragon",
 *     "label": "Dragon",
 *     "data": {
 *         "yin_yang": "Yang",
 *         "direction": "East",
 *         "season": "Late Spring",
 *         "fixed_element": {
 *             "value": "earth",
 *             "label": "Earth"
 *         },
 *         "trine": 1
 *     }
 * }
 */

Element枚举

Element枚举是一个包含5个元素的PHP枚举对象,可以通过from*方法等方法解决,其他方法在其他文档中也有说明。

示例用法

$element = Element::fromDate(Carbon::parse('2024-02-10'));
$element = Element::fromYear(2024); // same as above

$element; // Element::WOOD

$element->value; // wood
$element->label(); // Wood

json_encode($element->toArray());
/**
 * {
 *     "value": "wood",
 *     "label": "Wood",
 * }
 */

其他用法

可能还有更多功能或与这些对象交互的方式,所以请随意查看代码以查看可能的内容。

问题和注意事项

这里没有保证任何东西都是完美的,但它到目前为止已经正确处理了我尝试的所有日期。如果您发现任何问题,请请在GitHub上创建一个问题。

作者

源代码

农历新年阈值

NewYears类中,我已注明来源。向他们和他们的来源表示衷心的感谢。

元素和星座周期

来自各种在线来源,以确保星座和元素的循环正确。目前没有为此提供来源。

元素额外信息

这指的是元素的季节、方向、固定元素、三合等。这些数据来自... 维基百科。请带着怀疑的态度接受它,但据我所知,它是“正确的”🤷

许可证

MIT... 或者是“使用它并享受乐趣,无需担心任何事情”的许可证。

如果您使用它并且愿意分享您的项目名称/URL,请随时在PR中提及它,并在下面或其他地方添加它。

使用情况

  • 还没有。lol。