Is it bad practice to construct a child class with a parent object?
I have a search class that I am using to fetch results from two different sources and combine them together.  The Search class is the parent and has two children A and B which extend Search.

In the Search class, I have a method called fetch() which instantiates the two child objects to get their results.  It looks something like this:

    public function fetch(){
      $a = new A($this);
      $a_results = $a->fetch();
    
      $b = new B($this);
      $b_results = $b->fetch();
    
      // code to combine the results here
    }

The constructor of class A and B both look like this:

    class A extends Search
    {
        public function __construct(Search $search){
          parent::__construct($search->category, $search->offset, $search->keywords...);
        }

It feels like I'm doing something wrong in that I'm passing a parent object to a child and then creating another parent object with the exact same data.  Is there a better way to set this up?

I have it set this way because some parts of my application need to access class A and B directly, rather than through the parent Search class.
Is it bad practice to construct a child class with a parent object?
===

I have a search class that I am using to fetch results from two different sources and combine them together.  The Search class is the parent and has two children A and B which extend Search.

In the Search class, I have a method called fetch() which instantiates the two child objects to get their results.  It looks something like this:

    public function fetch(){
      $a = new A($this);
      $a_results = $a->fetch();
    
      $b = new B($this);
      $b_results = $b->fetch();
    
      // code to combine the results here
    }

The constructor of class A and B both look like this:

    class A extends Search
    {
        public function __construct(Search $search){
          parent::__construct($search->category, $search->offset, $search->keywords...);
        }

It feels like I'm doing something wrong in that I'm passing a parent object to a child and then creating another parent object with the exact same data.  Is there a better way to set this up?

I have it set this way because some parts of my application need to access class A and B directly, rather than through the parent Search class.