我是一个需要帮助的新手。我正在尝试获取父值,但我在这方面失败了。非常感谢您的有益意见。提前谢谢。
abstract class mainClass
{
protected $cost=0;
public $set=false;
function setCost($cost){
$this->cost;
}
function getCost()
{
return $this->cost;
}
}
class supplierClass extends mainClass { }
class branchClass extends supplierClass
{
function setCost ($cost)
{
if( $cost==0)
{
parent::getCost();
$cost=$this->cost;
}
return$this->cost=$cost;
}
}
db循环通过供应商分支机构的买卖交易
while ($rs=$pdoUpdate->fetch(PDO::FETCH_OBJ))
{
//$rs->current='35' transferring from supplier 35
//$rs->cost=$50.00
//$rs->isTo='27' to branch 27
// several branches/suppliers transactions
if(!isset($supplier[$rs->current]->set))
{
$supplier[$rs->current]=new supplierClass();
$supplier[$rs->current]->set=true;
}
if(!isset($branch[$rs->isTo]->set))
{
$branch[$rs->isTo]=new branchClass();
$branch[$rs->isTo]->set=true;
}
$supplier[$rs->current]->setCost($rs->cost);
$branch[$rs->isTo]->setCost(0);
}
echo "branch price=". $branch[$rs->isTo]->getCost();
// branch price=0
但我希望它能拖欠供应商50美元的费用!
如果这完全不正确,很抱歉,但这对我来说是新的非常感谢。我希望我能向你学习。
最初
$supplier[$rs->current]和$branch[$rs->isTo]-这是两个不同的对象。
对于此示例,对象A和B($supplier[$rs->current][strong>和$branch[$rs->isTo][strong>)
此代码:$supplier[$rs->current]->setCost($rs->cost);-在对象A中设置成本。
此代码:$branch[$rs->isTo]->setCost(0)-在对象B中设置成本但是B不知道类A,因此,成本(对象B)=0
在第二个
代码:parent::getCost()-返回对象"B"的值(cost)。这不需要调用。
下一行,您将在不使用该方法的情况下使用对象"B"的属性(cost)。
你可以这样做:
function setCost ($cost)
{
if( $cost==0)
{
$this->cost = $this->getCost();
}
return $this->cost;
}
第三
对于问题的解决方案,您需要使用一个对象。
如何做到这一点——这取决于整体任务和资源。
作为一个例子,我可以提供这个解决方案:
class Cost
{
protected $cost = 0;
function setCost($cost){
$this->cost;
}
function getCost()
{
return $this->cost;
}
}
abstract class mainClass
{
public $set=false;
public $cost;
function __construct(Cost $cost)
{
$this->cost = $cost;
}
function getCost()
{
return $this->cost->getCost();
}
function setCost ($cost)
{
$this->cost->setCost($cost);
}
}
class supplierClass extends mainClass { }
class branchClass extends supplierClass
{
function setCost ($cost)
{
if($cost==0)
{
$cost=$this->cost->getCost();
}
$this->cost->setCost($cost);
}
}
或使用静态类
class Cost
{
protected static $cost = 0;
function static setCost($cost){
static::$cost;
}
function static getCost()
{
static::$cost;
}
}
abstract class mainClass
{
public $set=false;
function getCost()
{
return Cost::getCost();
}
function setCost ($cost)
{
Cost::setCost($cost);
}
}
class supplierClass extends mainClass { }
class branchClass extends supplierClass
{
function setCost ($cost)
{
if($cost==0)
{
$cost=Cost::getCost();
}
Cost::setCost($cost);
}
}