PHPackages                             commandstring/blood - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. commandstring/blood

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

commandstring/blood
===================

A package for handling blood types

v2.1.1(3y ago)012MITPHPPHP &gt;=8.1

Since May 17Pushed 3y ago1 watchersCompare

[ Source](https://github.com/CommandString/BloodTypes)[ Packagist](https://packagist.org/packages/commandstring/blood)[ RSS](/packages/commandstring-blood/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (2)Versions (5)Used By (0)

BloodTypes
==========

[](#bloodtypes)

A composer package for bloodtypes (website is in the [gui](https://github.com/CommandString/BloodTypes/tree/gui/) branch)

Installation
============

[](#installation)

`composer require commandstring/blood`

Usage
=====

[](#usage)

Creating Blood
--------------

[](#creating-blood)

You can either create a blood object with **proteins**, **antibodies**, or **type**

```
use CommandString\Blood\Blood;
use CommandString\Blood\Enums\BloodType;
use CommandString\Blood\Enums\Protein;

$bloodFromType       = new Blood(BloodType::A_POSITIVE);
$bloodFromProteins   = Blood::fromProteins(Protein::A, Protein::RH);
$bloodFromAntibodies = Blood::fromAntibodies(Antibody::B, Antibody::RH);
```

Checking compatibility between blood types
------------------------------------------

[](#checking-compatibility-between-blood-types)

```
use CommandString\Blood\Blood;
use CommandString\Blood\Enums\BloodType;
use CommandString\Blood\Enums\Protein;

$bloodType1 = new Blood(BloodType::A_POSITIVE);
$bloodType2 = new Blood(BloodType::O_NEGATIVE);

$bloodType1->canDonateTo($bloodType2); // false
$bloodType1->canReceiveFrom($bloodType2); // true
$bloodType2->canDonateTo($bloodType1); // true
$bloodType2->canReceiveFrom($bloodType1); // false
```

Getting Proteins and Antibodies
-------------------------------

[](#getting-proteins-and-antibodies)

```
use CommandString\Blood\Enums\Protein;

/**
 * @var \CommandString\Blood\Blood $bloodType1
 * @var Protein[] $proteins
 * @var Protein[] $antibodies
 */
$proteins = $bloodType1->getProteins();
$antibodies = $bloodType1->getAntibodies();
```

Getting Type
------------

[](#getting-type)

```
use CommandString\Blood\Enums\BloodType;

/**
 * @var \CommandString\Blood\Blood $bloodType1
 * @var BloodType $type
 */
$type = $bloodType1->getType();
$type = $bloodType1->type;
```

---

Example Script
==============

[](#example-script)

```
