karacweb / vcard
Generate vcards fluently.
0.0.5
2026-06-15 13:43 UTC
Requires
- php: ^8.2
- illuminate/collections: ^10.0|^11.0|^12.0|^13.0
- sabre/vobject: ^4.5
Requires (Dev)
- laravel/pint: ^1.22
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
This PHP packages allows you to create VCards files .vcf. This package uses
the Sabre VObject library.
Installation
You can install the package via composer:
composer require karacweb/vcard
Usage
use Karacweb\VCard\VCard; $vcard = new VCard(); // The common name is mandatory $vcard->setCommonName('John Smith'); $vcard->setFamilyNames('Smith'); $vcard->setFamilyNames(['Ferreira', 'Dos Santos', 'Silva']); // Accepts also an array $vcard->setGivenNames('Nelson'); $vcard->setGivenNames(['Nelson', 'Francis']); // Accepts also an array $vcard->setAdditionalNames('Francesco'); $vcard->setAdditionalNames(['Francesco', 'Luis']); // Accepts also an array $vcard->setHonorificPrefixes('Mrs'); $vcard->setHonorificPrefixes(['Mr', 'President']); // Accepts also an array $vcard->setHonorificSuffixes('Ph.D.'); $vcard->setHonorificSuffixes(['Ph.D.', 'M.D.']); // Accepts also an array $vcard->setBirthday('1992-12-24'); // Y-m-d $vcard->addOrg('ACME Inc.'); $vcard->addTitle('Software Engineer'); $vcard->addRole('Project Leader'); $vcard->addTel('+1-418-262-6501', true, ['CELL']); $vcard->addTel('+1-418-656-9254', true, ['HOME']); $vcard->addEmail('john.smith@acme.org'); $vcard->addUrl('https://karac.ch'); $vcard->addAdr('PO BOX 123', 'Extended address', '123, Acme Str', 'Acme City', 'Acme Region', 'ZIP 12345', 'Switzerland'); // With named arguments $vcard->addAdr(street: '123, Acme Str', locality: 'Acme City', region: 'Acme Region', postalCode: 'ZIP 12345'); // Build the VCard $vcard->serialize(); // Download the VCard in pure PHP header('Content-Type: text/x-vcard; charset=utf-8'); header('Content-Disposition: attachment; filename=my-vcard.vcf'); echo $vcard->serialize(); return; // Alternative with Laravel return response()->make($vcard->serialize()) ->header('Content-Type', 'text/x-vcard; charset=utf-8') ->header('Content-Disposition', 'attachment; filename=my-vcard.vcf');
In case you need to access the underlying Sabre VCard Object, use the following method:
use Karacweb\VCard\VCard; $vcard = new VCard(); [...] $sabreVCard = $vcard->getVCard();