variable valores una sacar retornan referencia que por pasar parametros otra funciones funcion php function variables parameters

valores - php optional parameters



Función PHP con variable como valor predeterminado para un parámetro (5)

Cacahuetes fáciles!
(Puede contener errores menores, errores o errores tipográficos)

Necesitas una función auxiliar, que te llamará a la función principal recursivamente, pero teniendo NULL como valor predeterminado:

Incorrecto: function actionOne($id=$_GET["ID"])

Derecha:

function actionOne($id) {...} function actionOnewithID($id=NULL) { if (NULL==$id){actionOne($_GET["ID"]);} else {actionOne($id); }

Y si necesita devolver un valor:

function actionOne($id) {...} function actionOnewithID($id=NULL) { if (NULL==$id){return(actionOne($_GET["ID"]));} else {return(actionOne($id)); }

¡Espero que esto ayude!

Por defecto, una función PHP usa $_GET variables. A veces, esta función debe $_GET en una situación en la que $_GET no está establecido. En este caso actionOne(234) las variables necesarias como un parámetro como: actionOne(234)

Para obtener un código abstracto intenté algo como esto:

function actionOne($id=$_GET["ID"])

que resulta en un error :

Error de análisis: error de sintaxis, inesperado T_VARIABLE

¿Es imposible definir un parámetro predeterminado utilizando una variable?

Editar

El actionOne se llama "directamente" desde una URL utilizando el marco Yii . Al manejar las variables $_GET fuera de esta función, tuve que hacer esto en un componente central (incluso si se trata de una función simple e insignificante) o tengo que cambiar el marco, lo que no me gusta hacer.

Otra forma de hacer esto podría ser una función ficticia (algo así como una pre-función), que es llamada por la URL. Esta función "ficticia" maneja el problema variable y llama a actionOne($id) .


Debería obtener esa identificación antes de llamar a la función. Comprobando la existencia del parámetro rompe la encapsulación. Deberías hacer algo como eso:

if (isset($_GET["ID"]) { $id = $_GET["ID"]; } else { //$id = something else } function doSomethingWithID($id) { //do something }


No, esto no es posible, como se indica en la página del manual de argumentos de la función :

El valor predeterminado debe ser una expresión constante, no (por ejemplo) una variable, un miembro de clase o una llamada a función.

En su lugar, puede simplemente pasar nulo como el predeterminado y actualizarlo dentro de su función ...

function actionOne($id=null) { $id = isset($id) ? $id : $_GET[''ID'']; .... }

... o (mejor aún), simplemente proporcione $ _GET [''ID''] como el valor del argumento cuando no tenga una identificación específica para pasar. (es decir: maneje esto fuera de la función).


Sí, es imposible.

El valor predeterminado tiene que ser una variable estática:

function actionOne( $id=''something'') { //code }


function actionOne( $id=null ) { if ($id === null) $id = $_GET[''ID'']; }

Pero, probablemente haría esto fuera de la función:

// This line would change, its just a for instance $id = $id ? $id : $_GET[''id'']; actionOne( $id );