我的班级有问题。我写了一个课程项目。当我从这个类创建对象时,创建对象时没有问题,但是更多对象导致使用最后一个对象初始化所有以前的对象。
这是我创建对象的方式:
$a = new Item(1, 111, 123, "Laptop", "NOT HP ProBook 450 G1, E9Y47EA", "kom.", 1, 20500, 25000, 18, 12, 1);
所以,如果我将它打印到屏幕,一切都会好的,我会给出以下内容:
Item: | 00001 | Laptop___________________ NOT HP ProBook 450 G1, E9Y47EA____________________ | Units: kom. Availability: 0001 - 20.500,00 - 25.000,00 || G: 12 months
但是如果我创建另一个Item对象:
$b = new Item(2, 222, 456, "DESKTOP", "blah", "kom.", 2, 41000, 46000, 18, 12, 1);
当回应他们时,我得到:
Item: | 00002 | DESKTOP__________________ blah______________________________________________ | Units: kom. Availability: 0002 - 41.000,00 - 46.000,00 || G: 12 months
Item: | 00002 | DESKTOP__________________ blah______________________________________________ | Units: kom. Availability: 0002 - 41.000,00 - 46.000,00 || G: 12 months
正如您所看到的,看起来它们都是用相同的数据初始化的。
任何人,任何想法?
提前致谢!
require_once("item.interface.php");
require_once("../conf/numberFormat.config.php");
//class item
class Item implements iItem
{
private static $id; //int
private static $cipher; //int
private static $serialNumber; //big int
private static $name; //string
private static $description; //text
private static $unit; //measurment unit
private static $quantity; //int
private static $price; //double
private static $recomendedPrice; //double
private static $vat; //tiny int
private static $guarantee; //tiny int
private static $warehouse; //small int
//formatting
private static $decimalPoint;
private static $decimals;
private static $thousandSeparator;
public function Item($id, $cipher, $serialNumber, $name, $description, $unit, $quantity, $price, $recomendedPrice,
$vat, $guarantee, $warehouse)
{
self::$id = $id;
self::$cipher = $cipher;
self::$serialNumber = $serialNumber;
self::$name = $name;
self::$description = $description;
self::$unit = $unit;
self::$quantity = $quantity;
self::$price = $price;
self::$recomendedPrice = $recomendedPrice;
self::$vat = $vat;
self::$guarantee = $guarantee;
global $decimalPoint;
self::$decimalPoint = $decimalPoint;
global $decimals;
self::$decimals = $decimals;
global $thousandSeparator;
self::$thousandSeparator = $thousandSeparator;
self::$warehouse = $warehouse;
}
//set methods
public function setId($id)
{
self::$id = $id;
}
public function setCipher($cipher)
{
self::$cipher = $cipher;
}
public function setSerialNumber($serialNumber)
{
self::$serialNumber = $serialNumber;
}
public function setName($name)
{
self::$name = $name;
}
public function setDescription($description)
{
self::$description = $description;
}
public function setUnit($unit)
{
self::$unit = $unit;
}
public function setQuantity($quantity)
{
self::$quantity = $quantity;
}
public function setPrice($price)
{
self::$price = $price;
}
public function setRecomendedPrice($recomendedPrice)
{
self::$recomendedPrice = $recomendedPrice;
}
public function setVat($vat)
{
self::$vat = $vat;
}
public function setGuarantee($guarantee)
{
self::$guarantee = $guarantee;
}
public function setWarehouse($warehouse)
{
self::$warehouse = $warehouse;
}
//get methods
public function getId()
{
return self::$id;
}
public function getCipher()
{
return self::$cipher;
}
public function getSerialNumber()
{
return self::$serialNumber;
}
public function getName()
{
return self::$name;
}
public function getDescription()
{
return self::$description;
}
public function getUnit()
{
return self::$unit;
}
public function getQuantity()
{
return self::$quantity;
}
public function getPrice()
{
return self::$price;
}
public function getRecomendedPrice()
{
return self::$recomendedPrice;
}
public function getVat()
{
return self::$vat;
}
public function getGuarantee()
{
return self::$guarantee;
}
public function getWarehouse()
{
return self::$warehouse;
}
//other methods
public function toString()
{
global $ITEM;
return ucfirst($ITEM).": | " . sprintf("%05d", self::$id) . " | " . STR_PAD(self::$name, 25, "_") .
" <i>" . STR_PAD(self::$description, 50, "_") . "</i> | Units: ".self::$unit." Availability: " .
sprintf("%04d", self::$quantity) . " - " . self::formatPrice(self::$price) .
" - " . self::formatPrice(self::$recomendedPrice) . " || G: " . self::$guarantee .
" months";
}
public function toHTML()
{
return false;
}
private function formatPrice($input)
{
return number_format($input, self::$decimals, self::$decimalPoint, self::$thousandSeparator);
}
}
答案 0 :(得分:2)