<p>An instance of class A instantiates a couple of other objects, say for example from class B:</p>

<pre><code>$foo = new B();
</code></pre>

<p>I would like to access A's public class variables from methods within B.</p>

<p>Unless I'm missing something, the only way to do this is to pass the current object to the  instances of B:</p>

<pre><code>$foo = new B($this);
</code></pre>

<p>Is this best practice or is there another way to do this?</p>

I would first check if you are not using the wrong pattern: From your application logic, should B really know about A? If B needs to know about A, a parent-child relationship seems not quite adequate. For example, A could be the child, or part of A's logic could go into a third object that is "below" B in the hierarchy (i. e. doesn't know about B).
That said, I would suggest you have a method in B to register A as a data source, or create a method in A to register B as an
Observer
and a matching method in B that A uses to notify B of value changes.