Parsely / Parsely/wp-parsely

Extract options functionality to a new class

Open
#2,620 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Maintenance & Fixes Refactoring wp-parsely
Dominant language
PHP
Stars
66
Forks
36
Avg merge
2d 2h
Merged PRs (30d)
16

Description

Is your feature request related to a problem?

Most if not all of our options core functionality is within the Parsely class, which is a kind of catch-all class that has been growing lately.

Describe the solution you'd like

Extract the options functionality to a dedicated Options (or similarly named) class. While we are at it, we can consider:

  • Making some functions static.
  • Replacing the options array with a typed object in the code. The object could still be saved as an array into the database. We currently use phpstan types for checking the correctness of this array, but this isn't without its shortcomings.

Even the simple scenario of just moving functionality outside of the Parsely class might need changes in many other places.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Parsely class and its options-related functionality, then trace the options array through its callers and database persistence. Review the existing phpstan types and identify the affected locations before deciding the scope. Done means the options responsibility is separated from Parsely without breaking current option storage or behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.