zanardigit / bookable
一个库,使其他对象可预订
dev-master
2018-02-19 08:35 UTC
Requires
- phpunit/phpunit: ^4.8@dev
- ramsey/uuid: ^3.0@dev
This package is auto-updated.
Last update: 2024-09-23 00:41:26 UTC
README
一个PHP库,使其他对象可预订。
描述
我的目标是提供一个独立的库,使任何其他对象可预订(即房间、剧院、汽车等)。我使用一种装饰器来包装原始对象,以提供额外功能,而无需在您的应用程序中重新实现所有预订相关概念。
状态
2015-06-04:这是alpha代码,除测试套件外从未在任何地方使用过,所以如果您正在寻找今天可以使用的代码,请继续。但您可以肯定地玩一玩它,或者如果您愿意自己实现持久性部分,甚至可以使用它。
设置
此软件包在Packagist上可用,因此您可以使用以下方式将其添加到composer文件中:
composer require zanardigit/bookable
然后您可以在您的类中添加以下内容
use Bookable
这样您就可以开始使用了。
用法
创建可预订对象
首先,我们假设您已经在代码中创建了一个对象。然后,您可以将它传递给Bookable构造函数,如下所示
$bookable = new Bookable($myObject);
预订对象
这将为您对象创建一个新的预订
$result = $bookable->book(\DateTimeImmutable $begin, \DateTimeImmutable $end)
您可以创建任意多的预订,只要它们不重叠。
获取预订
这将返回一个预订数组
$bookings = $bookable->getBookings();
删除预订
这将根据其uuid删除特定的预订
$result = $bookable->unbook(string $uuid)
这将根据开始和结束日期删除特定的预订
$result = $bookable->unbook(\DateTimeImmutable $begin, \DateTimeImmutable $end)
持久性
该库本身可能需要持久化一些数据。为了使其在框架/CMS中具有灵活性,我将实际持久化委托给一个“驱动程序”类,该类可以使用应用程序特定的帮助类/方法。
合作
我坚信开源合作,在非重新发明轮子的意义上。我在GitHub上搜索了类似的包,但为PHP我只找到了www.bookability.io的API客户端,这是一个在线的“预订即服务”解决方案,这可能很酷,但不是我所寻找的。您自由(实际上也鼓励)指出类似的解决方案,以便我们可以将编码努力分享给每个人。