PHP function missing argument error

Missing argument 3 ($type) for validate()

Always list optional arguments as the last arguments. Since PHP doesn't have named parameters nor "overloading ala Java", that's the only way:

function validate($data, $type, $data2 = 0) {
}

You should at least set the $type in this line:

function validate($data, $data2 = 0, $type)

at NULL or '' as you can see here:

function validate($data, $data2 = 0, $type = null)

PHP let you to set a value for the parameters, but you can't define a parameter WITHOUT a preset value AFTER parameter(s) which HAVE a preset value. So if you need to always specify the third param, you have to switch the second and the third like this:

function validate($data, $type, $data2 = 0)