Diferencia entre revisiones de «PHP Paso de datos con formularios»
Ir a la navegación
Ir a la búsqueda
| Línea 1: | Línea 1: | ||
== Introdución == | == Introdución == | ||
| − | * | + | * Cando programamos pode darse o caso de que teñamos código (en forma de funcións, variables, constantes, clases ou bloques de código) que teñamos que utilizar en moitas páxinas distintas. |
| − | |||
| + | * Nestes casos é conveniente ter o código gardado nun arquivo separado e poder incorporalo cando o necesitemos. | ||
| − | * | + | * En PHP podemos facelo coas construcións da linguaxe: '''include''', '''include_once''', '''require''' e '''require_once'''. |
| − | : | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | <br /> | ||
| + | == include == | ||
| − | * | + | * <u>Sintaxe:</u> |
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | ::<syntaxhighlight lang="php" | + | include '[path/]arquivo.php'; |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | * A sentenza '''include''' inclúe e avalía o arquivo especificado. | |
| − | ''' | + | * O camiño pode ser absoluto ou relativo. Para evitar problemas coa resolución de rutas é recomendable construír a ruta tomando como referencia o directorio do arquivo PHP actual mediante a constante máxica '''__DIR__'''. |
| − | |||
| − | |||
| − | |||
| − | + | : Por exemplo: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | + | include __DIR__ . '/utilidades/arquivo.php'; | |
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | * Antigamente empregábase con frecuencia a extensión ''.inc.php'' para este tipo de arquivos, pero actualmente podemos empregar directamente a extensión ''.php''. | ||
| + | * O código PHP do arquivo incluído debe atoparse entre etiquetas PHP. | ||
| − | + | : Se o arquivo contén unicamente código PHP, é recomendable empregar a etiqueta de apertura '''<?php''' e '''omitir a etiqueta de peche ?>''' ao final do arquivo. | |
| − | + | : Desta forma evitamos que espazos ou saltos de liña situados accidentalmente despois da etiqueta de peche produzan unha saída non desexada. | |
| − | * | + | * Vexamos un exemplo: |
| − | + | : '''Arquivo: FuncionsExternas.php''' | |
| − | |||
| − | |||
| − | :: | ||
| − | : < | + | ::<syntaxhighlight lang="php" line enclose="div"> |
| − | + | <?php | |
| − | + | /** | |
| − | * | + | * Crea un array cun número específico de elementos inicializados a null. |
| + | * | ||
| + | * @param int $numElementos Número de elementos que terá o array. | ||
| + | * | ||
| + | * @return array Array co número de elementos indicado, todos con valor null. | ||
| + | */ | ||
| + | function crearArray(int $numElementos): array | ||
| + | { | ||
| + | $array = []; | ||
| + | for ($cont = 0; $cont < $numElementos; $cont++) { | ||
| + | $array[$cont] = null; | ||
| + | } | ||
| − | + | return $array; | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | : | + | : '''Arquivo: ReutilizandoCodigo.php''' |
| − | + | ::<syntaxhighlight lang="php" line enclose="div"> | |
| − | ::<syntaxhighlight lang="php" line enclose="div" | + | <!DOCTYPE html> |
| − | < | + | <html lang="gl"> |
| − | + | <head> | |
| + | <meta charset="UTF-8"> | ||
| + | <title>Exemplos de código PHP</title> | ||
| + | </head> | ||
| + | <body> | ||
| + | <?php | ||
| + | include __DIR__ . '/FuncionsExternas.php'; | ||
| − | + | $datos = crearArray(10); | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | foreach ($datos as $clave => $dato) { | |
| − | + | printf( | |
| − | + | "Clave:%d - Valor:%s<br>", | |
| − | + | $clave, | |
| + | $dato === null ? 'Sen dato' : $dato | ||
| + | ); | ||
| + | } | ||
| + | ?> | ||
| + | </body> | ||
</html> | </html> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | * As funcións e clases definidas nun arquivo incluído teñen ámbito global. | ||
| + | * No caso das variables, o arquivo incluído herda o ámbito do punto no que se realiza a inclusión. | ||
| + | : Por exemplo, se facemos un '''include''' dentro dunha función, as variables definidas no arquivo incluído pertencerán ao ámbito desa función. | ||
| − | * | + | * Cando fagamos unha aplicación con acceso a base de datos teremos que gardar información sensible, como datos de conexión. |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | : É recomendable gardar este tipo de información nun arquivo situado '''fóra''' da ruta pública do servidor web. | |
| − | |||
| − | + | :: Imaxinemos que o servidor web publica por defecto o cartafol: | |
| − | + | ::<syntaxhighlight lang="text"> | |
| − | + | /var/www/html | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ::<syntaxhighlight lang=" | ||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | :: Poderiamos gardar a configuración, por exemplo, en: | |
| − | |||
| − | |||
| − | ::<syntaxhighlight lang=" | + | ::<syntaxhighlight lang="text"> |
| − | + | /var/www/configuracions/informacionbd.php | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | : | + | :: Desta forma, coa configuración habitual do servidor web, ese arquivo non poderá solicitarse directamente mediante unha URL. |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<br /> | <br /> | ||
| − | + | == include_once == | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | === | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | * <u>Sintaxe:</u> | |
| − | |||
| − | |||
| − | </ | ||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | + | include_once '[path/]arquivo.php'; | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ::<syntaxhighlight lang=" | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | * '''include_once''' ten o mesmo comportamento que '''include''', pero PHP comproba se o arquivo xa foi incluído previamente. Se xa foi incluído, non o volve procesar. | ||
| − | + | * Isto é especialmente útil cando o arquivo define funcións, clases ou constantes, xa que incluílo máis dunha vez podería provocar erros por declaracións duplicadas. | |
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | |||
| + | * Debemos escoller entre '''include''' e '''include_once''' en función de se queremos permitir ou non que o mesmo arquivo sexa procesado máis dunha vez. | ||
| − | + | * Pode darse o caso, por exemplo, cando facemos inclusións condicionais dentro dun '''if''', de que un arquivo xa fose cargado previamente. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | * Os arquivos incluídos tamén poden utilizarse para gardar elementos comúns a varias páxinas web, como unha cabeceira, un menú ou un pé de páxina. | ||
| + | : Desta forma, se necesitamos modificar un elemento común, soamente teremos que facelo nun único arquivo. | ||
| + | * En PHP existe outra forma de organizar os elementos comúns empregando un modelo ou patrón MVC. | ||
| + | : Podedes consultalo [http://wiki.cifprodolfoucha.es/index.php?title=PHP_Conceptos_b%C3%A1sicos_Modelo-Vista-Controlador#Opci.C3.B3n_2 neste enlace da WIKI]. | ||
<br /> | <br /> | ||
| + | == require == | ||
| − | + | * <u>Sintaxe:</u> | |
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | : | + | require '[path/]arquivo.php'; |
| + | </syntaxhighlight> | ||
| − | * | + | * '''require''' fai o mesmo que '''include''', pero existe unha diferenza importante cando non se pode cargar o arquivo: |
| − | |||
| − | |||
| − | |||
| − | + | :* '''include''' produce un aviso de tipo '''E_WARNING''' e a execución do script pode continuar. | |
| − | :* ''' | + | :* '''require''' produce un erro de tipo '''Error'''. Se non se trata, a execución do script interrómpese. |
| − | |||
| − | :* ''' | ||
| − | |||
| − | + | * Por este motivo empregaremos normalmente '''require''' cando o arquivo sexa imprescindible para que a aplicación poida funcionar. | |
| − | + | === Exemplo con include === | |
| − | |||
| − | |||
| − | |||
| + | ::<syntaxhighlight lang="php" line enclose="div"> | ||
| + | <!DOCTYPE html> | ||
| + | <html lang="gl"> | ||
| + | <head> | ||
| + | <meta charset="UTF-8"> | ||
| + | <title>Exemplo con include</title> | ||
| + | </head> | ||
| + | <body> | ||
<?php | <?php | ||
| − | + | include __DIR__ . '/FuncionsExternasNonExiste.php'; | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | echo 'Isto aparece porque include permite continuar a execución.'; | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
?> | ?> | ||
| − | </ | + | </body> |
| − | + | </html> | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | </syntaxhighlight> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| + | : Se o arquivo non existe, aparecerá un warning, pero a execución poderá continuar. | ||
| + | === Exemplo con require === | ||
| − | + | ::<syntaxhighlight lang="php" line enclose="div"> | |
| − | |||
| − | |||
| − | |||
| − | ::<syntaxhighlight lang="php" line enclose="div | ||
<!DOCTYPE html> | <!DOCTYPE html> | ||
| − | <html> | + | <html lang="gl"> |
| + | <head> | ||
| + | <meta charset="UTF-8"> | ||
| + | <title>Exemplo con require</title> | ||
| + | </head> | ||
<body> | <body> | ||
| + | <?php | ||
| + | require __DIR__ . '/FuncionsExternasNonExiste.php'; | ||
| − | + | echo 'Esta instrución non chegará a executarse se o erro non é tratado.'; | |
| − | + | ?> | |
| − | |||
| − | |||
| − | |||
| − | |||
</body> | </body> | ||
</html> | </html> | ||
| − | </syntaxhighlight> | + | </syntaxhighlight> |
| − | + | : Neste caso, ao ser o arquivo obrigatorio, a execución interrómpese se non pode cargarse e o erro non é tratado. | |
| − | |||
| − | |||
| − | + | <br /> | |
| + | == require_once == | ||
| + | * <u>Sintaxe:</u> | ||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | + | require_once '[path/]arquivo.php'; | |
| + | </syntaxhighlight> | ||
| − | + | * Ten o mesmo comportamento que '''require''', pero se o arquivo xa foi incluído previamente non se volverá incluír. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | * É especialmente útil cando: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | :* o arquivo é obrigatorio para o funcionamento da aplicación; | ||
| + | :* non sabemos con certeza se xa foi cargado previamente; | ||
| + | :* o arquivo define funcións, clases ou constantes que non deben declararse máis dunha vez. | ||
| − | + | : Resumo: | |
| − | |||
| − | |||
| − | |||
| − | : | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ::{| class="wikitable" | ||
| + | ! Sentenza | ||
| + | ! O arquivo é obrigatorio | ||
| + | ! Evita incluílo máis dunha vez | ||
| + | |- | ||
| + | | include | ||
| + | | Non | ||
| + | | Non | ||
| + | |- | ||
| + | | include_once | ||
| + | | Non | ||
| + | | Si | ||
| + | |- | ||
| + | | require | ||
| + | | Si | ||
| + | | Non | ||
| + | |- | ||
| + | | require_once | ||
| + | | Si | ||
| + | | Si | ||
| + | |} | ||
| − | + | <br /> | |
| − | + | == Configuración da visualización e rexistro de erros == | |
| − | |||
| − | |||
| − | |||
| − | |||
| + | * Durante o desenvolvemento é importante detectar e corrixir erros, warnings e mensaxes de depreciación. | ||
| + | * Nun servidor de produción, pola contra, non debemos amosar directamente os erros ao usuario, xa que poden revelar información interna da aplicación ou do servidor. | ||
| − | + | === Entorno de desenvolvemento === | |
| − | |||
| − | |||
| − | |||
| − | |||
| + | * Durante o desenvolvemento podemos pedir a PHP que informe de todos os erros: | ||
| − | : | + | ::<syntaxhighlight lang="php" enclose="div"> |
| − | + | error_reporting(E_ALL); | |
| − | + | ini_set('display_errors', '1'); | |
| + | </syntaxhighlight> | ||
| − | + | * '''E_ALL''' indica que queremos recibir todos os erros, warnings, notices e mensaxes de depreciación configuradas por PHP. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | === Entorno de produción === | ||
| + | * Nun entorno de produción é recomendable non amosar os erros ao usuario e gardalos no rexistro do servidor. | ||
| − | + | : Unha configuración típica no arquivo ''php.ini'' sería: | |
| − | : | ||
| + | ::<syntaxhighlight lang="ini" enclose="div"> | ||
| + | display_errors = Off | ||
| + | log_errors = On | ||
| + | error_reporting = E_ALL | ||
| + | </syntaxhighlight> | ||
| + | * Desta forma os erros seguirán rexistrándose, pero non se amosarán directamente na páxina web. | ||
| − | + | === Máscaras de erros === | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | * PHP tamén permite combinar constantes de erros mediante operadores a nivel de bits. | ||
| + | : Por exemplo: | ||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | ::<syntaxhighlight lang="php" | + | // Erros, warnings e erros de análise. |
| − | + | error_reporting(E_ERROR | E_WARNING | E_PARSE); | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | // Todos os erros excepto E_NOTICE. | ||
| + | error_reporting(E_ALL & ~E_NOTICE); | ||
| + | </syntaxhighlight> | ||
| + | : Aínda que esta posibilidade existe, durante o desenvolvemento empregaremos normalmente: | ||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | ::<syntaxhighlight lang="php" | + | error_reporting(E_ALL); |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | </syntaxhighlight> | ||
| − | + | === A través do arquivo .htaccess === | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | * Se PHP se executa como módulo de Apache e a configuración do servidor o permite, é posible modificar determinadas opcións de PHP mediante o arquivo '''.htaccess'''. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | : Por exemplo: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | : | ||
| − | : | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ::<syntaxhighlight lang="apache" enclose="div"> | ||
| + | php_value error_reporting 2147483647 | ||
| + | php_flag display_errors On | ||
| + | </syntaxhighlight> | ||
| − | + | * Esta forma de configuración '''non é válida para todas as formas de executar PHP'''. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | : Por exemplo, cando PHP se executa mediante CGI/FastCGI poden empregarse arquivos '''.user.ini''' para determinadas opcións de configuración. | ||
<br /> | <br /> | ||
| + | == Colocar arquivos sensibles == | ||
| − | + | * Veremos nas seguintes unidades que teremos que gardar información sensible en certos arquivos PHP, como os datos necesarios para conectarnos a unha base de datos. | |
| − | * | + | * Podemos definir esa información nun arquivo PHP, por exemplo ''informacionbd.php'', e incorporalo mediante '''require''' ou '''require_once''' nas páxinas que necesiten utilizalo. |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | * Para evitar que este tipo de arquivos poidan solicitarse directamente desde o navegador, é recomendable situalos fisicamente fóra do '''DocumentRoot''' do servidor web. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | : Por exemplo, se Apache publica: | |
| − | |||
| − | |||
| + | ::<syntaxhighlight lang="text"> | ||
| + | /var/www/html | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | : podemos gardar o arquivo de configuración en: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | : | ||
| − | |||
| − | |||
| − | |||
| − | : | ||
| − | + | ::<syntaxhighlight lang="text"> | |
| − | ::<syntaxhighlight lang=" | + | /var/www/configuracions/informacionbd.php |
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | * Ademais, debemos: | |
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | :* configurar correctamente os permisos do arquivo; | ||
| + | :* evitar gardar contrasinais ou credenciais en repositorios públicos; | ||
| + | :* permitir o acceso unicamente ao usuario ou servizo que realmente o necesite. | ||
<br /> | <br /> | ||
== Exercicios propostos == | == Exercicios propostos == | ||
| − | * '''Exercicio 1:''' | + | * '''Exercicio 1:''' Define nun arquivo externo dentro dun cartafol de nome ''utilidades'' dúas funcións: |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | :* unha función que, a partir dunha cadea, engada dita cadea a un array se non existe previamente; | ||
| + | :* outra función que, dado un array, devolva unha copia do array recibido. | ||
| + | : Xera unha páxina que faga uso das funcións do arquivo anterior. O arquivo é obrigatorio para o funcionamento da páxina. | ||
| + | * '''Exercicio 2:''' Define nun arquivo externo de nome ''utilidades2.php'', dentro do cartafol ''utilidades'', as seguintes constantes: | ||
| + | :* '''NUM_ELEMENTOS''' igual a 3; | ||
| + | :* '''IDADE_MAIOR''' igual a 18. | ||
| + | : Crea tamén unha función que, dado un array numérico, comprobe que o número de elementos do array sexa superior a '''NUM_ELEMENTOS'''. | ||
| + | : Se non se cumpre esta condición, a función debe devolver '''false'''. | ||
| + | : En caso contrario, debe devolver un array cos elementos que sexan maiores que '''IDADE_MAIOR'''. Se ningún elemento cumpre a condición, debe devolver '''false'''. | ||
| + | : Crea unha páxina de exemplo de uso da función anterior, tendo en conta que a páxina pode xerarse dinamicamente e non sabemos se o arquivo foi incluído previamente. A páxina necesita cargar obrigatoriamente o arquivo ''utilidades2.php''. | ||
<br /> | <br /> | ||
=== Solución Exercicios propostos === | === Solución Exercicios propostos === | ||
| − | * '''Solución Exercicio 1 | + | * '''Solución Exercicio 1''' |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | : '''Páxina utilidades/utilidades1.php''' | |
| − | |||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | ::<syntaxhighlight lang="php" enclose="div | ||
<?php | <?php | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
/** | /** | ||
| − | * Engade unha | + | * Engade unha cadea ao array se non existe xa. |
* | * | ||
| − | * @param string $ | + | * @param array &$array Array onde se engadirá a cadea. |
| + | * @param string $cadea Cadea de texto a engadir. | ||
* | * | ||
* @return void | * @return void | ||
*/ | */ | ||
| − | function | + | function engadirCadeaAoArray(array &$array, string $cadea): void |
| − | + | { | |
| − | + | if (!in_array($cadea, $array, true)) { | |
| − | if (!in_array($ | + | $array[] = $cadea; |
| − | $ | ||
} | } | ||
} | } | ||
/** | /** | ||
| − | * | + | * Devolve unha copia dun array. |
* | * | ||
| − | * | + | * En PHP os arrays asígnanse por valor. Polo tanto, devolver o array |
| + | * permite obter unha copia que pode modificarse sen alterar o array orixinal. | ||
* | * | ||
| − | * @ | + | * @param array $array Array que se quere copiar. |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
* | * | ||
| − | * @return array | + | * @return array Copia do array recibido. |
*/ | */ | ||
| − | function | + | function copiarArray(array $array): array |
| − | + | { | |
| − | return $ | + | return $array; |
} | } | ||
| − | |||
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | : '''Páxina exercicio1_include.php''' | ||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | ::<syntaxhighlight lang="php" enclose="div | ||
<!DOCTYPE html> | <!DOCTYPE html> | ||
| − | <html> | + | <html lang="gl"> |
<head> | <head> | ||
| − | <title> | + | <meta charset="UTF-8"> |
| + | <title>Exemplo PHP en Galego</title> | ||
</head> | </head> | ||
<body> | <body> | ||
| − | + | <?php | |
| − | + | require __DIR__ . '/utilidades/utilidades1.php'; | |
| − | |||
| − | |||
| − | |||
| − | + | $meuArray = []; | |
| − | |||
| − | |||
| − | + | // Engadir cadeas ao array. | |
| − | + | engadirCadeaAoArray($meuArray, 'Ola'); | |
| − | + | engadirCadeaAoArray($meuArray, 'Mundo'); | |
| − | + | engadirCadeaAoArray($meuArray, 'Ola'); // Xa existe e non se engadirá de novo. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | // Copiar o array. | |
| − | + | $copiaArray = copiarArray($meuArray); | |
| − | |||
| − | |||
| − | |||
| − | + | echo '<h2>Array orixinal:</h2>'; | |
| − | + | echo '<pre>'; | |
| + | print_r($meuArray); | ||
| + | echo '</pre>'; | ||
| − | + | echo '<h2>Copia do array:</h2>'; | |
| − | + | echo '<pre>'; | |
| − | + | print_r($copiaArray); | |
| − | + | echo '</pre>'; | |
| − | + | ?> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</body> | </body> | ||
</html> | </html> | ||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | <br /> | ||
| + | * '''Solución Exercicio 2''' | ||
| + | : '''Páxina utilidades/utilidades2.php''' | ||
| − | < | + | ::<syntaxhighlight lang="php" enclose="div"> |
| − | + | <?php | |
| − | |||
| − | + | const NUM_ELEMENTOS = 3; | |
| − | + | const IDADE_MAIOR = 18; | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
/** | /** | ||
| − | * | + | * Comproba as idades dun array e devolve os elementos que superen un límite. |
| − | |||
| − | |||
| − | |||
* | * | ||
| − | * @param | + | * @param array $array Array de números (idades) a comprobar. |
* | * | ||
| − | * @return array| | + | * @return array|false Devolve un array cos elementos maiores que IDADE_MAIOR |
| + | * ou false se non se cumpren as condicións. | ||
*/ | */ | ||
| − | function | + | function comprobarIdade(array $array): array|false |
| − | + | { | |
| − | + | $elementosCumpridos = []; | |
| − | + | ||
| − | + | if (count($array) <= NUM_ELEMENTOS) { | |
| − | + | return false; | |
| − | |||
} | } | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | foreach ($array as $idade) { | |
| − | + | if ($idade > IDADE_MAIOR) { | |
| − | + | $elementosCumpridos[] = $idade; | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | foreach ($ | ||
| − | |||
} | } | ||
| − | |||
| − | |||
| − | |||
| − | |||
| + | return $elementosCumpridos !== [] ? $elementosCumpridos : false; | ||
| + | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | : '''Páxina exercicio2_include.php''' | ||
| − | + | ::<syntaxhighlight lang="php" enclose="div"> | |
| − | ::<syntaxhighlight lang="php" enclose="div | ||
<!DOCTYPE html> | <!DOCTYPE html> | ||
| − | <html> | + | <html lang="gl"> |
<head> | <head> | ||
| − | <title> | + | <meta charset="UTF-8"> |
| + | <title>Exemplo PHP en Galego</title> | ||
</head> | </head> | ||
<body> | <body> | ||
| − | + | <?php | |
| + | require_once __DIR__ . '/utilidades/utilidades2.php'; | ||
| − | + | $idades = [2, 62, 2, 2, 2]; // Soamente 62 cumpre a condición. | |
| − | |||
| − | + | $resultado = comprobarIdade($idades); | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | if ($resultado !== false) { | |
| − | + | echo '<h2>Idades que cumpren a condición:</h2>'; | |
| − | + | echo '<ul>'; | |
| − | + | ||
| − | + | foreach ($resultado as $idade) { | |
| − | + | echo "<li>$idade anos</li>"; | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | echo "< | ||
} | } | ||
| − | ?> | + | |
| + | echo '</ul>'; | ||
| + | } else { | ||
| + | echo '<h2>Ningunha idade cumpre a condición</h2>'; | ||
| + | } | ||
| + | ?> | ||
</body> | </body> | ||
</html> | </html> | ||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2026). | |
| − | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- ( | ||
Revisión del 17:02 13 sep 2026
Sumario
Introdución
- Cando programamos pode darse o caso de que teñamos código (en forma de funcións, variables, constantes, clases ou bloques de código) que teñamos que utilizar en moitas páxinas distintas.
- Nestes casos é conveniente ter o código gardado nun arquivo separado e poder incorporalo cando o necesitemos.
- En PHP podemos facelo coas construcións da linguaxe: include, include_once, require e require_once.
include
- Sintaxe:
include '[path/]arquivo.php';
- A sentenza include inclúe e avalía o arquivo especificado.
- O camiño pode ser absoluto ou relativo. Para evitar problemas coa resolución de rutas é recomendable construír a ruta tomando como referencia o directorio do arquivo PHP actual mediante a constante máxica __DIR__.
- Por exemplo:
include __DIR__ . '/utilidades/arquivo.php';
- Antigamente empregábase con frecuencia a extensión .inc.php para este tipo de arquivos, pero actualmente podemos empregar directamente a extensión .php.
- O código PHP do arquivo incluído debe atoparse entre etiquetas PHP.
- Se o arquivo contén unicamente código PHP, é recomendable empregar a etiqueta de apertura <?php e omitir a etiqueta de peche ?> ao final do arquivo.
- Desta forma evitamos que espazos ou saltos de liña situados accidentalmente despois da etiqueta de peche produzan unha saída non desexada.
- Vexamos un exemplo:
- Arquivo: FuncionsExternas.php
1 <?php 2 3 /** 4 * Crea un array cun número específico de elementos inicializados a null. 5 * 6 * @param int $numElementos Número de elementos que terá o array. 7 * 8 * @return array Array co número de elementos indicado, todos con valor null. 9 */ 10 function crearArray(int $numElementos): array 11 { 12 $array = []; 13 14 for ($cont = 0; $cont < $numElementos; $cont++) { 15 $array[$cont] = null; 16 } 17 18 return $array; 19 }
- Arquivo: ReutilizandoCodigo.php
1 <!DOCTYPE html> 2 <html lang="gl"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Exemplos de código PHP</title> 6 </head> 7 <body> 8 <?php 9 include __DIR__ . '/FuncionsExternas.php'; 10 11 $datos = crearArray(10); 12 13 foreach ($datos as $clave => $dato) { 14 printf( 15 "Clave:%d - Valor:%s<br>", 16 $clave, 17 $dato === null ? 'Sen dato' : $dato 18 ); 19 } 20 ?> 21 </body> 22 </html>
- As funcións e clases definidas nun arquivo incluído teñen ámbito global.
- No caso das variables, o arquivo incluído herda o ámbito do punto no que se realiza a inclusión.
- Por exemplo, se facemos un include dentro dunha función, as variables definidas no arquivo incluído pertencerán ao ámbito desa función.
- Cando fagamos unha aplicación con acceso a base de datos teremos que gardar información sensible, como datos de conexión.
- É recomendable gardar este tipo de información nun arquivo situado fóra da ruta pública do servidor web.
- Imaxinemos que o servidor web publica por defecto o cartafol:
/var/www/html
- Poderiamos gardar a configuración, por exemplo, en:
/var/www/configuracions/informacionbd.php
- Desta forma, coa configuración habitual do servidor web, ese arquivo non poderá solicitarse directamente mediante unha URL.
include_once
- Sintaxe:
include_once '[path/]arquivo.php';
- include_once ten o mesmo comportamento que include, pero PHP comproba se o arquivo xa foi incluído previamente. Se xa foi incluído, non o volve procesar.
- Isto é especialmente útil cando o arquivo define funcións, clases ou constantes, xa que incluílo máis dunha vez podería provocar erros por declaracións duplicadas.
- Debemos escoller entre include e include_once en función de se queremos permitir ou non que o mesmo arquivo sexa procesado máis dunha vez.
- Pode darse o caso, por exemplo, cando facemos inclusións condicionais dentro dun if, de que un arquivo xa fose cargado previamente.
- Os arquivos incluídos tamén poden utilizarse para gardar elementos comúns a varias páxinas web, como unha cabeceira, un menú ou un pé de páxina.
- Desta forma, se necesitamos modificar un elemento común, soamente teremos que facelo nun único arquivo.
- En PHP existe outra forma de organizar os elementos comúns empregando un modelo ou patrón MVC.
- Podedes consultalo neste enlace da WIKI.
require
- Sintaxe:
require '[path/]arquivo.php';
- require fai o mesmo que include, pero existe unha diferenza importante cando non se pode cargar o arquivo:
- include produce un aviso de tipo E_WARNING e a execución do script pode continuar.
- require produce un erro de tipo Error. Se non se trata, a execución do script interrómpese.
- Por este motivo empregaremos normalmente require cando o arquivo sexa imprescindible para que a aplicación poida funcionar.
Exemplo con include
1 <!DOCTYPE html> 2 <html lang="gl"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Exemplo con include</title> 6 </head> 7 <body> 8 <?php 9 include __DIR__ . '/FuncionsExternasNonExiste.php'; 10 11 echo 'Isto aparece porque include permite continuar a execución.'; 12 ?> 13 </body> 14 </html>
- Se o arquivo non existe, aparecerá un warning, pero a execución poderá continuar.
Exemplo con require
1 <!DOCTYPE html> 2 <html lang="gl"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Exemplo con require</title> 6 </head> 7 <body> 8 <?php 9 require __DIR__ . '/FuncionsExternasNonExiste.php'; 10 11 echo 'Esta instrución non chegará a executarse se o erro non é tratado.'; 12 ?> 13 </body> 14 </html>
- Neste caso, ao ser o arquivo obrigatorio, a execución interrómpese se non pode cargarse e o erro non é tratado.
require_once
- Sintaxe:
require_once '[path/]arquivo.php';
- Ten o mesmo comportamento que require, pero se o arquivo xa foi incluído previamente non se volverá incluír.
- É especialmente útil cando:
- o arquivo é obrigatorio para o funcionamento da aplicación;
- non sabemos con certeza se xa foi cargado previamente;
- o arquivo define funcións, clases ou constantes que non deben declararse máis dunha vez.
- Resumo:
Sentenza O arquivo é obrigatorio Evita incluílo máis dunha vez include Non Non include_once Non Si require Si Non require_once Si Si
Configuración da visualización e rexistro de erros
- Durante o desenvolvemento é importante detectar e corrixir erros, warnings e mensaxes de depreciación.
- Nun servidor de produción, pola contra, non debemos amosar directamente os erros ao usuario, xa que poden revelar información interna da aplicación ou do servidor.
Entorno de desenvolvemento
- Durante o desenvolvemento podemos pedir a PHP que informe de todos os erros:
error_reporting(E_ALL); ini_set('display_errors', '1');
- E_ALL indica que queremos recibir todos os erros, warnings, notices e mensaxes de depreciación configuradas por PHP.
Entorno de produción
- Nun entorno de produción é recomendable non amosar os erros ao usuario e gardalos no rexistro do servidor.
- Unha configuración típica no arquivo php.ini sería:
display_errors = Off log_errors = On error_reporting = E_ALL
- Desta forma os erros seguirán rexistrándose, pero non se amosarán directamente na páxina web.
Máscaras de erros
- PHP tamén permite combinar constantes de erros mediante operadores a nivel de bits.
- Por exemplo:
// Erros, warnings e erros de análise. error_reporting(E_ERROR | E_WARNING | E_PARSE); // Todos os erros excepto E_NOTICE. error_reporting(E_ALL & ~E_NOTICE);
- Aínda que esta posibilidade existe, durante o desenvolvemento empregaremos normalmente:
error_reporting(E_ALL);
A través do arquivo .htaccess
- Se PHP se executa como módulo de Apache e a configuración do servidor o permite, é posible modificar determinadas opcións de PHP mediante o arquivo .htaccess.
- Por exemplo:
php_value error_reporting 2147483647 php_flag display_errors On
- Esta forma de configuración non é válida para todas as formas de executar PHP.
- Por exemplo, cando PHP se executa mediante CGI/FastCGI poden empregarse arquivos .user.ini para determinadas opcións de configuración.
Colocar arquivos sensibles
- Veremos nas seguintes unidades que teremos que gardar información sensible en certos arquivos PHP, como os datos necesarios para conectarnos a unha base de datos.
- Podemos definir esa información nun arquivo PHP, por exemplo informacionbd.php, e incorporalo mediante require ou require_once nas páxinas que necesiten utilizalo.
- Para evitar que este tipo de arquivos poidan solicitarse directamente desde o navegador, é recomendable situalos fisicamente fóra do DocumentRoot do servidor web.
- Por exemplo, se Apache publica:
/var/www/html
- podemos gardar o arquivo de configuración en:
/var/www/configuracions/informacionbd.php
- Ademais, debemos:
- configurar correctamente os permisos do arquivo;
- evitar gardar contrasinais ou credenciais en repositorios públicos;
- permitir o acceso unicamente ao usuario ou servizo que realmente o necesite.
Exercicios propostos
- Exercicio 1: Define nun arquivo externo dentro dun cartafol de nome utilidades dúas funcións:
- unha función que, a partir dunha cadea, engada dita cadea a un array se non existe previamente;
- outra función que, dado un array, devolva unha copia do array recibido.
- Xera unha páxina que faga uso das funcións do arquivo anterior. O arquivo é obrigatorio para o funcionamento da páxina.
- Exercicio 2: Define nun arquivo externo de nome utilidades2.php, dentro do cartafol utilidades, as seguintes constantes:
- NUM_ELEMENTOS igual a 3;
- IDADE_MAIOR igual a 18.
- Crea tamén unha función que, dado un array numérico, comprobe que o número de elementos do array sexa superior a NUM_ELEMENTOS.
- Se non se cumpre esta condición, a función debe devolver false.
- En caso contrario, debe devolver un array cos elementos que sexan maiores que IDADE_MAIOR. Se ningún elemento cumpre a condición, debe devolver false.
- Crea unha páxina de exemplo de uso da función anterior, tendo en conta que a páxina pode xerarse dinamicamente e non sabemos se o arquivo foi incluído previamente. A páxina necesita cargar obrigatoriamente o arquivo utilidades2.php.
Solución Exercicios propostos
- Solución Exercicio 1
- Páxina utilidades/utilidades1.php
<?php /** * Engade unha cadea ao array se non existe xa. * * @param array &$array Array onde se engadirá a cadea. * @param string $cadea Cadea de texto a engadir. * * @return void */ function engadirCadeaAoArray(array &$array, string $cadea): void { if (!in_array($cadea, $array, true)) { $array[] = $cadea; } } /** * Devolve unha copia dun array. * * En PHP os arrays asígnanse por valor. Polo tanto, devolver o array * permite obter unha copia que pode modificarse sen alterar o array orixinal. * * @param array $array Array que se quere copiar. * * @return array Copia do array recibido. */ function copiarArray(array $array): array { return $array; }
- Páxina exercicio1_include.php
<!DOCTYPE html> <html lang="gl"> <head> <meta charset="UTF-8"> <title>Exemplo PHP en Galego</title> </head> <body> <?php require __DIR__ . '/utilidades/utilidades1.php'; $meuArray = []; // Engadir cadeas ao array. engadirCadeaAoArray($meuArray, 'Ola'); engadirCadeaAoArray($meuArray, 'Mundo'); engadirCadeaAoArray($meuArray, 'Ola'); // Xa existe e non se engadirá de novo. // Copiar o array. $copiaArray = copiarArray($meuArray); echo '<h2>Array orixinal:</h2>'; echo '<pre>'; print_r($meuArray); echo '</pre>'; echo '<h2>Copia do array:</h2>'; echo '<pre>'; print_r($copiaArray); echo '</pre>'; ?> </body> </html>
- Solución Exercicio 2
- Páxina utilidades/utilidades2.php
<?php const NUM_ELEMENTOS = 3; const IDADE_MAIOR = 18; /** * Comproba as idades dun array e devolve os elementos que superen un límite. * * @param array $array Array de números (idades) a comprobar. * * @return array|false Devolve un array cos elementos maiores que IDADE_MAIOR * ou false se non se cumpren as condicións. */ function comprobarIdade(array $array): array|false { $elementosCumpridos = []; if (count($array) <= NUM_ELEMENTOS) { return false; } foreach ($array as $idade) { if ($idade > IDADE_MAIOR) { $elementosCumpridos[] = $idade; } } return $elementosCumpridos !== [] ? $elementosCumpridos : false; }
- Páxina exercicio2_include.php
<!DOCTYPE html> <html lang="gl"> <head> <meta charset="UTF-8"> <title>Exemplo PHP en Galego</title> </head> <body> <?php require_once __DIR__ . '/utilidades/utilidades2.php'; $idades = [2, 62, 2, 2, 2]; // Soamente 62 cumpre a condición. $resultado = comprobarIdade($idades); if ($resultado !== false) { echo '<h2>Idades que cumpren a condición:</h2>'; echo '<ul>'; foreach ($resultado as $idade) { echo "<li>$idade anos</li>"; } echo '</ul>'; } else { echo '<h2>Ningunha idade cumpre a condición</h2>'; } ?> </body> </html>
-- Ángel D. Fernández González -- (2026).