Quote Originariamente inviata da Alhazred Visualizza il messaggio
Dreamweaver...
Quello è buono solo per generare montagne di codice inutile pur di far fare la paginetta html a chiunque.

Non ho mai sentito dell'esistenza di ciò che cerchi, non essendomene mai interessato non te lo do per certo, ma al 99% te le devi studiare da solo dove vanno le varie chiamate (che poi basta vedere nel codice le varie funzioni chiamate e ritrovarle nei vari file).
Condivido ma non su tutto. Dreamweaver fa abbastanza cagare però se studi un modello di questo tipo qui sotto una funzione di questo tipo (matlab per esempio ce l'ha) può essere davvero utile.


Codice PHP:
<?php
// start previous
abstract class Expression {
    private static 
$keycount=0;
    private 
$key;
    abstract function 
interpretContext $context );

    function 
getKey() {
        if ( ! isset( 
$this->key ) ) {
            
self::$keycount++;
            
$this->key=self::$keycount;
        }
        return 
$this->key;
    }
}

class 
LiteralExpression extends Expression {
    private 
$value;

    function 
__construct$value ) {
        
$this->value $value;
    }

    function 
interpretContext $context ) {
        
$context->replace$this$this->value );
    }
}

class 
Context {
    private 
$expressionstore = array();
    function 
replaceExpression $exp$value ) {
        
$this->expressionstore[$exp->getKey()] = $value;
    }

    function 
lookupExpression $exp ) {
        return 
$this->expressionstore[$exp->getKey()];
    }
}

class 
VariableExpression extends Expression {
    private 
$name;
    private 
$val;

    function 
__construct$name$val=null ) {
        
$this->name $name;
        
$this->val $val;
    }

    function 
interpretContext $context ) {
        if ( ! 
is_null$this->val ) ) {
            
$context->replace$this$this->val );
            
$this->val null;
        }
    }

    function 
setValue$value ) {
        
$this->val $value;
    }

    function 
getKey() {
        return 
$this->name;
    }
}

// end previous


abstract class OperatorExpression extends Expression {
    protected 
$l_op;
    protected 
$r_op;

    function 
__constructExpression $l_opExpression $r_op ) {
        
$this->l_op $l_op;
        
$this->r_op $r_op;
    }

    function 
interpretContext $context ) {
        
$this->l_op->interpret$context );
        
$this->r_op->interpret$context );
        
$result_l $context->lookup$this->l_op );
        
$result_r $context->lookup$this->r_op  );
        
$this->doInterpret$context$result_l$result_r );
    }

    protected abstract function 
doInterpretContext $context
                                             
$result_l
                                             
$result_r );
}


class 
EqualsExpression extends OperatorExpression {
    protected function 
doInterpretContext $context
                                        
$result_l$result_r ) {
            
$context->replace$this$result_l == $result_r );
    }
}

class 
BooleanOrExpression extends OperatorExpression {
    protected function 
doInterpretContext $context
                                        
$result_l$result_r ) {
        
$context->replace$this$result_l || $result_r );
    }
}

class 
BooleanAndExpression extends OperatorExpression {
    protected function 
doInterpretContext $context
                                        
$result_l$result_r ) {
        
$context->replace$this$result_l && $result_r );
    }
}

$context = new Context();
$input = new VariableExpression'input' );
$statement = new BooleanOrExpression
    new 
EqualsExpression$input, new LiteralExpression'four' ) ),
    new 
EqualsExpression$input, new LiteralExpression'4' ) ) 
);

foreach ( array( 
"four""4""52" ) as $val ) {
    
$input->setValue$val ); 
    print 
"$val:\n";
    
$statement->interpret$context );
    if ( 
$context->lookup$statement ) ) {
        print 
"top marks\n\n";
    } else {
        print 
"dunce hat on\n\n";
    }
}

?>

Sono d'accordo con te, se ne può fare a meno ma in casi come questo si risparmiano 5 minuti, almeno per me che non sono abituato a lavorare con classi così complesse.