Diferencia entre revisiones de «PHP Funcións para xerar código. Constantes e variables»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página blanqueada)
 
(No se muestran 11 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
−
== Funcións para xerar código ==
 
  
−
* <u>'''NOTA:'''</u> '''Esta sección está asociada á realización do EXERCICIO 1.'''
 
−
<br/>
 
−
 
−
* Como comentamos anteriormente, normalmente imos ter código PHP dentro de código HTML. A execución do código PHP dará como resultado un código HTML que se integrará có resto do código.
 
−
 
−
* Para que PHP 'envío' cadeas que serán interpretadas polo navegador do cliente necesitamos utilizar as seguintes funcións.
 
−
 
−
=== Función echo ===
 
−
 
−
* Sintaxe: '''echo "Cadea a amosar";'''
 
−
* Enlaces de interese: [http://php.net/manual/es/language.types.string.php Cadea de caracteres].
 
−
 
−
* O resultado de poñer esta liña será unha cadea que será visualizada polo navegador do cliente que fixo a petición.
 
−
 
−
* Exemplos:
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
−
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
−
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 
−
    <head>
 
−
        <meta charset="utf-8" />
 
−
        <title>Exemplos de códigos php</title>
 
−
    </head>
 
−
    <body>
 
−
<?php
 
−
    echo "Unha cadea";
 
−
    echo "<br />";
 
−
    echo "Outra cadea";
 
−
   
 
−
    echo "Podemos poñer todo xunto. <br /> Non temos por que usar echos diferentes...<br/>";
 
−
   
 
−
    echo "Neste caso " . "concatenamos dúas cadeas.<br/>";
 
−
    echo 'Outra' ,' forma ', 'de concatenar....';
 
−
   
 
−
    echo "<h5> Podemos poñer calqueira código HTML que será visualizado polo navegador</h5>"
 
−
    . "<h3>Asegurarse que se cumpre o estándar correspondente !!!";
 
−
 
−
?>
 
−
    </body>   
 
−
</html>
 
−
</syntaxhighlight>
 
−
 
−
 
−
* Cando necesitemos poñer o carácter " dentro dun echo, temos varias opcións:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php       
 
−
        echo "Esta cadea \" está entrecomillada\" dentro dun echo...<br/>";
 
−
        echo 'Outra forma "de entrecomillar" sería utilizando as comillas \'\'';
 
−
?>       
 
−
</syntaxhighlight>
 
−
 
−
: Como vemos o carácter escape é o carácter '\'.
 
−
: Hai unha diferenza entre utilizar as comillas simples ou as dobres. O veremos claramente cando vexamos as variables. De todas formas un exemplo:
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php       
 
−
        echo 'Isto non se expandirá: \n unha nova liña';
 
−
        echo "Isto se expandirá: \n unha nova liña";
 
−
?>       
 
−
</syntaxhighlight>
 
−
 
−
=== Función print ===
 
−
 
−
* Ten o mesmo efecto que a función echo pero...
 
−
 
−
:* print imprime unha cadea; echo pode imprimir máis dunha separadas por coma.
 
−
:* print devolve un valor int que sempre ten valor 1 e polo tanto pode ser empregado dentro dunha expresión.
 
−
:* echo pode ser un pouco máis rápido que print.
 
−
 
−
: Exemplos de código:
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php       
 
−
        print "Esto é unha cadea impresa con print...";
 
−
?>       
 
−
</syntaxhighlight>
 
−
 
−
=== Función printf ===
 
−
 
−
* Tamén produce unha saída pero permite establecer un formato dentro da cadea que amosa.
 
−
* Máis información: http://php.net/manual/es/function.sprintf.php
 
−
 
−
* Por defecto, se printf non leva argumentos produce a mesma saída que echo e print.
 
−
: Así, por exemplo:
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php       
 
−
        printf ("Esto é unha cadea impresa con printf...");
 
−
?>       
 
−
</syntaxhighlight>
 
−
 
−
* A principal vantaxe é que podemos engadir parámetros que será substituídos na cadea cun determinado formato.
 
−
: Por exemplo:
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php       
 
−
    printf ("Isto é un número decimal %d<br/>",3.14);
 
−
    printf ("Isto é un número flotante %f<br/>",3.14);
 
−
    printf ("Isto é unha cadea %s</br>",3.14);
 
−
   
 
−
?>       
 
−
</syntaxhighlight>
 
−
 
−
: Tamén está moi ben cando temos varias variables e non queremos estar concatenando una detrás doutra, ou que estean en metade da cadea....
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php       
 
−
 
−
    printf("Esta '%s' terá varios parámetros coma este número: %d","cadea",10000);
 
−
       
 
−
?>       
 
−
</syntaxhighlight>
 
−
 
−
 
−
=== Función sprintf ===
 
−
 
−
* Ten a mesma sintaxe que a función printf, pero coa diferenza que o resultado vai ser gardado nunha variable (veremos as variables no seguinte punto).
 
−
: Por exemplo:
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php       
 
−
    $resultado = sprintf("Esta '%s' terá varios parámetros coma este número: %d","cadea",10000);
 
−
    echo $resultado;
 
−
?>       
 
−
</syntaxhighlight>
 
−
 
−
== Constantes ==
 
−
 
−
* As constantes son valores que normalmente se definen ao comezo do código e cuxo valor non varía ao longo do programa.
 
−
 
−
* Soen identificar por medio de '''letras maiúsculas'''.
 
−
 
−
* Os nomes das constantes poden empezar cunha letra ou guión baixo pero <u>non poden empezar cun número</u>.
 
−
 
−
* '''Distingue maiúsculas de minúsculas''' no seu nome.
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php 
 
−
 
−
    define('MEUNOME','Angel Fernández');
 
−
    echo "<p>Aquí poño o menu " . MEUNOME;
 
−
 
 
−
?>       
 
−
        <p> Outro párrafo....</p>
 
−
<?php
 
−
    printf("Ola. Sigo sendo %s. Poido seguir referenciando a constante ao longo de toda a páxina.",MEUNOME);
 
−
?>
 
−
</syntaxhighlight>
 
−
 
−
== Variables ==
 
−
 
−
* <u>'''NOTA:'''</u> '''Esta sección está asociada á realización do EXERCICIO 2.'''
 
−
<br/>
 
−
 
−
* A diferenza das constantes, as variables poden cambiar o seu valor ao longo do programa.
 
−
 
−
* <u>Non é necesario definilas nin declaralas</u>.
 
−
* Distinguen maiúsculas de minúsculas no seu nome. '$var' é unha variable e '$Var' é outra variable diferente.
 
−
* A primeira letra do nome dunha variable debe ser un guión baixa ou unha letra. <u>Non pode ser un número</u>.
 
−
* Identifícanse por medio do símbolo $.
 
−
 
−
<u>Nota:</u> A pesares de que non é obrigatorio declaralas, eu aconsello establecer un valor ao comenzo da páxina e comentar o seu propósito, xa que pode suceder que utilicemos unha variable e despois cambiemos algunha letra da mesma, pasando a manexar outra variable diferente. Desta forma podemos ter una referencia ao nome da variable.
 
−
 
−
: Exemplo de código:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php 
 
−
    $varCadea="Isto é un variable de cadea";
 
−
    $varNumero=50;
 
−
 
−
    echo $varCadea . "<br />";
 
−
    echo $varNumero . "<br />";
 
−
 
−
?>
 
−
</syntaxhighlight>
 
−
 
−
* PHP é unha linguaxe debilmente tipada. Quero isto dicir que as variables non se definen de ningún tipo, se non que o tipo vai depender do contido da variable.
 
−
: Así, por exemplo, vou asinar a mesma variable diferentes tipos de datos e funcionará igualmente.
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php 
 
−
 
−
    $varTipos=5;
 
−
    echo $varTipos . "<br />";
 
−
    $varTipos='Cadea';
 
−
    echo $varTipos . "<br />";
 
−
    $varTipos=3.15454;
 
−
    echo $varTipos . "<br />";
 
−
    $varTipos=true;
 
−
    echo $varTipos . "<br />";
 
−
?>
 
−
</syntaxhighlight>
 
−
 
−
 
−
* Dependendo do contido que teñan, as variables poden ser dun destes tipos escalares:
 
−
:* integer: Os integers, ou enteiros, poden ter distintos valores numéricos enteiros que se expresan con diferentes notacións.
 
−
 
−
::*$variable = 18; // Número entero positivo
 
−
::*$variable = -18; // Número entero negativo
 
−
::*$variable = 0x12; // Notación hexadecimal, en principio no la utilizaremos
 
−
 
−
:* float ou double: Este tipo de datos son os números de punto flotante aos que normalmente chamamos números decimais, por exemplo, 9.876. Ambos teñen moita precisión, pero double é o máis preciso (con máis decimais). A sintaxe para utilizalos é bastante simple:
 
−
::*$variable = 9.876;
 
−
 
−
:* string: O tipo de datos string, tamén coñecido como cadea de caracteres, exprésase coa seguinte sintaxe:
 
−
 
−
::* $variable = "Isto é unha cadea";
 
−
 
−
:* boolean: Trátase dun tipo lóxico. Os seus posibles valores son true (verdadeiro) ou false (falso).
 
−
 
−
::* $variable = true;
 
−
::* $variable = false;
 
−
 
−
 
−
 
−
 
−
: Existen máis tipos como podemos ver no seguinte enlace: http://php.net/manual/es/language.types.intro.php
 
−
 
−
 
−
=== Variables dentro das funcións que xeran código ===
 
−
 
−
* Anteriormente contamos que había unha diferenza entre utilizar comillas dobres ou simples na función echo.
 
−
: Vexamos agora esta diferenza no uso de variables.
 
−
 
−
* Se usamos unha variable dentro da función echo:
 
−
:* Con comillas dobres, a variable será substituída polo seu valor. Se expande.
 
−
:* Con comillas simples, xerará a cadea $variable.
 
−
 
−
: Por exemplo:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
<?php 
 
−
    $var = "Isto é unha variable de cadea";
 
−
   
 
−
    echo "A variable var con \" vale: $var<br/>";
 
−
    echo 'A variable var con \' vale: $var<br />';
 
−
?>
 
−
 
−
</syntaxhighlight>
 
−
 
−
: Dará como resultado:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
A variable var con " vale: Isto é unha variable de cadea
 
−
A variable var con ' vale: $var
 
−
</syntaxhighlight>
 
−
 
−
=== Funcións ===
 
−
 
−
* PHP ten unha multitude de funcións para facernos a vida máis sinxela á hora de programar.
 
−
 
−
* Aconsello antes de 'programar' algo cos valores das variables (tipo dividir unha frase en palabras, quitar espazo en branco, redondeo, número máis alto de varios,...) consultar as seguintes funcións:
 
−
 
−
:* [http://php.net/manual/es/ref.strings.php Funcións aplicadas a cadeas].
 
−
:* [http://php.net/manual/es/ref.math.php Funcións matemáticas].
 
−
:* [http://php.net/manual/es/ref.array.php Funcións aplicadas a arrays].
 
−
 
−
 
−
 
−
=== Ámbito ===
 
−
 
−
* Máis información no enlace seguinte: http://php.net/manual/es/language.variables.scope.php
 
−
 
−
 
−
* O ámbito é un concepto que fai referencia á 'visibilidade' dunha variable dentro dun programa.
 
−
 
−
* Normalmente, en outras linguaxes de programación, unha variable definida a nivel de programa é visible para todas as funcións dentro dese programa. En PHP non pasa así.
 
−
 
−
* Aínda que non vimos como crear funcións en PHP as introduciremos neste punto para explicar os ámbitos.
 
−
 
−
: Vexamos un exemplo:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="8-15,17-24" >
 
−
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
−
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
−
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 
−
    <head>
 
−
        <meta charset="utf-8" />
 
−
        <title>Exemplos de códigos php</title>
 
−
    </head>
 
−
<?php
 
−
    function modificarVar(){
 
−
       
 
−
        $var=10;
 
−
        printf('$var--->%d despois de ser modificada. Impreso dentro da función.<br/>',$var);  // PREGUNTA: Por que printf leva comillas simples nesta orde ?
 
−
       
 
−
    }
 
−
?>   
 
−
    <body>
 
−
<?php 
 
−
 
−
    $var = 100; // Isto é unha variable de cadea
 
−
 
−
    modificarVar();
 
−
    printf('$var--->%d despois de ser modificada.Impreso fora da función.<br/>',$var);
 
−
   
 
−
?>
 
−
    </body>   
 
−
</html>
 
−
</syntaxhighlight>
 
−
 
−
 
−
: O resultado será isto:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
$var--->10 despois de ser modificada. Impreso dentro da función.
 
−
$var--->100 despois de ser modificada.Impreso fora da función.
 
−
</syntaxhighlight>
 
−
 
−
 
−
:: Como vemos, despois de chamar á función, imprimimos o valor da variable $var, e non imprime o valor modificados, se non o valor orixinal.
 
−
 
−
 
−
* En PHP para poder modificar o valor dunha variable a nivel GLOBAL temos dúas formas:
 
−
 
−
:* Definindo novamente a variable dentro da función antepoñendo o prefixo '''global'''.
 
−
:* Acceder a dita variable có array [http://php.net/manual/es/reserved.variables.globals.php $GLOBALS[nome_variable]]. O nome da variable non leva '$' dentro do array.
 
−
 
−
: Vexamos o mesmo exemplo aplicando as dúas solucións:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="4" >
 
−
<?php
 
−
    function modificarVar(){
 
−
       
 
−
        global $var;
 
−
       
 
−
        $var=10;
 
−
        printf('$var--->%d despois de ser modificada. Impreso dentro da función.<br/>',$var); 
 
−
       
 
−
    }
 
−
?>   
 
−
</syntaxhighlight>
 
−
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="4,5" >
 
−
<?php
 
−
    function modificarVar(){
 
−
       
 
−
        $GLOBALS['var']=10;
 
−
        printf('$var--->%d despois de ser modificada. Impreso dentro da función.<br/>',$GLOBALS['var']); 
 
−
       
 
−
    }
 
−
?>   
 
−
</syntaxhighlight>
 
−
:<u>Nota:</u> Fixarse que a variable $var dentro da función non existe. Se intentamos imprimila non terá valor asinado. Poderíamos traballar cunha variable $var dentro da función, pero sería diferente á $GLOBALS['var'].
 
−
 
−
 
−
: Nos dous casos anteriores o resultado será isto:
 
−
 
−
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
−
$var--->10 despois de ser modificada. Impreso dentro da función.
 
−
$var--->10 despois de ser modificada.Impreso fora da función.
 
−
</syntaxhighlight>
 
−
 
−
 
−
 
−
=== Comprobación de definición e asignación ===
 
−
 
−
* En PHP temos dúas funcións para saber se unha variable está definida / ten valor asinado.
 
−
 
−
 
−
* [http://php.net/manual/es/function.isset.php Función isset($var)]: Devolve TRUE se var existe e ten un valor distinto de NULL; FALSE en caso contrario.
 
−
* [http://php.net/manual/es/function.empty.php empty($var)]:  Devolve FALSE se var existe e ten un valor no baleiro, distinto de cero. Doutro modo devolve TRUE.
 
−
 
−
::As seguintes expresións son consideradas como baleiras:
 
−
 
−
::*    "" (una cadena vacía)
 
−
::*    0 (0 como un integer)
 
−
::*    0.0 (0 como un float)
 
−
::*    "0" (0 como un string)
 
−
::*    NULL
 
−
::*    FALSE
 
−
::*    array() (un array balairo)
 
−
::*    $var; (unha variable declarada, pero sen un valor)
 
−
 
−
 
−
<br />
 
−
* Vexamos un exemplo:
 
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 
−
<?php 
 
−
 
−
    $var1 = 100;
 
−
 
−
    printf("Valor de var1: %s<br/>",$var1);
 
−
    printf("isset: %b<br/>",isset($var1));
 
−
    printf("empty: %b<br/>",empty($var1));
 
−
   
 
−
    $var1 = null;
 
−
 
−
    printf("Valor de var1: null<br/>");
 
−
    printf("isset: %b<br/>",isset($var1));
 
−
    printf("empty: %b<br/>",empty($var1));
 
−
   
 
−
    $var1 = '';
 
−
 
−
    printf("Valor de var1: %s<br/>","''");
 
−
    printf("isset: %b<br/>",isset($var1));
 
−
    printf("empty: %b<br/>",empty($var1));
 
−
   
 
−
 
−
        // Comprobamos agora o que vale unha variable non definida....
 
−
    printf("Valor de var2: %s<br/>","sen asinar");
 
−
    printf("isset: %b<br/>",isset($var2));
 
−
    printf("empty: %b<br/>",empty($var2));
 
−
 
 
−
?>
 
−
</syntaxhighlight>
 
−
 
−
 
−
* Da como resultado:
 
−
 
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 
−
Valor de var1: 100
 
−
isset: 1
 
−
empty: 0
 
−
Valor de var1: null
 
−
isset: 0
 
−
empty: 1
 
−
Valor de var1: ''
 
−
isset: 1
 
−
empty: 1
 
−
Valor de var2: sen asinar
 
−
isset: 0
 
−
empty: 1
 
−
</syntaxhighlight>
 
−
 
−
* <u>Nota:</u> Estas funcións serán utilizadas para comprobar se os datos dun formulario están cubertos ou non.
 
−
 
−
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2016).
 

Revisión actual del 08:38 10 oct 2016