Professional Documents
Culture Documents
Archivos
Fundamentos
OOP
Archivos en PHP
La idea bsica para trabajar con archivos en forma general es la
siguiente:
Realizar las
Abrir el fichero
operaciones
para lectura / Leer el fichero
necesarias en el
escritura
contenido
Escribir los
Cerrar el fichero
datos
fopen()
La funcin fopen() asigna a una variable un puntero (un descriptor) al fichero que quiera
abrir.
La variable puede utilizarse despus para hacer cualquier tipo de operacin.
Si el fichero que intenta abrir no existe o no puede utilizarse en ese momento, devuelve
false.
fopen ( nombre_fichero , modo_apertura)
En la plataforma Windows, asegrese de escapar cualquier barra invertida usada en la
ruta de fichero, o use barras hacia delante.
Modo Explicacin
Slo lectura ("r") Slo permite leer el fichero. Si intenta hacer
otra cosa le saldr un error.
En sistemas en los que se diferencia entre archivos binarios y de texto (Windows) el fichero debe
ser abierto con 'b' incluida en el parmetro modo de fopen().
Funciones para lectura de archivos:
feof( fichero_abierto ) Comprueba si el puntero a un archivo est al final
del archivo. Si el puntero al archivo pasado a la funcin no es vlido, se
podra dar un bucle infinito, ya que feof() falla para devolver TRUE.
fgets( longitud ) Obtiene una lnea desde el puntero a un fichero, La
lectura termina cuando se han ledo length - 1 bytes, o una nueva lnea (la
cual est incluida en el valor de retorno), o un EOF (lo que suceda
primero). Si no se especifica una longitud, se seguir leyendo desde el
flujo hasta que alcance el final de la lnea.
fwrite(fichero_abierto, string, legth)
Escribe en un fichero, apuntado por un descriptor, una cadena de caracteres. Es
imprescindible que el fichero est abierto en uno de los modos de escritura para que no
d error.
<?php
class MyDestructableClass { Doble
function __construct() { guion bajo
print "En el constructor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "Destruyendo " . $this->name . "\n";
}
}
interface b extends a
Notas: {
Una clase no puede implementar dos interfaces que public function baz(Baz $baz);
compartan nombres de funciones, puesto que esto }
causara ambigedad.
// sto s funcionar
class c implements b
Las interfaces se pueden extender al igual que las {
clases utilizando el operador extends. public function foo()
{
La clase que implemente una interfaz debe utilizar }
exactamente las mismas estructuras de mtodos que
fueron definidos en la interfaz. De no cumplir con esta public function baz(Baz $baz)
{
regla, se generar un error fatal.
}
}
?>
TOPICOS
AVANZADOS DE
POO EN PHP
El operador :: se utiliza para hacer referencia a funciones y
variables en las clases base o hacer referencia a funciones que se
encuentran en clases que an no tienen ninguna instancia.
Existen funciones de clase, pero no existen variables de clase.
De hecho, no existe objeto alguno en el momento de la invocacin.
Siendo as, una funcin de clase no puede utilizar ninguna variable
de objeto (pero puede utilizar variables locales y globales), y no
puede utilizar $this para nada.
<?php
class A {
function example() {
echo "I am the original function A::example().<br />\n";
}
}
class B extends A {
function example() {
echo "I am the redefined function B::example().<br />\n";
A::example();
}
}
// esto imprimir
// I am the redefined function B::example().<br />
// I am the original function A::example().<br />
$b->example();
?>
En vez de utilizar el nombre de la clase base en el
cdigo, debe utilizarse el nombre especial parent, que
hace referencia al nombre de la clase base tal como se
especifica en la declaracin extends de la clase. Al
hacer esto, se evita utilizar el nombre de la clase base
en ms de una ubicacin. Si la herencia se cambiara
durante la implementacin, el cambio puede llevarse a
cabo con facilidad simplemente cambiando la
declaracin extends de la clase.
Ejemplo: <?php
class A {
function example() {
echo "I am A::example() and provide basic functionality.<br />\n";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.<br />\n";
parent::example();
}
}
$b = new B;
if(property_exists($this, $nombreAtributo)){
$this->$nombreAtributo=$valor;
}
else
{
echo "No existe el atributo $nombreAtributo";
}
} public function __get($nombreAtributo){
if(property_exists($this, $nombreAtributo)){
return $this->$nombreAtributo;
}
else
{
echo "No existe el atributo $nombreAtributo";
}
}
serialize() devuelve un string conteniendo una representacin de
flujo de bytes de cualquier valor que pueda ser almacenado en
PHP.
unserialize() puede utilizar este string para recrear los valores
originales de la variable. Al utilizar serialize para guardar un objeto,
se guardarn todas las variables en el objeto. Las las funciones en
un objeto no sern guardadas, solamente el nombre de la clase.
Para poder utilizar unserialize() un objeto, la clase de ese objeto
necesita estar definida.
<?php
// classa.inc:
class A {
var $one = 1;
Ejemplo: function show_one() {
echo $this->one;
}
}
// page1.php:
include("classa.inc");
$a = new A;
$s = serialize($a);
// almacenar $s en algn lado donde page2.php pueda encontrarle.
$fp = fopen("store", "w");
fwrite($fp, $s);
fclose($fp);
// page2.php:
$s = implode("", @file("store"));
$a = unserialize($s);