2011-11-09 15 views
6

Mi función validar parece quefunción de PHP error argumento que falta

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

ejemplo llamada Función

if ($result = validate($lname, 'name') !== true) 
     response(0, $result, 'lname'); 

Como se ve, mi función de validación ha vars 3 de entrada. No estoy usando el segundo var - $ data2 a menudo, por eso lo configuro en 0 por defecto. Pero cuando estoy llamando esta función como ejemplo dado (por lo que sé que significa $ datos = $ lname, data2 $ = 0, $ type = 'nombre') que consigue el mensaje de error

Missing argument 3 ($type) for validate() 

¿Cómo puedo ¿Arregla eso?

+0

Llamada como 'validate ($ lname, 0, 'name')' – Rikesh

Respuesta

19

Falta el argumento 3 (tipo $) para validar()

Siempre liste los argumentos opcionales como los últimos argumentos. A partir de PHP no se han nombrado los parámetros ni la "sobrecarga ala de Java", que es la única manera:

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

Al menos debe establecer el tipo de $ en esta línea:

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

en NULL o '' como se puede ver aquí:

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

PHP le permite establecer un valor para los parámetros , pero no puede definir un parámetro SIN un valor preestablecido DESPUÉS de parámetro (s) que TIENEN a pr valor eset. Así que si es necesario especificar siempre el tercer parámetro, debe de cambiar el segundo y el tercero de esta manera:

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

Gracias por esto. – rapidoodle

0

De http://php.net/manual/en/functions.arguments.php

Tenga en cuenta que al utilizar argumentos por defecto, estos deben estar en el lado derecho de cualquier argumento no predeterminado; de lo contrario, las cosas no funcionarán como se espera

Debe cambiar los argumentos segundo y tercero de la función, haciendo que el argumento opcional sea el último. Entonces se vuelve:

function validate($data, $type, $data2 = 0) 
{ .... 
Cuestiones relacionadas