If you want optional parameters then either give them default values when you define the function, or leave them out of the signature when you define the function and pick them up with func_get_args(). The former is preferred for self-documentation purposes and you just certain parameters to be optional, the latter is for if you want to allow arbitrary numbers of parameters to be sent.
For more detail, see the manual.