<html>
//index.php
<form action="" method="post">
<label for="item">Item: </label>
<select name="item">
<option value="fruit tea">Fruit Tea</option>
<option value="strawberries">Strawberries</option>
<option value="coffee">Coffee</option>
</select><br />
<label for="qty">Qty: </label>
<input type="text" name="qty" />
<input type="submit" name="submit" value="submit" />
</form>
<?php
@$qty = $_POST['qty'];
@$item = $_POST['item'];
$co = new Checkout( $pricing_rules );
print $co->scan( $item ). ' has been scanned '.$co->increment(). ' times';
?>
</html>
<?php
/**
* Description of Checkout
*
* @author cookie
*/
class Checkout {
private $pricing_rules = array();
private $pcode;
public $item;
public function __construct( array $pricing_rules ) {
$this->pricing_rules = $pricing_rules;
}
public function scan( $item ) {
$this->increment();
return $item;
}
private function prod_code( $pcode ) {
$this->pcode = $pcode;
}
public function increment() {
static $count = 0;
$count++;
return $count;
}
public function total() {
}
}
?>
它应该做什么...
如果我点击提交按钮四次,说从下拉列表中选择草莓。该脚本应打印到屏幕上:
草莓已被扫描 1 次
草莓已被扫描 2 次
草莓已被扫描 3 次
草莓已被扫描 4 次
ETC....
随着$count
增量的跟踪。
它实际上做了什么:
它打印:
不管我按提交多少次,草莓都被扫描了 2 次。并停在那里。我在这里遗漏了一些东西。
我看到它在做什么 - 在页面加载时,通过这一行对 increment() 进行了两次调用:
print $co->scan( $item ). ' has been scanned '.$co->increment(). ' times';
我试过了:
if($_SERVER['REQUEST_METHOD'] == 'POST') $co->increment();
此外,这会将 $count 增加一,但停在那里。我在这方面有点挣扎..
帮助