My library for 2 dimensional shapes
The floating point scale factor could control both magnitude and direction without the need for your $direction parameter.  If you want to double the size the $scale = 2.0, if you want to halve it the $scale = 0.5

and this is just personal preference if you were to stick with your $direction parameter in your scaling functions.  Create a static class constant so you don't have to hardcode 'up' and 'down' all over the place.

&lt;?
    $circle = new Circle(5);
    $circle-&gt;scale(Circle::UP, 2);

    Class Cirlce {
        const UP = 'up';
        const DOWN = 'down';
    .
    .
    .
    }