Functions and methods should be named using the "studly caps" style (also referred to as "bumpy case" or "camel caps"). Functions should in addition have the package name as a prefix, to avoid name collisions between packages. The initial letter of the name (after the prefix) is lowercase, and each letter that starts a new "word" is capitalized. Some examples:
function connect() function getData() function buildSomeWidget() function XML_RPC_serializeData()
Private class members (meaning class members that are intended to be used only from within the same class in which they are declared; PHP does not yet support truly-enforceable private namespaces) are preceded by a single underscore. For example:
function _sort() function _initTree() $this->_status()
Note: The following applies to PHP5.
Protected class members (meaning class members that are intended to be used only from within the same class in which they are declared or from subclasses that extend it) are not preceded by a single underscore. For example:
protected $somevar protected function initTree()
Zend and Doctrine do have the protected/private underscore
"Protected class members (meaning class members that are intended to be used only from within the same class in which they are declared or from subclasses that extend it) are not preceded by a single underscore."
Zend and Doctrine pretty much do this the opposite way -- they're always preceded by a single underscore.
Then again, I'm not a fan of everything they've done....
Proper Function Type
In PHP 5 if you are going to use the underscore if you want PHP to enforce the private class make sure you declare it as private. If you do not declaring the type of the function it is automatically set to public. PHP 5 supports public, private, and protected and within a class you can call self and parent to access different functions.