Резюме PHP: основи, поради та найкращі практики

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 29 липня, 2025
Досліджте, як використовувати бібліотеку PHP Résumé для створення структурованих резюме відповідно до специфікації JSON Résumé. Як ця бібліотека полегшує створення та валідацію резюме? Читайте статтю, щоб дізнатися більше

JSON Résumé — це специфікація, створена для структурування даних резюме. Використовуючи цю специфікацію, ви можете написати своє резюме в структурованому форматі та експортувати його в інші формати. Бібліотека PHP Résumé, розроблена Стівом МакДугалом, забезпечує типобезпечний спосіб створення та роботи з резюме, дотримуючись схеми JSON Résumé.

# Особливості

# Приклад специфікації JSON Résumé

{
  "basics": {
    "name": "Люк Скайуокер",
    "label": "Рицар-джедай",
    "image": "",
    "email": "luke.skywalker@rebellion.org",
    "phone": "(555) FORCE-1",
    "url": "https://jediarchives.org/luke-skywalker",
    "summary": "Фермер, який став Рицарем-джедаєм, відіграв ключову роль у перемозі над Галактичною Імперією. Досвідчений пілот, чутливий до Сили та лідер в Резистансі. Вірний відновленню миру й справедливості в галактиці.",
    "location": {
      "address": "Оселя Ларса",
      "postalCode": "N/A",
      "city": "Анкорхед",
      "countryCode": "N/A",
      "region": "Татуїн"
    },
    "profiles": [{
      "network": "HoloNet",
      "username": "farmboy_jedi",
      "url": "https://holonet.gov/luke-skywalker"
    }]
  },
  "work": [{
    "name": "Резистанс",
    "position": "Командир",
    "url": "https://rebellion.org",
    "startDate": "0000-05-25",
    "endDate": "0004-05-04",
    "summary": "Ключовий військовий лідер у боротьбі проти Галактичної Імперії, спеціалізується на операціях зі зірковими винищувачами та спеціальних місіях.",
    "highlights": [
      "Знищив першу зірку смерті",
      "Очолив Загін Опору",
      "Долучився до перемоги над імператором Палпатином"
    ]
  }],
  "education": [{
    "institution": "Академія навчання джедаїв на Дагобі",
    "url": "https://jediarchives.org/dagobah",
    "area": "Вивчення Сили та бою на світлових мечах",
    "studyType": "Навчання джедаїв",
    "startDate": "0003-01-01",
    "endDate": "0004-01-01",
    "score": "Рицар-джедай",
    "courses": [
      "Розвиток чутливості до Сили",
      "Форми бою на світлових мечах",
      "Філософія та етика джедаїв"
    ]
  }],
  "certificates": [{
    "name": "Сертифікація Рицаря-джедая",
    "date": "0004-05-04",
    "issuer": "Майстер Йода",
    "url": "https://jediarchives.org/certifications"
  }],
  "skills": [{
    "name": "Сили",
    "level": "Майстер",
    "keywords": [
      "Телепатія",
      "Ментальний трюк",
      "Передбачення",
      "Бій на світлових мечах"
    ]
  }],
  "references": [{
    "name": "Майстер Йода",
    "reference": "Сильний із Силою, молодий Скайуокер є. Терплячим і мудрим став. Справжній Рицар-джедай, баланс відновив. Гордий я ним."
  }]
}

Існують також ключі для представлення interests, publications, awards, volunteer, languages та projects. Перегляньте повний приклад схеми.

# Основний приклад використання PHP Résumé

Ви можете встановити пакет через Composer:

composer require juststeveking/resume-php

А щоб створити базове резюме, використовуйте:

use JustSteveKing\Resume\Builders\ResumeBuilder;
use JustSteveKing\Resume\DataObjects\Basics;
use JustSteveKing\Resume\DataObjects\Location;
use JustSteveKing\Resume\DataObjects\Profile;
use JustSteveKing\Resume\DataObjects\Work;
use JustSteveKing\Resume\Enums\Network;
 
// Створення секції основних даних
$basics = new Basics(
    name: 'Люк Скайуокер',
    label: 'Рицар-джедай',
    email: 'luke.skywalker@rebellion.org',
    url: 'https://jediarchives.org/luke-skywalker',
    summary: 'Фермер, який став Рицарем-джедаям, відіграв ключову роль у перемозі над Галактичною Імперією. Досвідчений пілот, чутливий до Сили та лідер в Резистансі. Вірний відновленню миру й справедливості в галактиці.',
    location: new Location(
        address: 'Оселя Ларса',
        postalCode: 'N/A',
        city: 'Анкорхед',
        countryCode: 'N/A',
        region: 'Татуїн',
    ),
    profiles: [
        new Profile(Network::GitHub, 'luke_skywalker', 'https://github.com/luke_skywalker'),
        new Profile(Network::LinkedIn, 'luke_skywalker', 'https://linkedin.com/in/luke_skywalker'),
    ],
);
 
// Створення резюме
$resume = (new ResumeBuilder())
    ->basics($basics)
    ->addWork(new Work(
        name: 'Резистанс',
        position: 'Командир',
        startDate: '0000-05-25',
        endDate: '0004-05-04',
        summary: 'Ключовий військовий лідер у боротьбі проти Галактичної Імперії, спеціалізується на операціях зі зірковими винищувачами та спеціальних місіях.',
        highlights: ['Знищив першу зірку смерті', 'Очолив Загін Опору', 'Долучився до перемоги над імператором Палпатином'],
    ))
    ->build();
 
// Конвертація у JSON
$json = json_encode($resume, JSON_PRETTY_PRINT);

Цей пакет також надає метод для перетворення вашого резюме в формат JSON-LD за допомогою методу toJsonLd(), що ідеально підходить для структурування даних, які легко сприймаються пошуковими системами та веб-сервісами. Також можна експортувати в Markdown за допомогою toMarkdown().

$resume->toJsonLd();
$resume->toMarkdown();

Також є JobDescriptionBuilder для створення структурованих описів вакансій відповідно до схеми опису професій JSON.

Дізнайтеся більше про цей пакет та перегляньте вихідний код на GitHub.