背景
#6933 / #6937 で、仕様(挙動・CSV等の出力・画面・スキーマ)を変えずに削除できる未使用の @deprecated public API は撤去済み。
本 Issue は、撤去すると仕様が変わる/利用実態が不明なため #6937 で据え置いた残りの @deprecated を棚卸しし、それぞれ「撤去 / 移行設計 / 恒久維持」を裁定するためのもの。
前提として判明している事実:
残存する @deprecated(#6937 適用後)
| グループ |
シンボル |
由来 |
現役の依存 |
想定される扱い |
| 税額系 |
Order::getTax() / setTax() / $tax、ItemHolderInterface::setTax()、Cart::setTax() |
PR #3900「add-deprecated」(2018-10) |
受注CSV「税金」列(dtb_csv.csv)・PurchaseFlow.php の税額集計・dtb_order.tax カラム |
「明細から算出」への移行設計が必要。7年間未実現。片手間撤去は不可 |
| 値引き |
Order::getDiscount() / $discount |
08153d0e82「Order::getDiscountをdeprecatedに変更」(2019-08) |
受注CSV「値引き」列・dtb_order.discount カラム。代替 getTaxableDiscount() は別値 |
税額系と同様に移行設計が必要 |
| php_path |
BaseInfo::getPhpPath() / setPhpPath() / $php_path |
de1c4028a1「php_pathは使用していないためdeprecatedに修正」(2019-10) |
AuthenticationType の php_path フォーム項目(描画テンプレートなし)・base_info.php_path カラム |
フォーム項目除去+カラム削除マイグレーションで撤去可能(要マイグレーション) |
| 保守停止 |
ComposerProcessService(クラス) |
f7ed93dc4f「Add @deprecated」(2019-12) Not maintained |
app/config/eccube/services.yaml にサービス登録あり |
利用実態の調査 → 撤去可否判断 |
| デッド断片 |
DeliveryController.php:109 の // @deprecated 使用されていないコード |
— |
遷移元チェックの fallback 分岐 |
到達性を確認し、真にデッドなら整理 |
やること
- 上記各グループについて、由来 PR/コミットと現役依存を確認のうえ「撤去 / 移行設計(別Issue化)/ 恒久維持」を裁定する。
- 撤去可能なもの(現状
php_path が最有力)は、仕様影響(フォーム・スキーマ)を明記して別 PR で撤去(要マイグレーション)。
- 税額系・値引きは、CSV 出力仕様と
dtb_order カラムを保ったまま「明細集計へ移行」できるかの設計 Issue を別途起票(CSV 列の算出方法・後方互換・履歴データの扱いを含む)。
ComposerProcessService は利用実態を調査し、未使用なら撤去、使用中なら @deprecated の妥当性を再評価。
補足(再発防止の提案・任意)
「なぜ deprecated か分からない」を将来なくすため、@deprecated には「理由・代替 API・撤去目標バージョン」を必ず書く規約を CONTRIBUTING.md に追加することを別途検討したい(素の @deprecated を禁止)。
関連: #6933 / #6937
背景
#6933 / #6937 で、仕様(挙動・CSV等の出力・画面・スキーマ)を変えずに削除できる未使用の
@deprecatedpublic API は撤去済み。本 Issue は、撤去すると仕様が変わる/利用実態が不明なため #6937 で据え置いた残りの
@deprecatedを棚卸しし、それぞれ「撤去 / 移行設計 / 恒久維持」を裁定するためのもの。前提として判明している事実:
@deprecatedの方針を明文化したドキュメントは存在しない(CONTRIBUTING.md等になし)。撤去タイミングを強制する仕組みもない。@deprecated(PHPDoc)は実行時にE_USER_DEPRECATEDを発火しないため、max[direct]=0ゲート(improvement: deprecation ゲート有効化+未使用の非推奨 public API 削除 (#6933) #6937)では捕捉されない。撤去は個別の設計判断が要る。残存する
@deprecated(#6937 適用後)Order::getTax()/setTax()/$tax、ItemHolderInterface::setTax()、Cart::setTax()dtb_csv.csv)・PurchaseFlow.phpの税額集計・dtb_order.taxカラムOrder::getDiscount()/$discount08153d0e82「Order::getDiscountをdeprecatedに変更」(2019-08)dtb_order.discountカラム。代替getTaxableDiscount()は別値BaseInfo::getPhpPath()/setPhpPath()/$php_pathde1c4028a1「php_pathは使用していないためdeprecatedに修正」(2019-10)AuthenticationTypeのphp_pathフォーム項目(描画テンプレートなし)・base_info.php_pathカラムComposerProcessService(クラス)f7ed93dc4f「Add @deprecated」(2019-12)Not maintainedapp/config/eccube/services.yamlにサービス登録ありDeliveryController.php:109の// @deprecated 使用されていないコードやること
php_pathが最有力)は、仕様影響(フォーム・スキーマ)を明記して別 PR で撤去(要マイグレーション)。dtb_orderカラムを保ったまま「明細集計へ移行」できるかの設計 Issue を別途起票(CSV 列の算出方法・後方互換・履歴データの扱いを含む)。ComposerProcessServiceは利用実態を調査し、未使用なら撤去、使用中なら@deprecatedの妥当性を再評価。補足(再発防止の提案・任意)
「なぜ deprecated か分からない」を将来なくすため、
@deprecatedには「理由・代替 API・撤去目標バージョン」を必ず書く規約をCONTRIBUTING.mdに追加することを別途検討したい(素の@deprecatedを禁止)。関連: #6933 / #6937