Television[] tls={new Television("Miro"),
new ColorTelevision("MediaMarkt",5)};
for(Television t:tls){
System.out.println(t);
}
Categoría: Sin categoría
Clase ColorTelevision
package com.entertaiment;
public class ColorTelevision extends Television {
public ColorTelevision(String proveedor) {
super(proveedor);
}
public ColorTelevision(String proveedor, int color) {
super(proveedor);
colorTv=color;
}
private int colorTv;
public ColorTelevision(String marca, int volumen, String proveedor) {
super(marca, volumen, proveedor);
// TODO Auto-generated constructor stub
}
public String getMarca(){
return super.getMarca()+" TV!";
}
public String toString(){
return super.toString()+" | "+colorTv;
}
}
String vs StringBuffer vs StringBuilder
Cambio validación marca
public void setMarca(String marca) {
if (marca.equals("Sony") || marca.equals("Zenith") || marca.equals("Hitachi") || marca.equals("RCA")){
this.marca = marca; }
}
Test Referencias y debug
public class TestRefTest {
public static void main(String[] args) {
TestRef c1=new TestRef();
TestRef c2=new TestRef();
c1.numero=3;
c1.texto="c1";
c2.numero=30;
c2.texto="c2";
System.out.println(c1.toString());
System.out.println(c2.toString());
TestRef c3=c1;
System.out.println(c3.toString());
c3.texto="c3";
System.out.println(c1.toString());
System.out.println(c1==c3);
c3.cambiar2(c1);
System.out.println(c1.toString());
c3.texto="c2";
System.out.println(c1==c3);
//Destruir objetos
c1=null;
c3=null;
for(int i=0;i<10;i++){
System.out.println(i);
}
}
}
La clase:
public class TestRef {
public int numero;
public String texto;
public String toString(){
return numero+"|"+texto;
}
public void cambiar(TestRef c){
c=null;
}
public void cambiar2(TestRef c){
c.texto="CAMBIADO";
}
}
Examen CMS y CakePHP
Examen recuperación PHP acceso a datos
Autenticación cakePHP 5
Ponemos las siguientes funciones en el UsuariosController:
public function login() {
if ($this->request->is('post')) {
$passwordHasher = new BlowfishPasswordHasher();
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
}
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
public function logout() {
return $this->redirect($this->Auth->logout());
}
Model Callbacks
Son los siguientes:
- beforeFind()
- afterFind()
- beforeValidate()
- afterValidate()
- beforeSave()
- afterSave()
- beforeDelete()
- afterDelete()
Y pueden verse aquí:
Controller callbacks
Retrollamadas (“Callbacks”)
Los controladores de CakePHP vienen con retrollamas (callbacks) empotradas que puedes usar para insertar lógica justo antes o después de que las acciones del controlador sean llevadas a cabo.
beforeFilter()
Esta función se ejecuta antes de toda acción en el controlador. Es un lugar práctico para comprobar una sesión activa o inspeccionar los permisos del usuario.
beforeRender()
Llamada tras la lógica de acción del controlador, pero antes de que la vista es renderizada. Este callback no es utilizado a menudo, pero puedes necesitarlo si estás llamando a render() manualmente antes del final de una acción dada.
afterFilter()
Llamada tras toda acción del controlador.
afterRender()
Llamada tras haber sido renderizada una acción.