无法增加静态类变量PHP

时间:2014-08-02 13:43:58

标签: php static factory-pattern

我创建了一个 接口类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();

?>

2 个答案:

答案 0 :(得分:2)

在大多数情况下,您在评论中提及@faintsignal时遗漏了$

您使用的是self::count++;,必须是self::$count++;

答案 1 :(得分:0)

也许问题出在self :: count?你需要在计数之前将$附加为变量,而不是方法。