donglian5309 2015-12-30 07:42
浏览 17
已采纳

如何在类之间操纵私有变量

I'm trying to build a stock inventory and cash register simulation, in the code I have 2 class, first is Inventory and second is Cash. Both have their own properties and method.

When I'm trying to sell item the _balance property is giving Error undefined _balance and the _balance is still 0.

How should I fix it? Just in case this question have been already asked please just give the link don't mark as duplicate. I just can't find it.

<?php
        class Inventory {
            public $_name;
            public $_price;
            public $_stock;
            public function _addStock($item,$itemIn)
            {
                $this->_stock += $itemIn;
            }
        };

        $item2 = new Inventory;
        $item2->_name = "item2";
        $item2->_price = 5000;
        $item2->_addStock('item2',100);
        $item1 = new Inventory;
        $item1->_name = "item1";
        $item1->_price = 1000;
        $item1->_addStock('item1',100);

        class Cash {
            private $_balance = 0;
            public function _display(Inventory $_name)
            {
                echo $_name->_price;
            }
            public function getBalance()
            {
                echo $this->_balance;
            }
            public function sell(Inventory $_name, $amount)
            {   
                return $_name->_stock -= $amount;

                return $_balance += $_name->_price*$amount;// Error $_balance undifined
            }    
        };
        $cash = new Cash;
        print_r($item2);
        echo "<br/>";
        print_r($item1);
        echo " <br/>Balance :<br/>";
        $cash->getBalance();
        echo "<br/>item1 price :<br/>";
        $cash->_display($item1);
        echo "<br/>item2 price :<br/>";
        $cash->_display($item2);
        echo "<br/>item1 sold 12 pcs<br/>";
        $cash->sell($item1,12);

        $cash->sell($item2,12);
        echo "<br/>item2 sold 12 pcs <br/>";

        echo "<br/> current stock :<br/>";
        print_r($item2);
        echo "<br/>";
        print_r($item1);

        echo "<br/> current balance :<br/>";
        $cash->getBalance();
        ?>
  • 写回答

1条回答 默认 最新

  • dongxiongshi9952 2015-12-30 07:48
    关注

    In the Cash class, sell method you have two returns.

    The error you get is because you forgot about $this, so php is right to complain, the variable $balance has not been defined.

    public function sell(Inventory $_name, $amount){   
    
            $_name->_stock -= $amount;
            return $this->_balance += $_name->_price*$amount;// this clears the error
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成
  • ¥15 HC32L176调试了一个通过TIMER5+DMA驱动WS2812B
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!