PHP Curso Dia 24/01/09

Descargar archivo completo TXT
Gestión de archivos, abrir y leer contenido con FGet

	// Con fgets tomamos el contenido hasta el siguiente intro o retorno de carro
    $archivo="frutas.txt";
	if (file_exists($archivo)){
		$abre=fopen($archivo,'rb');
		echo "Abierto ",$abre;
		$linea=0;
		while (($bufer = fgets($abre, 4096)) !== false) {
			$linea +=1;
			echo "L=",$linea," ",$bufer,"
"; } }else{ echo "No disponemos de archivo"; }
Abierto Resource id #3
L=1 manzana
L=2 naranja
L=3 pera
L=4 fresa
L=5 melocoton
L=6 platano
L=7 uva
L=8 higo
Abrir archivo y leer con FRead

	// Con fread podemos leer el bloque indicado en bytes, evitando saltos de carro
    $archivo="frutas.txt";
	if (file_exists($archivo)){
		$abre=fopen($archivo,'rb');
		$contenido=fread($abre,filesize($archivo));
		echo $contenido;
	}else{
		echo "No disponemos de archivo";
	}
	
manzana naranja pera fresa melocoton platano uva higo
Abre archivo y escribe contenido (elimina el anterior)

	// Abre un archivo y escribe texto, si tiene contenido se elimina en la escritura
    $archivo="colores.txt";
	if (file_exists($archivo)){
		$abre=fopen($archivo,'wb');
		$contenido="azul, rojo, marron, verde, amarillo, naranja, blanco, negro";
		$escribe=fwrite($abre,$contenido);
		fclose($abre);
	}else{
		echo "No disponemos de archivo";
	}
	
Abre el archivo y agrega contenido

	// Abre un archivo y AGREGA contenido al final de la cadena contenida en el archivo
	// Debe existir el archivo para procesar
    $archivo="color2.txt";
	if (file_exists($archivo)){
		$abre=fopen($archivo,'ab');
		$contenido="azul, rojo, marron, verde, amarillo, naranja, blanco, negro";
		$escribe=fwrite($abre,$contenido);
		fclose($abre);
		echo "Más colores agregados a color2.txt";
	}else{
		echo "No disponemos de archivo";
	}
	
Más colores agregados a color2.txt
Renombrar, copiar y eliminar archivos

	// crear antes los archivos origen.txt origen1.txt origen2.txt
	$origen="origen.txt";
	$destino="destino.txt";
	rename($origen,$destino);
	$origen="origen1.txt";
	$destino="destino1.txt";
	copy ($origen,$destino);
	$origen="origen2.txt";
	unlink ($origen);
	
Copiar entre distinas posiciones del arbol de archivos

    // copiar entre distintas rutas, subiendo niveles
    copy ('frutas.txt','../frutas.txt');
	// unlink ('../frutas.txt'); // para eliminar el archivo
	

Warning: copy(): open_basedir restriction in effect. File(../frutas.txt) is not within the allowed path(s): (C:/Inetpub/vhosts/microportales.com\;C:\Windows\Temp\) in C:\inetpub\vhosts\microportales.com\httpdocs\ej240109.php on line 218

Warning: copy(../frutas.txt): Failed to open stream: Operation not permitted in C:\inetpub\vhosts\microportales.com\httpdocs\ej240109.php on line 218
Directorios OpenDir, ReadDir, CloseDir

    $ruta='./img';
    $opd=opendir($ruta);
	echo $opd,"
"; // recuperar solo los que son directorios contenidos while ($archivo=readdir($opd) ){ echo $archivo."
"; } closedir($opd);
Resource id #10
.
..
logo48.jpg
logo48.png
poster.PNG
Funciones de usuario

	// para crear funciones:
	// function nombre (parametros) { instrucciones que realizan acciones o retornan valores}
	// cada función debe tener su propio nombre y no repetirse, no son Case Sensitive (mifuncion = MiFuncion)
	// tras la declaracion y los valores se pone dos puntos y el tipo de valor a retornar
	// void implica que no debe disponer de return alguno
	function imprimir ($texto) :void{
		echo $texto."
"; } imprimir ('Hola Mundo');
Hola Mundo
Funcion de usuario con retorno de valor

    function calcular ($x, $y){
		return $x*$y;
	}
	$z= calcular (5,7);
	echo $z;
	
35
Función retornando un valor de una matriz

    function nombre(){
		return ['ana','pedro','maria','juan'];
	}
	$strnombre=nombre()[2];
	echo "El nombre es ".$strnombre;
	
El nombre es maria
Funciones con valores de retorno definidos

	function calculo1($x,$y){
		return $x*$y;
	}
	function calculo2($x,$y):int{
		return $x*$y;
	}
	function calculo3($x,$y):?int{
		if(is_null($x) || is_null($y)){
			return null;
		}else{
			return $x*$y;
		}
	}
	echo calculo1(3.5,2.8);
	echo "
"; echo calculo2(3.5,2.8); echo "
"; $z=calculo3(3.5,null); echo var_dump($z);
9.8
9
NULL
Función limitado el tipo de valor a retornar

    function potencia($x):int|float|false|null {
		if ($x==0){
			return false;
		}elseif(is_null($x)){
			return null;
		}else{
			return $x ** 2;
		}
	}
	echo "La potencia de 9^2 es ".potencia(9);
	echo "
Con valor NULL ",var_dump(potencia(null)); echo "
Con valor 0 ",var_dump(potencia(0)); echo "
Con valor 10 ",var_dump(potencia(10)); echo "
Con valor 1/3 ",var_dump(potencia(1/3));
La potencia de 9^2 es 81
Con valor NULL bool(false)
Con valor 0 bool(false)
Con valor 10 int(100)
Con valor 1/3 float(0.1111111111111111)
Ejercicio creando funciones anidadas

    // funcion para sumar, funcion para restar
	// funcion que dado un nombre de funcion llame e imprima al resultado
	function sumando($x, $y){
		return $x+$y;
	}
	function restando($x1, $y1){
		return $x1-$y1;
	}
	function hacer ($funcion, $x2, $y2){
		// solución simple utiliza el valor funcion para hacer la llamada
		// return $funcion($x2,$y2);
		// solución alternativa cubriendo más terminos y nombres q no estén previstos
		if ($funcion[0]=='s'){
			return sumando($x2,$y2);
		}elseif ($funcion[0]=='r'){
			return restando($x2,$y2);
		}else{
			return "eso no lo entendí";
		}
	}
	echo hacer ("sumando",67,16);
	
83
Funciones con parámetros predefinidos

    function sumaras($x,$y=3){
		return $x+$y;
	}
	echo "El resultado es: ".sumaras(5);
	
El resultado es: 8
Funciones con parámetros predefinidos con tipo de dato

    function sumar15(int $x,int $y=3){
		return $x+$y;
	}
	echo "El resultado es: ".sumar15(5.8);
	echo "
El resultado es: ".sumar15(1/3);
El resultado es: 8
El resultado es: 3
Funcion con parametros que contienen matrices de contenidos

    function sumar16($x, ...$valores){
		$resulta=$x;
		//repasar todo el contenido de la matriz con foreach
		foreach($valores as $matriz){
			$resulta=$resulta+$matriz;
		}
		return $resulta;
	}
	echo "El resultado es: ".sumar16(3,...[5,7,11]);
	
El resultado es: 26
Variables locales y globales

    $x=50;  // variable global
    function producto(){
		global $x;  // indicar que la variable global se utiliza en la función
		$y=20;   //variable local
		return $x*$y;
	}
	echo "Resultado x*y = ".producto();
	
Resultado x*y = 1000