定制 myparcelnl/pdk 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

myparcelnl/pdk

Composer 安装命令:

composer require myparcelnl/pdk

包简介

MyParcel Plugin Development Kit

README 文档

README

Latest version Packagist Downloads Code coverage PHPStan License Chat with us

The MyParcel PDK (Plugin Development Kit) is meant for developing entire plugins on PHP E-Commerce platforms. If you're just looking to connect to our API without creating an entire plugin, you should check out our php SDK.

Requirements

  • PHP 7.4 – 8.5
  • Composer

Documentation

For examples, guides and in-depth information, visit our Plugin Development Kit (PDK) documentation.

Support

Create an issue or contact us via our Developer Portal contact page.

Contributing

View our contribution guidelines for information on how to contribute to the PDK.

Prerequisites

  • Node 18
  • Yarn
  • Docker

Installation

Create .env:

cp .env.template .env

Install Yarn dependencies:

yarn

Install Composer dependencies:

docker compose up php

Running tests

Run all tests:

docker compose run php composer test

Testing on a specific PHP version

The default PHP version is 7.4. To test on a different version, change PHP_VERSION in .env and rebuild:

docker compose build
docker compose run php composer test

Adding a shipment option

Shipment options are managed through the OrderOptionDefinitionInterface system. Each option is a single Definition class that declares all its keys (shipment, capabilities, carrier settings, product settings, allow, price). All models, views, and services build their attributes and form elements dynamically from these definitions.

To add a new option:

  1. Create a Definition class in src/App/Options/Definition/ extending AbstractOrderOptionDefinition. Only two methods are required:
    • getShipmentOptionsKey() — the PDK-internal key, derived from Str::camel(RefShipmentShipmentOptions::attributeMap()['sdk_key'])
    • getCapabilitiesOptionsKey() — the V2 capabilities key, from RefCapabilitiesContractDefinitionsResponseOptionsOptionsV2::attributeMap()['capabilities_key']
  2. Register it in the orderOptionDefinitions array in config/pdk-business-logic.php.
  3. Optionally, add a deprecated constant to ShipmentOptions if platform integrations reference the key directly.

Everything else (carrier settings, product settings, allow/price toggles, validation, frontend form fields, API export/import) is derived automatically. Run yarn test:unit to verify the consistency tests pass.

If the option is not yet in the SDK types, update the SDK or regenerate the OpenAPI types first.

Using Claude Code? Run /add-shipment-option for a guided step-by-step walkthrough that asks the right questions and generates the code.

Writing a migration

Migrations are tracked by identity in an applied_migrations setting and run exactly once per install, independent of the plugin version. There are two kinds:

  • Timestamped migrations (preferred) — a file named YYYY_MM_DD_HHMMSS_<slug>.php in a plugin's src/Migration/ that returns an anonymous class extending AbstractTimestampedMigration. The PDK auto-discovers them and runs each once regardless of version, so they fire even on release-candidate builds where version comparison is unreliable.
  • Versioned migrations — classes implementing UpgradeMigrationInterface with a getVersion(). Deprecated: prefer a timestamped migration for new work.

To scaffold a timestamped migration, run this from a plugin checkout with the PDK dev-linked (pdk-dev-on):

composer console generate:migration <slug>

It creates src/Migration/YYYY_MM_DD_HHMMSS_<slug>.php with empty up()/down() methods — implement up(); down() is optional and defaults to a no-op. Run composer console help generate:migration for the available options.

Linting

We use Prettier to format .json, .yml, .md and .html files.

Make sure Prettier is enabled in your IDE and runs on the following files:

{**/*,*}.{md,html,yml,json}

Set up Git hooks to run Prettier on each commit, correcting any formatting issues.

yarn prepare

You can also run Prettier manually:

# Check formatting issues
yarn lint

# Fix formatting issues
yarn lint:fix

myparcelnl/pdk 适用场景与选型建议

myparcelnl/pdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 14.86k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 03 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 myparcelnl/pdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 myparcelnl/pdk 我们能提供哪些服务?
定制开发 / 二次开发

基于 myparcelnl/pdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 14.86k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-03-25