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 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化