我创建了一个 接口类SellableItems ,这是由两个产品tv和tennisBall实现的 。 两者都包含 静态变量$ count ,我需要执行后递增和递减。 但是, StoreFactory类 负责使用 静态工厂成员函数初始化对象。
问题:
当我测试它时针对下面给出的代码我收到语法错误: **
解析错误:语法错误,意外'++'(T_INC)in D:\ xammp \ htdocs \ practice \ oop practice \ inheritence \ FactoryPattern.php 在第36行
**
<?php
interface SellableItems{
public function addItem();
public function removeItem();
}
class tennisBall implements SellableItems{
public static $count=0;
public function addItem(){
return self::$count++;
}
public function removeItem(){
if(self::count>0){
return self::count--;
}
else {
echo "<br/>Sorry, Stock empty";
}
}
public function ShowData(){
echo "<br/>There are ".self::$count." ".__CLASS__;
}
}
class tv implements SellableItems{
static $count=0;
public function addItem(){
return self::count++;
}
public function removeItem(){
if(self::count>0){
return self::count--;
}
else {
echo "<br/>Sorry, Stock empty";
}
}
public function ShowData(){
echo "<br/>There are ".self::$count." ".__CLASS__;
}
}
class StoreFactory{
public static function factory($item){
switch($item){
case "tennisBall":
$product=new tennisBall();
break;
case "tv":
$product=new tv();
break;
default:
die("<br/>WRONG Choice OF PRODUCT: {$item}");
}
if($product instanceof SellableItems){
return $product;
}
else{
die("</br>Sory cannot create particular Product");
}
}
}
$Instance=StoreFactory::factory("tennisBall");
$Instance->addItem();
$Instance->addItem();
$Instance->ShowData();
?>
答案 0 :(得分:2)
在大多数情况下,您在评论中提及@faintsignal时遗漏了$
。
您使用的是self::count++;
,必须是self::$count++;
答案 1 :(得分:0)
也许问题出在self :: count?你需要在计数之前将$附加为变量,而不是方法。