[RFC]: Mark PhpDb\Sql abstract classes and interfaces @api or @internal
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 66/100
- issue の種類
- ドキュメント
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- php
調査の方向性
#204 のドキュブロック型付けを適用した後、mago analyze --ignore-baseline src/Sql を実行して 16 件の missing-api-or-internal の指摘を一覧化し、src/Sql 配下の各名前付きインターフェースおよび抽象クラスに @api ドキュブロックを追加する。提案 3 については、AbstractSql を特定し、その protected メソッドの呼び出し箇所を確認して、どれが @internal かを判断する。analyze の実行がゼロ件の指摘を報告し、baseline のエントリが削除されたら完了。
索引モデルが issue の本文から書いたものです。
説明
Proposed Version
Next minor
Basic Information
Mago reports 16 missing-api-or-internal findings in src/Sql, all baselined. Each one is an abstract class or interface without an @api or @internal annotation:
- Abstract classes:
AbstractSql,AbstractPreparableSql,AbstractExpression,Ddl\Column\{AbstractLengthColumn, AbstractPrecisionColumn, AbstractTimestampColumn},Ddl\Constraint\AbstractConstraint,Ddl\Index\AbstractIndex - Interfaces:
SqlInterface,PreparableSqlInterface,ExpressionInterface,ArgumentInterface,PredicateInterface,Platform\PlatformDecoratorInterface,Ddl\Column\ColumnInterface,Ddl\Constraint\ConstraintInterface
Background
These are the types the driver packages and applications build on: decorators extend the statement classes through AbstractSql and AbstractPreparableSql, and implement PlatformDecoratorInterface (see #175). Metadata marked its source classes @api.
Considerations
- The annotations are documentation only, with no runtime effect.
@apicommits to keeping a type's public and protected surface stable within a minor release.@internaltells consumers not to depend on it.
Proposal(s)
- Mark every interface above
@api. - Mark the abstract classes
@api, since drivers extend them. - Mark protected methods of
AbstractSqlthat only the library itself calls@internal, so they can change without a major release.
Appendix/Additional Info
Finding counts are from mago analyze --ignore-baseline src/Sql once the docblock typing in #204 is applied.
- 主要言語
- PHP
- スター
- 18
- フォーク
- 8
- 平均マージ
- 6日 11時間
- マージ済み PR(30日)
- 14
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
php-db/phpdb のほかの issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
RFC
難易度 5/5 1週間以上 初心者へのやさしさ 38/100
メンテナーはふだん 1 日以内に返信
-
RFC
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
RFC
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
メンテナーはふだん 1 日以内に返信
-
Sql's foreign-table guard raises TypeError when its table is a TableIdentifier or aliased array対応中かも @simon-mundy が 1 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 50/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
VilnaCRM-Org/user-service#525 ·
メンテナーはふだん 21 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
shukiv/jabali-panel#2029 ·
メンテナーはふだん 1 日以内に返信
-
area:pool-types good first issue priority:low type:bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
crazy-goat/php-fpm-ng#822 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 95/100
vigetlabs/mega-menu-block#30 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100