http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » Web development » Getter, setter si evenimente PHP
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
Getter, setter si evenimente PHP
MesajTrimis: 19/07/2007 16:52 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




pentru folosirea setterilor si getterilor :
- se declara proprietatea private
- se declara o functie cu numele "get".nume_properietate
- se declara o functie cu numele "set".nume_properietate

pentru utilizarea evenimentelor
- se creaza o innstanta a clasei
- evenimentele sunt de forma "on".numefunctie = "nume_functie_utilizator"
- functia trebuie declarata private
- (!) valoarea returnata de eveniment este trimisa ca ultim parametru pentru functie

Citat:


<?php
/**
* @file generic.php
* @version 1.3
* @author Kaminsky Andrei < kaminsky.andrei@yahoo.com >
*/


class TException extends Exception {
public function __construct ( $errorCode, $errorDescription ) {
echo htmlspecialchars("<" . $errorCode . "> " . $errorDescription );
}
}

class generic {

# array cu evenimentele
private $e = array ( );


public function addEventListener ( $property, $value ) {
if ( strpos($property, "on") === FALSE ) throw new TException("addEventListener", "sintaxa eveniment incorecta : " . $property );
if ( is_array($value) ) {
$object = each ( $value );
$method = $object["value"];
$object = $object["key"];
if ( ! method_exists($object, $method) ) throw new TException("addEventListener", "metoda '". $method ."' nu exista ( instanta obiectului : '". $object ." )");
} else if ( ! function_exists($value) ) throw new TException("addEventListener", "functia '". $value ."' nu exista");
$this->e[$property] = $value;
}

//
// removeEventListener ?
//

public function eventExists ( $eventName ) {
return ( isset($this->e[$eventName] ) ) ? 1 : 0;
}

public function getEventListener( $eventName ) {
return $this->e[$eventName];
}

public function callEvent ( $eventName ) {

if ( $this->eventExists($eventName) ) {
if ( func_num_args() > 1 ) {
$args = func_get_args();
array_shift($args);
return call_user_func_array( $this->getEventListener($eventName), $args ) ;
} else return call_user_func( $this->getEventListener($eventName) );
}
}

public function __get ( $a ) {
$getter = "get" . $a;
if ( method_exists($this, $getter) ) return call_user_func( array(&$this,$getter) );
else throw new TException ( "__get", "proprietatea $a nu are getter");
}

public function __set ( $a, $v ) {
$setter = "set" . $a;
if ( strpos($a,"on") !== FALSE ) $this->addEventListener($a, $v);
elseif ( method_exists($this, $setter) ) return call_user_func( array(&$this,$setter), $v );
else throw new TException ( "__set", "proprietatea $a nu are setter");
}

public function __call ( $f, $a ) {
$eventResult = $this->callEvent("on".$f, $a);
$a[count($a)+1] = $eventResult;
return call_user_func_array( array( &$this,"_".$f ), $a ) ;
}

}

?>

Vezi profilul utilizatorului Trimite mesaj privat

Getter, setter si evenimente PHP
 Pagina de start a forumului http://alpha-thema-online.uv.ro » Web development
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.