Skip to content

refactor(smell-008): make properties private with getters/setters on reranker classes#148

Merged
s2x merged 4 commits into
mainfrom
feature/smell-008-encapsulation
May 30, 2026
Merged

refactor(smell-008): make properties private with getters/setters on reranker classes#148
s2x merged 4 commits into
mainfrom
feature/smell-008-encapsulation

Conversation

@s2x

@s2x s2x commented May 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Makes properties private with getters/setters on reranker data classes to improve encapsulation and follow PHP best practices.

Changes

  • ZVecRerankedDoc: all properties (, , , ) are now
    • Added getters: , , ,
  • ZVecRrfReRanker: and are now
    • Added / and / returning for fluent interface
  • ZVecWeightedReRanker: , , are now
    • Added getters/setters, throws (same validation as constructor)

Testing

  • Updated all call sites in tests and examples to use getter methods
  • Added — verifies private properties and getter/setter functionality
  • All 138 tests pass (1 skipped, 2 expected failures)

Breaking Change

Direct property access is no longer possible. Use getter methods:

Fixes #89

s2x added 4 commits May 30, 2026 13:39
…reranker classes

- ZVecRerankedDoc: all properties private, added getDoc(), getCombinedScore(), getSourceRanks(), getSourceScores()
- ZVecRrfReRanker: topn/rankConstant private with getters/setters returning self for fluent interface
- ZVecWeightedReRanker: topn/metricType/weights private with getters/setters, setWeights([]) validates
- Updated all call sites in tests and examples to use getter methods
- Added test_encapsulation.phpt verifying private properties and getter/setter functionality
- All 138 tests pass (1 skipped, 2 expected failures)

Fixes #89
…nkedDoc, ZVecRrfReRanker, ZVecWeightedReRanker

- ZVecRerankedDoc: added getDoc(), getCombinedScore(), getSourceRanks(), getSourceScores()
- ZVecRrfReRanker: added getTopn(), setTopn(), getRankConstant(), setRankConstant()
- ZVecWeightedReRanker: added getTopn(), setTopn(), getMetricType(), setMetricType(), getWeights(), setWeights()
- All setters return self for fluent interface
- Properties remain public for backward compatibility (native extension can't make them private)

Related to #89
Native extension uses public properties (C extension limitation),
so property privacy check only applies to FFI implementation.
@s2x s2x merged commit e3bc23e into main May 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SMELL-008: Public Properties on Data Classes Without Encapsulation

1 participant