 <p>Yes, performing method calls like this is perfectly fine. They're marked as <code>private</code> so they remain encapsulated within your class and unexposed to the outside world.</p> <p>If these method calls started to cause the class/object to deviate its main purpose, breaking <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" rel="nofollow">single responsibility principle</a>, then it would be worth looking at breaking the class into finer units and injecting this new dependency via <a href="http://stackoverflow.com/questions/130794/what-is-dependency-injection">dependency injection</a>. An example of this would be if the <code>checkBaz</code> method was performing a database look-up.</p> <p>In terms of unit testing, what you really want to do is <a href="http://stackoverflow.com/questions/383947/what-does-it-mean-to-program-to-an-interface">program to an interface not implementation</a> by creating an interface for your foo class and implementing it. This means whenever you program to it you're programming to a contract - allowing you to easily mock your <code>IFoo</code> implementation.</p> <p>eg:</p> <pre><code>class Foo implements IFoo { } </code></pre> <p>Your interface will look like this:</p> <pre><code>interface IFoo { public function setBaz($baz) public function setBar($bar) } </code></pre> <p>I would also recommend following the <a href="http://pear.php.net/manual/en/standards.php" rel="nofollow">PEAR coding standard</a> and make your class names uppercase first. Though if this is a decision made by you or your team then that's entirely your call.</p>