2. calculator

D:/test/cakephp/app/controllers/pages_controller.php を作成

<?php

class PagesController extends AppController {

    public $uses = null;

    public function display()
    {
        $result = '';
        if (!empty($this->data['Culc'])) {
            /* eval じゃない方がいいな
            $list = array('add' => '+', 'subtract' => '-', 'multiply' => '*', 'divide' => '/');
            foreach ($list as $k => $m) {
                if (isset($this->data['Culc'][$k])) {
                    $arg1 = intval($this->data['Culc']['arg1']);
                    $arg2 = intval($this->data['Culc']['arg2']);
                    eval(sprintf('$result = %s %s %s;', $arg1, $m, $arg2));
                    break;
                }
            }
            */

            $arg1 = intval($this->data['Culc']['arg1']);
            $arg2 = intval($this->data['Culc']['arg2']);
            switch (low($this->data['Culc'])) {
            case 'add'     : $result = arg1 + arg2; break;
            case 'subtract': $result = arg1 - arg2; break;
            case 'multiply': $result = arg1 * arg2; break;
            case 'divide'  : $result = arg1 / arg2; break;
            }
            
        }
        
        $this->set(compact('result'));
    }
}

D:/test/cakephp/app/views/pages/display.ctp を作成

<?php echo $form->create('Page', array('url'=>'/pages/display')); ?>
ARG1: <?php echo $form->text('Culc.arg1'); ?>
ARG2: <?php echo $form->text('Culc.arg2'); ?>

<?php echo $form->submit('add', array('name'=>'data[Culc][add]', 'div'=>false)); ?>
<?php echo $form->submit('subtract', array('name'=>'data[Culc][subtract]', 'div'=>false)); ?>
<?php echo $form->submit('multiply', array('name'=>'data[Culc][multiply]', 'div'=>false)); ?>
<?php echo $form->submit('divide', array('name'=>'data[Culc][divide]', 'div'=>false)); ?>

<br/>
<br/>
<br/>
<br/>
<?php if (isset($result)): ?>
      Result: <?php echo h($result); ?>
<?php endif; ?>

<?php echo $form->end(); ?>