dreikern/phpstan-oxid
最新稳定版本:0.2.0
Composer 安装命令:
composer require dreikern/phpstan-oxid
包简介
PHPStan extension for OXID eShop
README 文档
README
This extension provides following features:
- OXID eShop uses class chaining in order to inject modules into their system. This class chain is built at runtime so PHPStan, as a static
code analyzer, isn't able to detect that. This extension reads your shop configuration (e.g.
var/configuration/shops/1.yaml) and builds this class chain when PHPStan is analyzing your code. Only activated modules are considered. This allows PHPStan to do its magic. - When using
oxNew()orRegistry::get()this extension dynamically changes the return type when PHPStan is analyzing your code, so it is aware of any changes your code adds to OXID eShop classes. - Stubs some OXID eShops classes to fix incorrect phpdoc comments in OXID eShop. Feel free to contribute more stubs when you encounter such mistakes. PHPStan Documentation
- Provide rules to detect usage of legacy class names (e.g.
oxdiscountinstead of\OxidEsales\Eshop\Application\Model\Discount) or classes without unified namespace (e.g.\OxidEsales\EshopCommunity\Application\Model\Voucherinstead of\OxidEsales\Eshop\Application\Model\Voucher).
Installation
To use this extension, require it in Composer:
composer require --dev dreikern/phpstan-oxid
If you also install phpstan/extension-installer then you're all set!
Manual installation
If you don't want to use phpstan/extension-installer, include extension.neon in your project's PHPStan config:
includes: - vendor/dreikern/phpstan-oxid/extension.neon
Configuration
If the path to your shops module configuration differs from var/configuration/shops/1.yaml , you can override the path in your phpstan.neon:
parameters: oxid: shopConfigurationPath: var/configuration/shops/1.yaml
If you need to analyze different subshops without changing your phpstan.neon you are able to set the path via environment variable:
PHPSTAN_OXID_CONFIG_PATH=path/to/config/1.yaml ./vendor/bin/phpstan analyze path/to/oxid/module
Rules
OxNewCalledWithEditionNamespaceRule
oxNew() call with edition namespace for class %s. Use %s instead.
oxNew(\OxidEsales\EshopCommunity\Application\Model\Voucher::class);
❌
oxNew(\OxidEsales\Eshop\Application\Model\Voucher::class);
✅
OxNewCalledWithLegacyClassNameRule
oxNew() call with legacy className %s. Use %s instead.
oxNew('oxdiscount');
❌
oxNew(\OxidEsales\Eshop\Application\Model\Discount::class);
✅
RegistryGetCalledWithEditionNamespaceRule
Registry::get() call with edition namespace for class %s. Use %s instead.
Registry::get(\OxidEsales\EshopCommunity\Application\Model\Voucher::class);
❌
Registry::get(\OxidEsales\Eshop\Application\Model\Discount::class);
✅
RegistryGetCalledWithLegacyClassNameRule
Registry::get() call with legacy className %s. Use %s instead.
Registry::get('oxdiscount');
❌
Registry::get(\OxidEsales\Eshop\Application\Model\Voucher::class);
✅
Credits
This PHPStan extensions is heavily inspired by phpstan-doctrine
统计信息
- 总下载量: 6.02k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-08-25