Clase 3 (color) - Universidad Nacional del Sur

Anuncio
© DCM-DCIC-UNS
1
© DCM-DCIC-UNS
1
© DCM-DCIC-UNS
1
Tecnologías de Programación Web
Dr. Diego C. Martínez
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
PHP
PHP
PHP es muy flexible en la utilización de las variables, cuyo contenido puede
ser interpretado como dato o parte de código. Debido a su tratamiento es que
todas deben empezar con $.
<?php
function foo()
{ echo "En foo()<br />"; }
function bar($arg = '')
{ echo "En bar(); argumento es '$arg'.<br />"; }
function echoit($string)
{ echo $string; }
$func = 'foo';
$func();
// Esto invoca a foo()
$func = 'bar';
$func('test');
// Esto invoca a
$func = 'echoit';
$func('test');
// Esto invoca a
?>
Karl|-|7G|-|2
$arch = "accidentes.dat";
$archivo = file($arch);
$cant = count($archivo);
echo “<table border=0>”;
Lenny|-|7F|-|4
Smithers|-|1A|-|0
Homero|-|7G|-|723
accidentes.dat
$indice=0;
while ($indice < $cant)
{
$reg = explode("|-|",$archivo[$indice]);
/* [0]nombre - [1]sector - [2]accidentes */
echo “<tr>”;
echo “<td> $reg[0] </td><td> $reg[1] </td><td> $reg[2] </td>;
echo “</tr>”;
$indice++;
}
echo “</table>”;
bar()
También es fácil escribir en un archivo...
echoit()
$fh=fopen("unarchivo.dat","a");
fwrite($fh,"esto se escribe");
fclose($fh);
PHP posee varias operaciones para manipular strings y arreglos. Muchas
paginas interesantes pueden hacerse con estos dos elementos solamente...
© Diego C. Martínez - DCIC-UNS
13
PHP
14
© Diego C. Martínez - DCIC-UNS
PHP - clases
Las clases se definen de manera similar a Java o C#.
PHP provee soporte para accesos a bases de datos...
<?php
$db = @mysql_connect($dbhost, $dbuser, $dbpass);
$query="SELECT * FROM empleados ORDER BY legajo";
$result=mysql_query($query);
if($result) {
$cant = mysql_num_rows($result);
for($j=0;$j<$cant;$j++){
$nombre=mysql_result($result,$j,'nombre');
$legajo=mysql_result($result,$j,'legajo');
}
}
class A
{
public $var = ‘un valor';
Existen muchas librerias gratuitas que pueden facilitar el acceso a una base de
datos, encapsulandola en un objeto con una interfaz específica.
El modelo de objetos de PHP es simple e implementa las nociones elementales de
la orientaciòn a objetos...
function funcion1()
//codigo
}
{
function funcion2()
//codigo
}
{
}
?>
Los objetos se crean con la
palabra reservada new y el
acceso a los miembros de los
objetos es por medio del
operador ->
Para referenciar el objeto
actual se utiliza la pseudovariable $this.
No se aplican las reglas de
ámbito tradicionales (como en
Pascal).
Debe indicarse explicitamente
que datos pueden accederse
globalmente:
global $dato1;
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
15
© Diego C. Martínez - DCIC-UNS
16
1
Tecnologías de Programación Web
Dr. Diego C. Martínez
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
PHP
PHP – objetos y asignaciones
<?php
class SimpleClass
{
// Declaración de atributo
public $var = 'Hola Mundo!';
// Declaración de método
public function displayVar(){
echo $this->var;
}
}
?>
Al asignar un objeto ya creado a una nueva variable, está ultima estará asociada
al objeto original. Así funciona también en el pasaje de parámetros. Esto es
semántica por referencia.
<?php
include(“simpleclass.php”);
$a = new SimpleClass();
$a->displayVar();
$a->var = “Chau Mundo”;
$a->displayVar();
Esto ha causado algo de confusión. En PHP4 una asignación del tipo
$objeto1 = $objeto2
Causa una clonación de objetos, puesto que la semántica de manipulación que
prevalece es la de por valor. Para obtener el efecto “referencia” debe hacerse
$objeto1 =& $objeto2
?>
holachau.php
En PHP5 la asignación “=“ tiene un efecto igual a la asignación de Java. La
asignación “=&” se interpreta como la definición de un alias para el mismo objeto
(NO es una referencia!)
simpleclass.php
En PHP4, solo las constantes se inicializaban en la declaración
© Diego C. Martínez - DCIC-UNS
17
PHP – objetos y asignaciones
PHP - herencia
La herencia se denota con la palabra reservada extends. PHP no admite herencia múltiple.
Parte de la confusión inicial…
Los métodos y miembros heredados pueden redefinirse, a menos que el ancestro incluya la
palabra reservada final. Una clase también puede ser final.
Es posible acceder a métodos de la clase padre por medio del prefijo parent::
<?php
$instance = new SimpleClass()
$assigned
= $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
Output en
el browser
18
© Diego C. Martínez - DCIC-UNS
<?php
class SimpleClass
{
// Declaración de atributo
public $var = ‘Hola Mundo!';
// Declaración de método
public function displayVar() {
echo $this->var;
}
}
?>
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>string(30) "$assigned will have this value"
}
<?php
class ExtendClass extends
SimpleClass
{
function displayVar(){
//redefinición
echo “Heredando…\n";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended->displayVar();
?>
PHP también permite clases abstractas e
interfaces.
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
19
© Diego C. Martínez - DCIC-UNS
20
1
Tecnologías de Programación Web
Dr. Diego C. Martínez
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
PHP - constructores
PHP - atributos
Los constructores deben tener el siguiente encabezado:
Los atributos pueden ser
públicos, privados o protegidos.
void __construct ( [mixed args [, ...]] )
Los atributos privados no se
heredan, por lo que un intento
de acceso a ellos queda
indefinido.
<?php
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
Los métodos pueden tener los
mismos modificadores de
visibilidad, con el mismo
significado.
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}
function
echo
echo
echo
}
printHello()
{
$this->public;
$this->protected;
$this->private;
}
$obj = new MyClass();
echo $obj->public; // Funciona OK!
echo $obj->protected;
// Error fatal
echo $obj->private;
// Error fatal
$obj->printHello();
// Muestra
todos
$obj = new BaseClass();
$obj = new SubClass();
?>
© Diego C. Martínez - DCIC-UNS
<?php
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
?>
21
PHP – accesos estáticos
© Diego C. Martínez - DCIC-UNS
22
PHP – comparaciones
El operador :: (Paamayim Nekudotayim) se utiliza para acceder entidades
estáticas, constantes y métodos redefinidos estáticos (static).
La comparación de objetos es algo mas complicada que en PHP4. Existen dos
operadores:
<?php
class MyClass {
const CONST_VALUE = 'A constant value';
}
==
Los objetos son iguales si poseen los mismos atributos y son instancias de la
misma clase.
echo MyClass::CONST_VALUE;
?>
===
Las variables de objeto son idénticas si y sólo si refieren a la misma instancia de la
misma clase.
Las palabras self y parent, se usan para poder acceder a miembros o métodos
desde dentro de una definición de clase
<?php
class OtherClass extends MyClass {
public static $my_static = 'static var';
public static function doubleColon() {
echo parent::CONST_VALUE . "\n";
echo self::$my_static . "\n";
}
}
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
23
© Diego C. Martínez - DCIC-UNS
24
1
Descargar